Bootstrapping an EC2 Spot Instance

10

Estoy considerando utilizar las Instancias puntuales de EC2 de manera automatizada (es decir, crear una secuencia de comandos que solicitará las Instancias puntuales de EC2 que se ejecutarán sin supervisión).

Para este caso de uso específico, me complace bloquear el grupo de seguridad para que no se permitan conexiones entrantes en las instancias puntuales.

La única salida del script es comunicarse con un servidor RDS.

Estoy buscando una solución que me permita iniciar una solicitud de una instancia puntual y cargar el software requerido, incluido el acceso a una base de datos que vive en el RDS.

Mi principal preocupación es cómo entregar el código de manera segura (incluidas las Credenciales de DB).

¿Cuáles son los problemas de seguridad que deben tenerse en cuenta y qué método proporcionará el menor riesgo?

Mis pensamientos hasta ahora:

  • No tener conexiones entrantes debería mitigar las amenazas comunes

  • Pasar datos a datos de usuario EC2 sigue siendo un riesgo (almacenar contraseñas, o el acceso al código no me parece una buena idea)

  • En los datos de usuario, proporcione detalles privados a través del enlace S3 que está configurado para caducan (es difícil hacerlo con instancias puntuales ya que no sé cuándo Se creará la instancia)

  • Cree un script para limitar el acceso a los datos de usuario

  • ¿Debo pensar en una forma más elaborada para recuperar datos de la instancia local recién creada, y luego inicie sesión en dicha instancia y envíe datos a través de ssh?

pregunta Drew Khoury 01.08.2013 - 09:31
fuente

2 respuestas

1

No lo he probado, pero debería funcionar.

Utilice roles IAM

  

Diseñamos roles IAM para que sus aplicaciones puedan hacer API de forma segura   solicitudes de sus instancias, sin necesidad de administrar el   Credenciales de seguridad que utilizan las aplicaciones. En lugar de crear   y distribuyendo sus credenciales de AWS, puede delegar permisos a   realizar solicitudes de API utilizando roles IAM ...

  1. Crea un cubo privado de S3.
  2. Almacene sus credenciales en el contenedor privado de S3.
  3. Cree un rol IAM y asígnele una política que le permita acceder al grupo privado de S3.
  4. Cuando cree su instancia de Spot, aplique el rol IAM.
  5. Utilizando los datos de usuario de ec2, use un script de arranque.
    • llame a curl enlace para acceder a las credenciales de seguridad s3.
    • Use las credenciales de s3 para descargar las credenciales de su base de datos del cubo s3 creado en el # 1.
  6. Ahora ha entregado sus credenciales de forma segura a su instancia.
respondido por el Jonathan 29.01.2015 - 19:35
fuente
0

Puede almacenar de forma segura las credenciales de base de datos encriptadas en los datos del usuario utilizando KMS para cifrar y descifrar las credenciales.

Configuración :

  1. Cree un rol de IAM con permisos para permitir kms:Decrypt en el recurso * (ejemplo a continuación).
  2. Cifre (usando otras credenciales de AWS) las credenciales de su base de datos llamando a encrypt . / li>
  3. Coloque las credenciales de la base de datos cifrada en los datos de usuario de la instancia puntual en la configuración de inicio.
  4. Asocie su instancia de Spot con el rol de IAM creado en 1 arriba en la configuración de lanzamiento.

Inicio de instancia de Spot :

  1. Lea las credenciales de la base de datos cifrada de los datos del usuario
  2. Descifre las credenciales de la base de datos mediante una llamada a descifrar

Tenga en cuenta que todos los SDK intentarán acceder automáticamente a KMS con credenciales de rol de instancia a menos que configure credenciales específicas.

Ejemplo de documento de política de IAM ya que no puedo colocar el código en medio de una lista numerada:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "Stmt1429854706000",
      "Effect": "Allow",
      "Action": [
        "kms:Decrypt"
      ],
      "Resource": [
        "*"
      ]
    }
  ]
} 
    
respondido por el Raniz 06.07.2015 - 08:59
fuente

Lea otras preguntas en las etiquetas