Come gestire in modo sicuro le chiavi private per le coppie di chiavi gestite da EC2?


8

Per avviare un'istanza EC2 è necessaria una coppia di chiavi. Come gestite la situazione in cui un ingegnere con accesso alla chiave privata per quella coppia di chiavi lascia l'azienda? Funzionerebbe per aggiungere un singolo accesso ssh e rimuovere l'autorizzazione della coppia di chiavi iniziale, immediatamente dopo l'avvio dell'istanza?


1
ridistribuire nuove istanze delle istanze EC2 e rimuovere quelle vecchie con la vecchia coppia di chiavi?
sdolgy,

Risposte:


10

Quando un dipendente o un appaltatore lascia l'azienda, è necessario disabilitare qualsiasi accesso privilegiato alle risorse aziendali. Ciò include (ma non si limita a) le tue preoccupazioni chiave ssh:

  1. Rimuovere la chiave ssh pubblica da tutti i file authorized_keys su tutte le istanze in esecuzione. Sostituiscili con una chiave ssh pubblica di nuova generazione che è nota solo alle persone che dovrebbero avere accesso.

  2. Rimuovere tutte le voci di coppia di chiavi in ​​EC2 che erano conosciute dai defunti in modo che non possano essere avviate nuove istanze con quelle coppie di chiavi. Sostituiscili con nuove voci di coppia di chiavi, forse con gli stessi nomi se il tuo

Anche il metodo alternativo che proponi è buono ed è quello che uso: Disabilita la chiave ssh iniziale e aggiungi singole chiavi ssh pubbliche per ogni sviluppatore in modo che possano accedere con la loro normale chiave ssh privata. Questo può essere fatto per l'accesso a un account condiviso o con ogni sviluppatore che ottiene il proprio account utente individuale (il mio preferito).

Dopo che un dipendente se ne va, non solo dovrai ripulire i server in esecuzione, ma anche il processo che aggiunge le chiavi ssh ai nuovi server. E, quando un dipendente si unisce, dovrai fare il contrario: aggiungi le chiavi ssh ai server in esecuzione e aggiorna il nuovo processo del server.

Questo può essere un po 'più di lavoro per mantenere molte chiavi ssh su molti server, ma è qui che entra in gioco l'automazione.


3

Non si dovrebbe mai dare questa chiave privata agli utenti finali. Agli utenti finali dovrebbe essere fornito il proprio mezzo di accesso, come l'autenticazione con chiave pubblica (usando la propria chiave privata PROPRIA protetta da password), seguita dall'autorizzazione LDAP.

La distribuzione della chiave privata fornita da ec2 rende impossibile il deprovisioning degli utenti. Questo è esattamente il motivo per cui l'uso di credenziali condivise è completamente vietato da tutte le normative di sicurezza e conformità.

Quando si consente l'uso di credenziali condivise:

  • È impossibile utilizzare i registri per sapere chi è / era realmente su un host
  • È impossibile effettuare il provisioning di un utente senza effettuare il provisioning di tutti gli utenti (incluso l'accesso di emergenza, che è ciò a cui la chiave privata EC2 è realmente destinata)

2

Consulta la documentazione di Amazon sulla rotazione delle credenziali di accesso .

Usa qualcosa come pupazzo o solido script ssh per correre e sostituire tutte le istanze della vecchia chiave se non vuoi rilanciare tutto ... o semplicemente rilanciare tutto.


Penso che non parli delle chiavi dell'account che puoi ruotare, ma piuttosto della chiave privata .pem per accedere a ssh.

2
L'accesso ssh è controllato dalle voci ~ / .authorized_keys. Questi sono inizialmente seminati dal processo di lancio di EC2, quindi la necessità di utilizzare le marionette o gli script per sostituirli o riavviare.
Jeff Ferland,

Tutto a posto. Non lo sapevo :).

Sì, è giusto. Per gli account normali avrei potuto usare sshd LDAP e quindi essere in grado di disattivare un utente una volta da LDAP. Ma le chiavi di avvio sono gestite da AWS. Quindi penso che la soluzione fantoccio / chef di rimuovere una chiave di avvio dal file di file_auto autorizzati di ciascun server sia la strada da percorrere. Penso che vorrei anche che ogni amministratore avesse la propria chiave di avvio AWS, quindi rimuovo solo l'accesso di un singolo utente alla volta.
Jeff,

@Jeff Se SSH è configurato per fare riferimento a LDAP e ignorare le chiavi autorizzate, la chiave di avvio è importante solo per controllare l'avvio e la terminazione dell'istanza. Dipende da come costruisci la tua immagine.
Jeff Ferland,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.