Almacenar credenciales de AWS de forma segura en una máquina personal

10

¿Cómo puedo almacenar de forma segura las credenciales de AWS en máquinas personales?

En detalle:

Todos los miembros de nuestro equipo requieren credenciales de seguridad de AWS para realizar tareas administrativas (las credenciales están separadas por roles). Estas credenciales generalmente se almacenan en texto sin formato en algunos archivos de configuración en el disco. Creo que esto es muy inseguro, especialmente teniendo en cuenta que las credenciales se distribuyen entre los miembros del equipo, terminan en una copia de seguridad, etc.

Preferiría almacenar estas credenciales en forma cifrada (similar a las claves ssh, por ejemplo). ¿Hay alguna forma automatizada de hacerlo? ¿O necesito hackear un script bash que usa, por ejemplo, openssl para cifrar datos?

Hay mucha información en la web sobre cómo proteger las credenciales en una instancia EC2. Incluso existe esta funcionalidad de roles de Amazon IAM , pero también se aplica solo a EC2.

Arnuschky
fuente
1
Esta es una gran pregunta y estoy muy interesado en las respuestas.
ceejayoz

Respuestas:

4

Puede valer la pena investigar https://github.com/realestate-com-au/credulous . De la descripción del proyecto:

crédulo es una herramienta de línea de comandos que administra las credenciales de AWS (IAM) de forma segura . El objetivo es cifrar las credenciales utilizando la clave SSH pública de un usuario para que solo el usuario que tenga la clave SSH privada correspondiente pueda verlas y usarlas. Además, la herramienta también permitirá al usuario rotar fácilmente sus credenciales actuales sin interrumpir el flujo de trabajo actual del usuario.

Hay un artículo de blog introductorio en http://techblog.realestate.com.au/protecting-your-aws-keys-with-credulous/ .

mvermaes
fuente
Impresionante, esto es exactamente lo que estaba buscando (y lo que no pude encontrar por mi cuenta ...)
arnuschky
Ver también github.com/99designs/aws-vault
Yves M.
4

Gran pregunta, y dependiendo de la persona que responda, probablemente tenga un par de rutas por recorrer. Te daré un ejemplo de lo que usamos:

  1. Cree roles de IAM basados ​​en el usuario (desarrollador, infraestructura, seguridad, auditoría, etc.): personalice la política para permitir o denegar acciones específicas basadas en el acceso del usuario.

Ejemplo: permitir todas las acciones ec2 para el administrador. O solo permita el acceso basado en una etiqueta o subred para un desarrollador, etc.

  1. Inicie la (s) instancia (s) ec2 de Linux utilizando roles específicos de IAM. Inicie una instancia para cada rol o usuario específico (ajuste el tamaño / tipo de instancia según la necesidad, el presupuesto, etc.)

  2. Configure el grupo de seguridad para cada instancia para permitir solo subredes específicas o IP individuales, de modo que pueda bloquear el ingreso de tráfico a SSH.

  3. Establezca un usuario / contraseña personalizado para SSH o únase al dominio.

  4. Haga que cada usuario inicie sesión o SSH en la instancia de Linux asignada a su rol o acceso de usuario.

  5. Las claves API y el acceso ahora se heredan de la función IAM de la instancia, lo que hace que la necesidad de almacenar claves de usuario sea irrelevante. Solo asegúrese de bloquear el grupo de seguridad, solo otorgue acceso a usuarios específicos en el cuadro de Linux. El usuario debe poder escribir scripts usando la API de AWS / usar la funcionalidad de las herramientas de la API de manera normal.

Hemos estado utilizando este método durante aproximadamente un año, con ajustes de seguridad adicionales, como el tiempo de acceso arrendado, comprado en AWS HSM y funciona muy bien.

Espero que esto te ayude a ti oa alguien más.

Scott Moore
fuente
Buena idea, gracias! No pensé en eso. No hay opción para nosotros en este momento debido a los costos involucrados, pero lo tendré en cuenta.
arnuschky