Criar uma chave de criptografia para o armazenamento efêmero do Fargate - Amazon Elastic Container Service

Criar uma chave de criptografia para o armazenamento efêmero 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.

Para criar um a chave gerenciada pelo cliente (CMK) para criptografar armazenamento efêmero para o Fargate no AWS KMS, siga estas etapas.

  1. Navegue até https://console.aws.amazon.com/kms.

  2. Siga as instruções de Creating Keys no AWS Key Management Service Developer Guide.

  3. 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: chame GenerateDataKeyWithoutPlainText 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 e aws: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.

    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ção fargateEphemeralStorageKmsKeyId 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 ou describe-services.

    Para obter mais informações, consulte Condition keys for AWS KMS in the AWS KMS Developer Guide.

AWS Management Console
  1. Abra o console em https://console.aws.amazon.com/ecs/v2.

  2. Escolha Clusters no painel de navegação esquerdo, depois selecione Criar cluster no canto superior direito ou escolha um cluster existente. Para um cluster existente, escolha Atualizar cluster no canto superior direito.

  3. Na seção Criptografia do fluxo de trabalho, você terá a opção de selecionar sua chave AWS KMS em Armazenamento gerenciado e Armazenamento efêmero do Fargate. Você também pode optar por criar uma chave AWS KMS aqui.

  4. Escolha Criar quando terminar de criar o novo cluster ou Atualizar, se estiver atualizando um cluster existente.

AWS CLI

O exemplo a seguir mostra como criar um cluster e configurar o armazenamento efêmero do Fargate usando a AWS CLI (substitua os valores em vermelho pelos seus):

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

O exemplo a seguir mostra como criar um cluster e configurar o armazenamento efêmero do Fargate usando a AWS CloudFormation o (substitua os valores em vermelho pelos):

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"