Administrar credenciales de seguridad de IAM para múltiples contenedores acoplables

11

Dentro del entorno EC2 simple, administrar el acceso a otros recursos de AWS es bastante sencillo con las funciones y credenciales de IAM (obtenidas automáticamente de los metadatos de la instancia). Aún más fácil con CloudFormation, donde puede crear roles sobre la marcha cuando asigna un rol de aplicación particular a una instancia.

Si quisiera migrar a Docker y tener un tipo de implementación M-to-N, donde tengo M máquinas y N aplicaciones ejecutándose en él, ¿cómo debo restringir el acceso a los recursos de AWS por aplicación? Cualquier persona en el host puede acceder a los metadatos de la instancia, por lo que todas las aplicaciones podrán ver / modificar los datos de todas las demás aplicaciones en el mismo entorno de implementación.

¿Cuáles son las mejores prácticas para suministrar credenciales de seguridad a los contenedores de aplicaciones que se ejecutan en dicho entorno?

Alex B
fuente

Respuestas:

5

Existe este proyecto: https://github.com/dump247/docker-ec2-metadata

Actúa como un proxy para el punto final de metadatos de la instancia, devolviendo un rol específico al contenedor. No lo he usado antes, pero parece resolver el caso de uso que está describiendo.

pbitty
fuente
1

Aplicar los privilegios mínimos usando Roles y Grupos de seguridad (aunque no los haya mencionado) en AWS con EC2 son las dos mejores prácticas para proporcionar un entorno seguro para sus aplicaciones de alojamiento, especialmente cuando se usa CloudFormation. Sin embargo, cuando se superpone un entorno Docker de múltiples inquilinos, las cosas comienzan a desmoronarse.

La mejor respuesta en este momento para continuar obteniendo el beneficio de los Roles mientras se aplica el menor privilegio es no usar un enfoque multiinquilino. Básicamente, use un mapeo uno a uno entre la instancia EC2 y la aplicación, pero aún puede usar clústeres / ASG. Docker sigue siendo una herramienta extremadamente útil y poderosa que puede usar para administrar e implementar sus aplicaciones, pero por ahora los roles se aplican en la instancia EC2 y no en el contenedor. Eso significa usar máquinas virtuales separadas para cada aplicación por ahora.

Si ser multiinquilino es más importante que los Roles, entonces la respuesta es no usar Roles y distribuir las credenciales de AWS a sus aplicaciones utilizando algún otro método.

Desafortunadamente, ninguna de estas soluciones es muy deseable y espero que AWS aborde este problema específico en el futuro debido principalmente a la creciente popularidad de los contenedores.

JaredHatfield
fuente