Especificación de información confidencial mediante secretos de Secrets Manager - Amazon Elastic Container Service

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Especificación de información confidencial mediante secretos de Secrets Manager

Amazon ECS le permite introducir datos confidenciales en sus contenedores almacenándolos en AWS Secrets Manager secreto y, a continuación, haciendo referencia a ellos en su definición de contenedor. Para obtener más información, consulte Transferencia de datos confidenciales a un contenedor.

El siguiente tutorial muestra cómo crear un secreto de Secrets Manager, hacer referencia al secreto en una definición de tareas de Amazon ECS y, luego, comprobar que funciona consultando la variable de entorno dentro de un contenedor que muestra el contenido del secreto.

Requisitos previos

En este tutorial se supone que los siguientes requisitos previos se han completado:

  • Se han completado los pasos que se indican en Configuración para utilizar Amazon ECS.

  • Su AWS usuario tiene los permisos de IAM necesarios para crear los recursos de Secrets Manager y Amazon ECS descritos.

Paso 1: Crear un secreto de Secrets Manager

Puede utilizar la consola de Secrets Manager para crear un secreto con su información confidencial. En este tutorial se creará un secreto básico para almacenar un nombre de usuario y una contraseña para referencia futura en un contenedor. Para obtener más información, consulte Creación de un secreto básico en la Guía del usuario de AWS Secrets Manager .

Los pares clave/valor que se almacenarán en este secreto (key/value pairs to be stored in this secret) son el valor de la variable de entorno en el contenedor al final del tutorial.

Guarde el Secret ARN (ARN del secreto) para hacer referencia en su política de IAM de ejecución de tareas y la definición de tarea en pasos posteriores.

Paso 2: Actualizar el rol de IAM de ejecución de tareas

Para que Amazon ECS recupere la información confidencial del secreto de Secrets Manager, debe contar con el rol de ejecución de tareas de Amazon ECS y hacer referencia a él en la definición de tareas. Esto permite que el agente de contenedor extraiga los recursos necesarios de Secrets Manager. Si aún no ha creado el rol de IAM de ejecución de tareas, consulte Rol de IAM de ejecución de tareas de Amazon ECS.

En los siguientes pasos, se da por hecho que ya creó y configuró el rol de IAM de ejecución de tareas correctamente.

Para actualizar el rol de IAM de ejecución de tareas

Utilice la consola de IAM para actualizar el rol de ejecución de tareas con los permisos requeridos.

  1. Abra la consola de IAM en https://console.aws.amazon.com/iam/.

  2. Seleccione Roles en el panel de navegación.

  3. En la lista de roles, busque ecsTaskExecutionRole y selecciónelo.

  4. Elija Permissions (Permisos), Add inline policy (Añadir política en línea).

  5. Elija la pestaña JSON y especifique el siguiente texto JSON, asegurándose de especificar el ARN completo del secreto de Secrets Manager que creó en el paso 1.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue" ], "Resource": [ "arn:aws:secretsmanager:region:aws_account_id:secret:username_value" ] } ] }
  6. Elija Revisar política. En Name (Nombre) especifique ECSSecretsTutorial y, a continuación, seleccione Create policy (Crear política).

Paso 3: Crear una definición de tareas de Amazon ECS

Puede utilizar la consola de Amazon ECS para crear una definición de tareas que haga referencia a un secreto de Secrets Manager.

Para crear una definición de tarea que especifique un secreto

Utilice la consola de IAM para actualizar el rol de ejecución de tareas con los permisos requeridos.

  1. Abra la consola en https://console.aws.amazon.com/ecs/v2.

  2. En el panel de navegación, elija Task Definitions (Definiciones de tareas).

  3. Elija Create new task definition (Crear nueva definición de tarea) y Create new task definition with JSON (Crear nueva definición de tarea con JSON).

  4. En el cuadro del editor JSON, ingrese el siguiente texto JSON de definición de tareas, asegurándose de especificar el ARN completo del secreto de Secrets Manager que creó en el paso 1 y el rol de IAM de ejecución de tareas que actualizó en el paso 2. Seleccione Guardar.

  5. { "executionRoleArn": "arn:aws:iam::aws_account_id:role/ecsTaskExecutionRole", "containerDefinitions": [ { "entryPoint": [ "sh", "-c" ], "portMappings": [ { "hostPort": 80, "protocol": "tcp", "containerPort": 80 } ], "command": [ "/bin/sh -c \"echo '<html> <head> <title>Amazon ECS Sample App</title> <style>body {margin-top: 40px; background-color: #333;} </style> </head><body> <div style=color:white;text-align:center> <h1>Amazon ECS Sample App</h1> <h2>Congratulations!</h2> <p>Your application is now running on a container in Amazon ECS.</p> </div></body></html>' > /usr/local/apache2/htdocs/index.html && httpd-foreground\"" ], "cpu": 10, "secrets": [ { "valueFrom": "arn:aws:secretsmanager:region:aws_account_id:secret:username_value", "name": "username_value" } ], "memory": 300, "image": "httpd:2.4", "essential": true, "name": "ecs-secrets-container" } ], "family": "ecs-secrets-tutorial" }
  6. Seleccione Crear.

Paso 4: Crear un clúster de Amazon ECS

Puede utilizar la consola de Amazon ECS para crear un clúster que contenga una instancia de contenedor en la que se va a ejecutar la tarea. Si tiene un clúster existente con al menos una instancia de contenedor registrada en ella, con los recursos disponibles para ejecutar una instancia de la definición de tarea creada para este tutorial, puede pasar al siguiente paso.

Para este tutorial, vamos a crear un clúster con una instancia de contenedor t2.micro mediante la AMI de Amazon Linux 2 optimizada para Amazon ECS.

Para obtener información sobre cómo crear un clúster para el tipo de lanzamiento de EC2, consulte Creación de un clúster para el tipo de lanzamiento de Amazon EC2 con la consola.

Paso 5: Ejecutar una tarea de Amazon ECS

Puede utilizar la consola de Amazon ECS para ejecutar una tarea mediante la definición de tareas creada. En este tutorial, ejecutaremos una tarea mediante el tipo de lanzamiento de EC2, utilizando el clúster que creamos en el paso anterior.

Para obtener información sobre cómo ejecutar una tarea, consulte Ejecutar una aplicación como una tarea de Amazon ECS.

Paso 6: Verificar

Puede verificar que todos los pasos se han completado correctamente y que la variable de entorno se ha creado correctamente en el contenedor con los pasos que se describen a continuación.

Para verificar que se ha creado la variable de entorno
  1. Busque la dirección IP o DNS pública para su instancia de contenedor.

    1. Abra la consola en https://console.aws.amazon.com/ecs/v2.

    2. En el panel de navegación, elija Clústeres y, a continuación, elija el clúster que creó.

    3. Elija Infraestructura y, a continuación, elija la instancia de contenedor.

    4. Registre la IP pública o el DNS público para su instancia.

  2. Si está utilizando un equipo con macOS o Linux, conéctese a la instancia con el siguiente comando, sustituyendo la ruta por su clave privada y la dirección pública para su instancia:

    $ ssh -i /path/to/my-key-pair.pem ec2-user@ec2-198-51-100-1.compute-1.amazonaws.com

    Para obtener más información acerca de la utilización de un ordenador Windows, consulte Conexión a la instancia de Linux desde Windows mediante PuTTY en la Guía del usuario de Amazon EC2 para instancias de Linux.

    importante

    Para obtener más información acerca de los problemas que pueden surgir al conectarse a la instancia, consulte Solución de problemas de conexión a la instancia en la Guía del usuario de Amazon EC2 para instancias de Linux.

  3. Obtenga la lista de los contenedores que se ejecutan en la instancia. Anote el ID del contenedor ecs-secrets-tutorial.

    docker ps
  4. Conéctese al contenedor ecs-secrets-tutorial con el ID de contenedor desde la salida del paso anterior.

    docker exec -it container_ID /bin/bash
  5. Utilice el comando echo para imprimir el valor de la variable del entorno.

    echo $username_value

    Si el tutorial no se ha realizado correctamente, debería ver el siguiente resultado:

    password_value
    nota

    Si lo prefiere, puede mostrar todas las variables de entorno en su contenedor con el comando env (o printenv).

Paso 7: Eliminación

Cuando termine este tutorial, debe limpiar los recursos asociados para evitar incurrir en cargos generados por recursos sin utilizar.

Para limpiar los recursos.
  1. Abra la consola en https://console.aws.amazon.com/ecs/v2.

  2. En el panel de navegación, seleccione Clusters (Clústeres).

  3. En la página Clusters (Clústeres), elija el clúster.

  4. Elija Delete cluster.

  5. En el cuadro de confirmación, ingrese Eliminar cluster-name y, a continuación, elija Eliminar.

  6. Abra la consola de IAM en https://console.aws.amazon.com/iam/.

  7. Seleccione Roles en el panel de navegación.

  8. En la lista de roles, busque ecsTaskExecutionRole y selecciónelo.

  9. Elija Permisos y, a continuación, elija la X situada junto a ECS SecretsTutorial. Elija Eliminar.

  10. Abra la consola de Secrets Manager enhttps://console.aws.amazon.com/secretsmanager/.

  11. Seleccione el secreto username_value creado y elija Actions (Acciones), Delete secret (Eliminar secreto).