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.
-
Siga las instrucciones de Creating Keys en la Guía para desarrolladores de AWS Key Management Service.
-
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 aGenerateDataKeyWithoutPlainText
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
yaws: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 defargateEphemeralStorageKmsKeyId
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
odescribe-services
.Para obtener más información, consulte Condition keys for AWS KMS en la Guía para desarrolladores de AWS KMS.
-