2016-02-19 54 views
5

Abbiamo un contenitore finestra mobile in esecuzione su un host ec2. All'interno di quel contenitore docker eseguiamo alcuni comandi cli aws. Non abbiamo definito alcuna credenziale AWS all'interno del contenitore. Ciò implica che il contenitore erediti il ​​profilo di istanza dell'ec2 dell'host.I contenitori Docker sembrano "ereditare" il profilo di istanza dell'ec2 dell'host. Come?

La mia ipotesi è vera? In tal caso, in che modo esattamente il contenitore eredita le credenziali del profilo di istanza? In secondo luogo (possibilmente correlato) che cosa fa esattamente il cli aws per ottenere le credenziali del profilo di istanza? Effettua una chiamata all'endpoint dei metadati (169.254.169.254)? Ad esempio, se le credenziali vengono rilevate dalle variabili di ambiente, le credenziali sono codificate e possono essere visualizzate, ma dove risiedono effettivamente le credenziali per un profilo di istanza?

risposta

4

Ciò è corretto, le credenziali sono del computer host. Li ottiene dall'endpoint dei metadati, come sospettavi.

Una soluzione/soluzione per fornire un accesso più stretto è ec2metadataproxy. Non l'ho ancora usato.

L'accesso del gruppo di sicurezza si basa anche sul contenitore host, sfortunatamente.

+0

Grazie tedder42. Come vengono ottenute le credenziali? Esiste un comando che posso eseguire su ec2 per ottenere l'accesso, il token segreto + dall'endpoint dei metadati? – n00b

+1

@ n00b sì, puoi 'curl http: // 169.254.169.254/2014-11-05/meta-data/iam/security-credentials /'. Ti consigliamo di utilizzare un API/SDK per gestirlo normalmente, poiché ruotano ogni poche ore. – tedder42

+0

Grazie a tedder42. Il comando che mi hai fornito ha restituito il nome del profilo di istanza. Ho quindi dovuto aggiungere il nome del profilo di istanza all'URL che mi hai dato. ad esempio 'curl http://169.254.169.254/2014-11-05/meta-data/iam/security-credentials/ ' – n00b