Tutorial Especificación de datos confidenciales usando Secrets Manager secretos - 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.

Tutorial Especificación de datos confidenciales usando Secrets Manager secretos

Amazon ECS le permite introducir información confidencial en sus contenedores almacenándola en secretos de AWS Secrets Manager y, a continuación, hacer referencia a ellos en la definición de contenedor. Para obtener más información, consulte Especificación de información confidencial.

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

Prerequisites

En este tutorial se supone que los siguientes requisitos previos se han realizado.

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

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

Paso 1. Crear un Secrets Manager secreto

Puede utilizar la consola de Secrets Manager para crear un secreto para 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.

Para crear un secreto básico

Utilice Secrets Manager para crear un secreto para su información confidencial.

  1. Abra la consola de Secrets Manager en https://console.aws.amazon.com/secretsmanager/.

  2. Elija Store a new secret (Almacenar un nuevo secreto).

  3. En Select secret type (Seleccionar tipo de secreto), elija Other type of secrets (Otro tipo de secretos).

  4. Para Especificar los pares clave-valor para almacenarlos en este secreto, elija la pestaña Plaintext (Texto no cifrado) y sustituya el texto existente por el siguiente texto. El valor de texto que especifique aquí será el valor de la variable de entorno en el contenedor al final del tutorial.

    password_value
  5. Seleccione Next (Siguiente).

  6. En Secret name (Nombre de secreto), escriba username_value y seleccione Next (Siguiente). El valor del nombre del secreto que especifique aquí será el nombre de la variable del entorno en el contenedor al final del tutorial.

  7. Para configurar la rotación automática, deje Disable automatic rotation (Deshabilitar la rotación automática) seleccionada y elija Next (Siguiente).

  8. Revise esta configuración y, a continuación, elija Store (Almacenar) para guardar todo lo que ha escrito como un nuevo secreto en Secrets Manager.

  9. Seleccione el secreto que acaba de crear y guarde el ARN del secreto para hacer referencia en su política de IAM de ejecución de tareas y definición de tarea en pasos posteriores.

Paso 2. Actualizar la ejecución de la tarea IAM función

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

En los siguientes pasos se presupone que ya tiene el rol de IAM de ejecución de tareas creado y configurado 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 necesarios.

  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. Seleccione la pestaña JSON y especifique el siguiente texto JSON, asegurándose de que especifica el ARN completo del secreto de Secrets Manager que ha creado 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-u9bH6K" ] } ] }
  6. Elija Review policy (Revisar la política). En Name (Nombre) especifique ECSSecretsTutorial y, a continuación, seleccione Create policy (Crear política).

Paso 3. Crear un Amazon ECS definición de tarea

Puede utilizar la consola de Amazon ECS para crear una definición de tarea 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 necesarios.

  1. Abra la consola de Amazon ECS en https://console.aws.amazon.com/ecs/.

  2. En el panel de navegación, elija Task Definitions (Definiciones de tareas) y Create new Task Definition (Crear nueva definición de tarea).

  3. En la página Select launch type compatibility (Seleccionar compatibilidad de tipo de lanzamiento), elija EC2 y Next step (Siguiente paso).

  4. Elija Configure via JSON (Configure a través de JSON) y escriba el siguiente texto JSON de definición de tarea, asegurándose de que especifica el ARN completo del secreto de Secrets Manager que ha creado en el paso 1 y el rol de IAM de ejecución de tareas actualizado en el paso 2. Seleccione Save.

    importante

    El valor para el nombre de secreto en la definición de tarea debe coincidir con el nombre que haya especificado para el nombre del secreto cuando se creó este.

    { "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-u9bH6K", "name": "username_value" } ], "memory": 300, "image": "httpd:2.4", "essential": true, "name": "ecs-secrets-container" } ], "family": "ecs-secrets-tutorial" }
  5. Revise la configuración y, a continuación, seleccione Create (Crear).

Paso 4. Creación de 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 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.

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

Pasos para crear un clúster

Utilice la consola de Amazon ECS para crear un clúster y registrar una instancia de contenedor en él.

  1. Abra la consola de Amazon ECS en https://console.aws.amazon.com/ecs/.

  2. En la barra de navegación, seleccione la región que contiene el secreto de Secrets Manager y la definición de tarea de Amazon ECS creada.

  3. En el panel de navegación, elija Clusters (Clústeres).

  4. En la página Clusters, elija Create Cluster.

  5. Para EC2 Instance type (Tipo de instancia EC2), seleccione t2.micro.

  6. Para Key pair (Par de claves), elija un par de claves para añadir a la instancia de contenedor.

    importante

    Se necesita un par de claves para completar el tutorial, por lo que si aún no dispone de un par de claves creado, siga el enlace que dirige a la consola de EC2 para crear uno.

  7. Deje el resto de campos con sus valores predeterminados y seleccione Create (Crear).

Paso 5. Ejecutar un Amazon ECS tarea

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

Para ejecutar una tarea

  1. Abra la consola de Amazon ECS en https://console.aws.amazon.com/ecs/.

  2. En el panel de navegación, elija Task Definitions (Definiciones de tareas) y seleccione la definición de tarea ecs-secrets-tutorial creada.

  3. Seleccione la última revisión de la definición de tarea y, a continuación, seleccione Actions (Acciones), Run Task (Ejecutar tarea).

  4. En Launch Type, elija EC2.

  5. En Cluster (Clúster), elija el clúster ecs-secrets-tutorial creado en el paso anterior.

  6. En Task tagging configuration (Configuración de etiquetado de tareas), anule la selección de Enable ECS managed tags (Habilitar etiquetas administradas por ECS). No son necesarias para los fines de este tutorial.

  7. Revise la información de su tarea y elija Run Task.

    nota

    Si su tarea pasa de PENDING a STOPPED o si muestra el estado PENDING y, a continuación, desaparece de la lista de tareas, su tarea puede haberse detenido por un error. Para obtener más información, consulte Comprobación de errores en tareas detenidas en la sección de resolución de problemas.

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 de Amazon ECS en https://console.aws.amazon.com/ecs/.

    2. Seleccione el clúster ecs-secrets-tutorial que incluye su instancia de contenedor.

    3. En la página Cluster, elija ECS Instances.

    4. En la columna Container Instance, seleccione la instancia de contenedor con la que desea conectarse.

    5. En la página Container Instance, registre la Public IP o Public DNS 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 sobre el uso de un equipo 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 sobre los problemas que pueden aparecer al conectarse con la instancia, consulte Solucionar el problema de conectar 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. Eliminar recursos

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 de Amazon ECS en https://console.aws.amazon.com/ecs/.

  2. Seleccione el clúster ecs-secrets-tutorial creado.

  3. En la página Cluster (Clúster), seleccione Delete Cluster (Eliminar clúster).

  4. Escriba la frase de confirmación de eliminación del clúster y haga clic en Delete (Eliminar). Esto tardará varios minutos pero borrará todos los recursos del clúster de Amazon ECS.

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

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

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

  8. Elegir Permisos, elija el X junto a ECSSecretsTutorial. Elegir Eliminar para confirmar la eliminación de la política en línea.

  9. Abra la consola de Secrets Manager en https://console.aws.amazon.com/secretsmanager/.

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