Creación de una clave de cifrado para el almacenamiento efímero de Fargate - Amazon Elastic Container Service

Creación de una clave de cifrado para el almacenamiento efímero de Fargate

nota

El cifrado de almacenamiento efímero de Fargate con claves administradas por el cliente no está disponible para los clústeres de tareas de Windows.

El cifrado de almacenamiento efímero de Fargate con claves administradas por el cliente no estaba disponible en las platformVersions anteriores a la 1.4.0.

Fargate reserva espacio en un almacenamiento efímero que solo utiliza Fargate y no se cobra por el espacio. La asignación puede diferir de las tareas clave no administradas por el cliente, pero el espacio total sigue siendo el mismo. Puede ver este cambio en herramientas como df.

Para crear una clave administrada por el cliente (CMK) a fin de cifrar el almacenamiento efímero para Fargate en AWS KMS, siga estos pasos.

  1. Vaya a https://console.aws.amazon.com/kms.

  2. Siga las instrucciones de Creating Keys en la Guía para desarrolladores de AWS Key Management Service.

  3. Al crear su clave de AWS KMS, asegúrese de proporcionar los permisos de operaciones de AWS KMS pertinentes al servicio Fargate en las políticas de claves. Las siguientes operaciones de API deben estar permitidas en la política para utilizar su clave administrada por el cliente con los recursos de su clúster de Amazon ECS.

    • kms:GenerateDataKeyWithoutPlainText: llama a GenerateDataKeyWithoutPlainText para generar una clave de datos cifrada a partir de la clave de AWS KMS proporcionada.

    • kms:CreateGrant: agrega una concesión a una clave administrada por el cliente. Le concede acceso de control a una clave de AWS KMS especificada, lo que le permite acceder a las operaciones de concesión que necesita Fargate para Amazon ECS. Para obtener más información sobre el uso de concesiones, consulte la Guía para desarrolladores de AWS Key Management Service. Esto permite a Fargate para Amazon ECS realizar las siguientes tareas:

      • Llamar a Decrypt para AWS KMS a fin de obtener la clave de cifrado para descifrar los datos de almacenamiento efímero.

      • Configurar una entidad principal que se retire para permitir que el servicio RetireGrant.

    • kms:DescribeKey: proporciona detalles de la clave administrada por el cliente para permitir que Amazon ECS valide la clave si es simétrica y está habilitada.

    En el siguiente ejemplo, se muestra una política de claves de AWS KMS que se aplicaría a la clave de destino para el cifrado. Para utilizar las instrucciones de la política de ejemplo, sustituya los marcadores de posición del usuario con su propia información. Como siempre, configure solo los permisos que necesite; sin embargo, deberá proporcionar a AWS KMS los permisos para un usuario, como mínimo, a efectos de evitar errores.

    { "Sid": "Allow generate data key access for Fargate tasks.", "Effect": "Allow", "Principal": { "Service":"fargate.amazonaws.com" }, "Action": [ "kms:GenerateDataKeyWithoutPlaintext" ], "Condition": { "StringEquals": { "kms:EncryptionContext:aws:ecs:clusterAccount": [ "customerAccountId" ], "kms:EncryptionContext:aws:ecs:clusterName": [ "clusterName" ] } }, "Resource": "*" }, { "Sid": "Allow grant creation permission for Fargate tasks.", "Effect": "Allow", "Principal": { "Service":"fargate.amazonaws.com" }, "Action": [ "kms:CreateGrant" ], "Condition": { "StringEquals": { "kms:EncryptionContext:aws:ecs:clusterAccount": [ "customerAccountId" ], "kms:EncryptionContext:aws:ecs:clusterName": [ "clusterName" ] }, "ForAllValues:StringEquals": { "kms:GrantOperations": [ "Decrypt" ] } }, "Resource": "*" }, { "Sid": "Allow describe key permission for cluster operator - CreateCluster and UpdateCluster.", "Effect": "Allow", "Principal": { "AWS":"arn:aws:iam::customerAccountId:role/customer-chosen-role" }, "Action": [ "kms:DescribeKey" ], "Resource": "*" }

    Las tareas de Fargate utilizan las claves de contexto de cifrado aws:ecs:clusterAccount y aws:ecs:clusterName para las operaciones criptográficas con la clave. Los clientes deben agregar estos permisos para restringir el acceso a una cuenta o un clúster específicos.

    Para obtener más información, consulte Contexto de cifrado en la Guía para desarrolladores de AWS KMS.

    Al crear o actualizar un clúster, tiene la opción de utilizar la clave de condición fargateEphemeralStorageKmsKeyId. Esta clave de condición permite a los clientes tener un control más detallado de las políticas de IAM. Las actualizaciones de la configuración de fargateEphemeralStorageKmsKeyId solo se aplican a las nuevas implementaciones de servicios.

    A continuación, se muestra un ejemplo de cómo permitir a los clientes conceder permisos únicamente a un conjunto específico de claves de AWS KMS aprobadas.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ecs:CreateCluster", "ecs:UpdateCluster" ], "Resource": "*", "Condition": { "StringEquals": { "ecs:fargate-ephemeral-storage-kms-key": "arn:aws:kms:us-west-2:111122223333:key/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111" } } } ] }

    A continuación, se muestra un ejemplo de cómo denegar los intentos de eliminación de las claves de AWS KMS que ya están asociadas a un clúster.

    { "Version": "2012-10-17", "Statement": { "Effect": "Deny", "Action": [ "ecs:CreateCluster", "ecs:UpdateCluster" ], "Resource": "*", "Condition": { "Null": { "ecs:fargate-ephemeral-storage-kms-key": "true" } } } }

    Los clientes pueden comprobar si sus tareas no administradas o de servicio están cifradas con la clave mediante los comandos AWS CLI, describe-tasks, describe-cluster o describe-services.

    Para obtener más información, consulte Condition keys for AWS KMS en la Guía para desarrolladores de AWS KMS.

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

  2. Seleccione Clústeres en el menú de navegación de la izquierda y Crear clúster en la parte superior derecha, o bien elija un clúster existente. Para un clúster existente, seleccione Actualizar clúster en la parte superior derecha.

  3. En la sección Cifrado del flujo de trabajo, tendrá la opción de seleccionar su clave de AWS KMS en Almacenamiento administrado y Almacenamiento efímero de Fargate. También puede elegir Crear una clave de AWS KMS desde aquí.

  4. Elija Crear una vez que haya terminado de crear el nuevo clúster o Actualizar si estaba actualizando uno existente.

AWS CLI

A continuación, se muestra un ejemplo de cómo crear un clúster y configurar el almacenamiento efímero de Fargate mediante la AWS CLI (sustituya los valores en color rojo por los suyos):

aws ecs create-cluster --cluster clusterName \ --configuration '{"managedStorageConfiguration":{"fargateEphemeralStorageKmsKeyId":"arn:aws:kms:us-west-2:012345678901:key/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111"}}' { "cluster": { "clusterArn": "arn:aws:ecs:us-west-2:012345678901:cluster/clusterName", "clusterName": "clusterName", "configuration": { "managedStorageConfiguration": { "fargateEphemeralStorageKmsKeyId": "arn:aws:kms:us-west-2:012345678901:key/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111" } }, "status": "ACTIVE", "registeredContainerInstancesCount": 0, "runningTasksCount": 0, "pendingTasksCount": 0, "activeServicesCount": 0, "statistics": [], "tags": [], "settings": [], "capacityProviders": [], "defaultCapacityProviderStrategy": [] }, "clusterCount": 5 }
AWS CloudFormation

A continuación, se muestra un ejemplo de plantilla para crear un clúster y configurar el almacenamiento efímero de Fargate mediante AWS CloudFormation (sustituya los valores en color rojo por los suyos):

AWSTemplateFormatVersion: 2010-09-09 Resources: MyCluster: Type: AWS::ECS::Cluster Properties: ClusterName: "clusterName" Configuration: ManagedStorageConfiguration: FargateEphemeralStorageKmsKeyId: "arn:aws:kms:us-west-2:012345678901:key/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111"