Criar uma chave de criptografia para o armazenamento efêmero do Fargate para o Amazon ECS
Crie uma chave gerenciada do cliente para criptografar dados armazenados no armazenamento temporário do Fargate.
nota
A criptografia de armazenamento efêmero do Fargate com chaves gerenciadas pelo cliente não está disponível para clusters de tarefas do Windows.
A criptografia do armazenamento efêmero do Fargate com chaves gerenciadas pelo cliente não está disponível nas platformVersions
anteriores à versão 1.4.0
.
O Fargate reserva espaço em um armazenamento efêmero que só é usado pelo Fargate, e você não é cobrado por esse espaço. A alocação pode ser diferente nas tarefas de chave não gerenciadas pelo cliente, mas o espaço total permanece o mesmo. Você pode ver essa mudança em ferramentas como df
.
Chaves de várias regiões não são compatíveis com armazenamento efêmero do Fargate.
Aliases de chaves do KMS não são compatíveis com armazenamento efêmero do Fargate.
Para criar um a chave gerenciada pelo cliente (CMK) para criptografar armazenamento efêmero para o Fargate no AWS KMS, siga estas etapas.
-
Navegue até https://console.aws.amazon.com/kms
. -
Siga as instruções de Creating Keys no AWS Key Management Service Developer Guide.
-
Ao criar sua chave AWS KMS, certifique-se de fornecer as permissões operacionais relevantes do AWS KMS ao serviço Fargate nas políticas de chave. As operações de API a seguir devem ser permitidas na política para usar a chave gerenciada pelo cliente com os recursos de cluster do Amazon ECS.
-
kms:GenerateDataKeyWithoutPlainText
: chameGenerateDataKeyWithoutPlainText
para gerar uma chave de dados criptografada a partir da chave AWS KMS fornecida. -
kms:CreateGrant
: adiciona uma concessão a uma chave gerenciada pelo cliente. Concede controle de acesso a uma chave AWS KMS especificada, o que permite acesso às operações de concessão que o Fargate do Amazon ECS requer. Para obter mais informações sobre Utilizar concessões, consulte o Guia do desenvolvedor do AWS Key Management Service. Isso permite que o Fargate do Amazon ECS faça o seguinte:-
Chame
Decrypt
para que o AWS KMS obtenha a chave de criptografia para descriptografar os dados do armazenamento efêmero. -
Configure uma entidade principal aposentada para permitir que o serviço para
RetireGrant
.
-
-
kms:DescribeKey
: fornece os detalhes da chave gerenciada pelo cliente para permitir que o Amazon ECS valide a chave se ela for simétrica e estiver habilitada.
O exemplo a seguir mostra uma política de chave AWS KMS que você aplicaria à chave de destino para criptografia. Para usar as instruções do exemplo de política, substitua os
espaços reservados para entrada do usuário
por suas próprias informações. Como sempre, configure apenas as permissões necessárias, mas você precisará fornecer o AWS KMS com permissões para pelo menos um usuário a fim de evitar erros.{ "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": "*" }As tarefas do Fargate usam as chaves de contexto de criptografia
aws:ecs:clusterAccount
eaws:ecs:clusterName
para operações criptográficas com a chave. Os clientes devem adicionar essas permissões para restringir o acesso a uma conta e/ou cluster específicos. Use o nome do cluster e não o ARN ao especificar o cluster.Para obter mais informações, consulte Contexto de criptografia no Guia do desenvolvedor AWS KMS.
Ao criar ou atualizar um cluster, você tem a opção usar a chave de condição
fargateEphemeralStorageKmsKeyId
. Essa chave de condição permite que os clientes tenham um controle mais granular das políticas do IAM. As atualizações da configuraçãofargateEphemeralStorageKmsKeyId
só se aplicam a novas implantações do serviço.O exemplo a seguir mostra como deixar que os clientes só concedam permissões a um conjunto específico de chaves AWS KMS aprovadas.
{ "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
" } } } ] }O próximo exemplo mostra como negar tentativas de remover chaves AWS KMS que já estão associadas a um cluster.
{ "Version": "2012-10-17", "Statement": { "Effect": "Deny", "Action": [ "ecs:CreateCluster", "ecs:UpdateCluster" ], "Resource": "*", "Condition": { "Null": { "ecs:fargate-ephemeral-storage-kms-key": "true" } } } }
Os clientes podem ver se as tarefas não gerenciadas ou as tarefas de serviço estão criptografadas com a chave usando os comandos AWS CLI,
describe-tasks
,describe-cluster
oudescribe-services
.Para obter mais informações, consulte Condition keys for AWS KMS in the AWS KMS Developer Guide.
-