Autenticación de registros privados para tareas - 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.

Autenticación de registros privados para tareas

La autenticación de registros privados para las tareas que usan AWS Secrets Manager le permite almacenar sus credenciales de forma segura y hacer referencia a ellas en su definición de contenedor. Esto permite que las tareas usen imágenes de los repositorios privados. Esta característica solo se admite en tareas que usan los tipos de lanzamiento Fargate o EC2

importante

Si la definición de la tarea hace referencia a una imagen almacenada en Amazon ECR, este tema no es de aplicación en su caso. Para obtener más información, consulte Uso de imágenes de Amazon ECR con Amazon ECS en la Guía del usuario de Amazon EC2 Container Registry.

Para las tareas que utilizan el tipo de lanzamiento EC2, esta característica requiere la versión 1.19.0 o posterior del agente de contenedor; sin embargo, le recomendamos que utilice la versión más reciente del agente de contenedor. Para obtener información sobre la comprobación de la versión del agente y la actualización a la versión más reciente, consulte Actualizar el agente de contenedor de Amazon ECS.

Para las tareas que utilizan el tipo de lanzamiento Fargate, esta característica requiere versión 1.2.0 o posterior de la plataforma. Para obtener información, consulte AWS Fargate versiones de plataforma.

En la definición de contenedor, especifique repositoryCredentials con el ARN completo del secreto que ha creado. El secreto al que hace referencia puede proceder de una región distinta de la tarea que lo utiliza, pero debe provenir de la misma cuenta.

nota

Cuando se utiliza la API de Amazon ECS, la AWS CLI o el SDK de AWS, si el secreto existe en la misma región que la tarea que se va a lanzar, se puede utilizar el ARN completo o el nombre del secreto. Cuando se utiliza la Consola de administración de AWS, debe especificarse el ARN completo del secreto.

A continuación, se incluye un fragmento de definición de tarea que muestra los parámetros necesarios:

"containerDefinitions": [ { "image": "private-repo/private-image", "repositoryCredentials": { "credentialsParameter": "arn:aws:secretsmanager:region:aws_account_id:secret:secret_name" } } ]
nota

Otro método para habilitar la autenticación de registros privados es usar las variables de entorno del agente de contenedor de Amazon ECS para la autenticación en registros privados. Este método solo se admite para las tareas que utilizan el tipo de lanzamiento EC2 Para obtener más información, consulte Autenticación de registros privados para instancias de contenedor.

Permisos de IAM necesarios para la autenticación de registros privados

Se requiere la función de ejecución de tareas de Amazon ECS para utilizar esta característica. Esto permite que el agente de contenedor extraiga la imagen del contenedor. Para obtener más información, consulte Amazon ECS ejecución de tareas IAM función.

Para proporcionar acceso a los secretos de que cree, agregue manualmente los siguientes permisos como una política insertada al rol de ejecución de tareas. Para obtener más información, consulte Adición y eliminación de políticas de IAM.

  • secretsmanager:GetSecretValue

  • kms:Decrypt—: obligatorio solo si la clave utiliza una clave de KMS personalizada y no la clave predeterminada. El ARN de su clave personalizada debe añadirse como un recurso.

A continuación, se muestra una política insertada de ejemplo que añade los permisos.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kms:Decrypt", "secretsmanager:GetSecretValue" ], "Resource": [ "arn:aws:secretsmanager:<region>:<aws_account_id>:secret:secret_name", "arn:aws:kms:<region>:<aws_account_id>:key/key_id" ] } ] }

Habilitación de la autenticación de registros privados

Para crear un secreto básico

Utilice AWS Secrets Manager para crear un secreto para sus credenciales de registros privados.

  1. Abra la consola de AWS 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. Seleccione Plaintext (Texto no cifrado) e introduzca sus credenciales de registro privado utilizando el siguiente formato:

    { "username" : "privateRegistryUsername", "password" : "privateRegistryPassword" }
  5. Seleccione Siguiente.

  6. En Secret name (Nombre del secreto), escriba una ruta y un nombre opcionales, tales como production/MyAwesomeAppSecret o development/TestSecret y elija Next (Siguiente). Opcionalmente, puede añadir una descripción para ayudarle a recordar el objetivo de este secreto más adelante.

    El nombre del secreto debe estar formado por letras ASCII, dígitos o cualquiera de los siguientes caracteres: /_+=.@-

  7. (Opcional) En este punto puede configurar la rotación para su secreto. Para este procedimiento, deje seleccionado Disable automatic rotation (Deshabilitar la rotación automática) y, a continuación, elija Next (Siguiente).

    Para obtener información sobre cómo configurar la rotación en secretos nuevos o existentes, consulte Rotación de sus secretos de AWS Secrets Manager.

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

Para crear una definición de tarea que utilice la autenticación de registros privados

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

  2. En el panel de navegación, elija Task Definitions.

  3. En la página task definitions (Definiciones de tareas), elija Create new task definition (Crear nueva definición de tarea).

  4. En la página Select launch type compatibility (Seleccionar compatibilidad del tipo de lanzamiento), elija el tipo de lanzamiento para las tareas y, a continuación, elija Next step (Paso siguiente).

    nota

    Este paso solo es válido para las regiones que actualmente admiten Amazon ECS con AWS Fargate. Para obtener más información, consulte Amazon ECS en AWS Fargate.

  5. Para task definition Name, escriba un nombre para la definición de tarea.Se admiten hasta 255 letras (mayúsculas y minúsculas), números, guiones y caracteres de subrayado.

  6. En Task execution role (Rol de ejecución de tareas), seleccione el rol de ejecución de tareas existente o elija Create new role (Crear nuevo rol) para que se cree uno automáticamente. Este rol permite a Amazon ECS extraer imágenes privadas para su tarea. Para obtener más información, consulte Permisos de IAM necesarios para la autenticación de registros privados.

    importante

    Si el campo Task execution role (Rol de ejecución de tareas) no aparece, elija Configure via JSON (Configurar mediante JSON) y añada manualmente el campo executionRoleArn para especificar el rol de ejecución de tareas. A continuación se muestra la sintaxis:

    "executionRoleArn": "arn:aws:iam::aws_account_id:role/ecsTaskExecutionRole"
  7. Para cada contenedor que vaya a crear en su definición de tarea, siga los pasos que se describen a continuación:

    1. En la sección Container Definitions (Definiciones de contenedores), elija Add container (Añadir contenedor).

    2. En Container name (Nombre del contenedor), escriba un nombre para el contenedor. Se admiten hasta 255 letras (mayúsculas y minúsculas), números, guiones y caracteres de subrayado.

    3. En Image (Imagen), escriba el nombre de la imagen o la ruta a una imagen privada. Se admiten hasta 255 letras (mayúsculas y minúsculas), números, guiones y caracteres de subrayado.

    4. Seleccione la opción Private repository authentication (Autenticación de repositorio privado).

    5. En Secrets manager ARN (ARN de Secrets Manager), escriba el nombre de recurso de Amazon (ARN) completo del secreto que creó anteriormente. El valor debe tener entre 20 y 2048 caracteres.

    6. Rellene el resto de los campos obligatorios y todos los campos opcionales que va a usar en sus definiciones de contenedor. Hay más parámetros de definición de contenedor disponibles en el menú Advanced container configuration (Configuración avanzada del contenedor). Para obtener más información, consulte Parámetros de definición de tarea.

    7. Elija Add.

  8. Cuando se añadan los contenedores, elija Create (Crear).