O blog da AWS

Protegendo cargas de trabalho do Amazon ECS com AWS Fargate e chaves gerenciadas pelo cliente

Por Maish Saidel-Keesing

Como disse o CTO da Amazon, Werner Vogels, “A criptografia é a ferramenta que temos para garantir que ninguém mais tenha acesso aos seus dados. A Amazon Web Services (AWS) incorporou criptografia em quase todos os seus 165 serviços em nuvem. Faça uso disso. Dance como se ninguém estivesse assistindo. Criptografe como todo mundo é.”

A segurança é a principal prioridade na AWS, sustentando tudo o que fazemos. Com o AWS Fargate, cada task do Amazon Elastic Container Service (Amazon ECS) é lançada em uma nova unidade de computação de uso único e single-tenant. O armazenamento efêmero desse serviço de computação é sempre criptografado, e a chave de criptografia do AWS Key Management Service (AWS KMS) usada para essa criptografia é gerenciada pelo AWS Fargate.

Hoje, a AWS está anunciando que você pode trazer suas próprias chaves gerenciadas pelo cliente (CMKs). Depois de adicionados ao AWS KMS, você pode usá-los para criptografar o armazenamento efêmero subjacente de uma task do Amazon ECS no AWS Fargate. Com esse novo recurso, os clientes que operam em ambientes altamente regulamentados agora podem ter mais controle e visibilidade da criptografia de armazenamento efêmero de suas tasks.

Esta publicação aborda o armazenamento efêmero de tasks do AWS Fargate e mostra como o novo recurso de chave gerenciada pelo cliente (CMK) pode ser ativado e auditado.

Visão geral

O AWS Fargate é um mecanismo de computação Serverless (sem servidor) para cargas de trabalho em containers executadas no Amazon ECS e no Amazon Elastic Kubernetes Service (Amazon EKS). Cada vez que um novo trabalho é programado no AWS Fargate, como uma task do Amazon ECS ou um pod do Amazon EKS, essa carga de trabalho é colocada em uma instância de computação de uso único e single-tenant.

Para tasks do Amazon ECS, essa unidade de computação tem 20 GiBs de armazenamento efêmero anexado. Isso pode ser aumentado em até 200 GiB especificando o parâmetro EphemeralStorage na task definition. Esse armazenamento efêmero está vinculado ao ciclo de vida da task do Amazon ECS e, quando a task do Amazon ECS é interrompida, junto com a computação subjacente, esse armazenamento efêmero é excluído.

Se você estiver usando a plataforma AWS Fargate versão 1.4.0 ou superior, esse volume de armazenamento temporário é criptografado por padrão. Ele é criptografado usando uma chave do AWS Key Management Service (KMS) com o algoritmo de criptografia AES-256. A chave e seu ciclo de vida pertencem ao serviço AWS Fargate. Você pode aprender mais sobre a criptografia de armazenamento efêmero gerenciada pelo Fargate no Whitepaper de segurança do AWS Fargate.

Com o lançamento de hoje, como alternativa à criptografia gerenciada pelo Fargate, você pode optar por criptografar o armazenamento temporário com chaves gerenciadas pelo cliente (CMKs). Isso ajuda os clientes sensíveis às regulamentações a cumprirem suas políticas internas de segurança e requisitos regulatórios.

Os clientes podem importar suas próprias chaves existentes para o AWS KMS ou criar uma nova CMK para criptografar o armazenamento temporário. As CMKs usadas pelo AWS Fargate podem ser gerenciadas por meio das ações normais do ciclo de vida do AWS KMS, como rotação, desativação e exclusão. Consulte a documentação do Amazon ECS para obter mais detalhes sobre o gerenciamento da chave KMS. Além disso, todo o acesso do AWS Fargate à chave do KMS pode ser auditado no AWS CloudTrail Logs.

Em janeiro de 2024, a AWS anunciou que volumes adicionais do Amazon Elastic Block Store (Amazon EBS) agora podem ser anexados às tasks do Amazon ECS executadas no AWS Fargate. Esses volumes do EBS endereçam casos de uso adicionais para clientes do AWS Fargate, usando volumes de maior capacidade e alto desempenho para uso em suas tarefas junto com o armazenamento efêmero. Esses volumes adicionais do EBS são gerenciados de forma diferente do armazenamento temporário, e esses volumes já podem ser criptografados com chaves KMS gerenciadas pelo cliente (CMKs).

O AWS Fargate se enquadra no escopo dos seguintes programas de conformidade em relação ao modelo de responsabilidade compartilhada da AWS. Os programas de conformidade cobertos pelo AWS Fargate incluem:

Você pode baixar relatórios de auditoria de terceiros usando o AWS Artifact. Para obter mais informações, consulte Download de relatórios no AWS Artifact. Muitos desses programas de conformidade exigem que os clientes criptografem seus dados em repouso em seus recursos do Amazon ECS no AWS Fargate.

Os clientes também têm políticas internas adicionais de gerenciamento de risco para o manuseio de chaves, nas quais devem gerar suas próprias chaves, fazer backups dessas chaves fora da nuvem e gerenciar o ciclo de vida dessas chaves. Até hoje, esses clientes não podiam usar a solução de criptografia padrão do AWS Fargate para as cargas de trabalho sujeitas às suas políticas internas de segurança.

Habilitando a CMK para armazenamento temporário em um cluster do Amazon ECS

Após o lançamento de hoje, uma única chave KMS agora pode ser anexada a um cluster Amazon ECS novo ou existente. Depois que uma chave é anexada, todas as novas tasks lançadas no AWS Fargate usam essa chave do KMS. Se você tiver task existentes em execução no cluster do Amazon ECS, elas devem ser reimplantadas para usar a nova chave de criptografia. Se essas tasks fizerem parte de um serviço do Amazon ECS, passar o parametro —force-new-deployment para o amazon ecs update-service command força todas as tasks a serem reimplantadas com a nova chave KMS (respeitando o minimumHealthyPercent do serviço).

Para anexar uma chave KMS a um cluster novo ou existente, especifique o KeyId no novo campo managedStorageConfiguration:

aws ecs create-cluster \
  --cluster clusterName \
  --configuration '{"managedStorageConfiguration":{"fargateEphemeralStorageKmsKeyId":"arn:aws:kms:us-west-2:012345678901:key/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111"}}'

Aqui está um exemplo da saída de uma solicitação da API DescribeClusters para um cluster do Amazon ECS com uma chave gerenciada pelo cliente:

Result of describe-clusters query

aws ecs describe-clusters --clusters ecs-fargate-self-managed-key-cluster --region us-west-2 --include CONFIGURATIONS

Além de auditar eventos de criptografia do CloudTrail Logs, você também pode verificar se uma task do ECS está usando a chave KMS usando a API DescribeTask em uma task existente:

{
    "tasks": [
        {
            ....
            "clusterArn": "arn:aws:ecs:us-west-2:1234567890:cluster/mycluster",
            "taskArn": "arn:aws:ecs:us-west-2:1234567890:task/11223342-1111-4fde-b6ca-273c5cfc00a1]",
            "fargateEphemeralStorage": {
                "sizeInGiB": 20,
                "kmsKeyId": "arn:aws:kms:us-west-2:1234567890:key/082222a1-1111-4fde-b6ca-273c5cfc00a1"
            }
        }
    ]
}

Aplicação da criptografia com chaves gerenciadas pelo cliente

A nova chave de condição do AWS Identity and Access Management (IAM) garante que seus clusters do Amazon ECS sejam criados com uma chave gerenciada pelo cliente. Isso pode ser aplicado como política de controle de serviços em sua organização da AWS ou como parte de suas permissões do IAM.

Aqui está um trecho de exemplo de política do IAM que garante que um cluster só possa ser criado quando uma chave específica do AWS KMS é usada:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "ecs:CreateCluster"
      ],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "ecs:fargate-ephemeral-storage-kms-key": "arn:aws:kms:us-east-1:123456789012:key/1234abcd-12ab-34cd-56ef-1234567890ab"
        }
      }
    }
  ]
}

Auditando eventos de criptografia

Os eventos de criptografia são registrados no AWS CloudTrail. Veja a seguir um exemplo de um evento do CloudTrail que inclui o ID do volume, o nome do cluster e o ID da conta da AWS da operação. Você pode encontrar mais detalhes sobre os tipos de eventos registrados em Gerenciando chaves do AWS KMS para armazenamento efêmero do Fargate.

{
    "eventVersion": "1.08",
    "userIdentity": {
        "type": "AWSService",
        "invokedBy": "ec2-frontend-api.amazonaws.com"
    },
    "eventTime": "2024-04-23T18:08:13Z",
    "eventSource": "kms.amazonaws.com",
    "eventName": "CreateGrant",
    "awsRegion": "us-west-2",
    "sourceIPAddress": "ec2-frontend-api.amazonaws.com",
    "userAgent": "ec2-frontend-api.amazonaws.com",
    "requestParameters": {
        "keyId": "arn:aws:kms:us-west-2:123456789012:key/9b52b885-3f4d-40af-9843-d6b24b735559",
        "granteePrincipal": "fargate.us-west-2.amazonaws.com",
        "operations": [
            "Decrypt"
        ],
        "constraints": {
            "encryptionContextSubset": {
                "aws:ecs:clusterAccount": "123456789012",
                "aws:ebs:id": "vol-01234567890abcdef",
                "aws:ecs:clusterName": "ecs-fargate-self-managed-key-cluster"
            }
        },
        "retiringPrincipal": "ec2.us-west-2.amazonaws.com"
    },
    "responseElements": {
        "grantId": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
        "keyId": "arn:aws:kms:us-west-2:123456789012:key/9b52b885-3f4d-40af-9843-d6b24b735559"
    },
    "requestID": "be4d1a4e4730e0dceca51f87ee7454d5db76400d80e22bfbf3c4ca01e893b60c",
    "eventID": "bf36027c-86bd-40f2-a561-960cbe148c4c",
    "readOnly": false,
    "resources": [
        {
            "accountId": "AWS Internal",
            "type": "AWS::KMS::Key",
            "ARN": "arn:aws:kms:us-west-2:123456789012:key/9b52b885-3f4d-40af-9843-d6b24b735559"
        }
    ],
    "eventType": "AwsApiCall",
    "managementEvent": true,
    "recipientAccountId": "123456789012",
    "sharedEventID": "bf36027c-86bd-40f2-a561-960cbe148c4c",
    "eventCategory": "Management"
}

Conclusão

Com o uso das chaves gerenciadas pelo cliente do AWS KMS, agora você pode atender aos requisitos de segurança dos dados dentro dos workloads do Amazon ECS executadas no AWS Fargate.

Para saber mais sobre conformidade em seus workloads do Amazon ECS, você pode consultar a publicação do blog  FSI Services Spotlight: Amazon Elastic Container Service (ECS) with AWS Fargate ou a visão geral de segurança do whitepaper AWS Fargate. Para saber mais sobre o uso de chaves gerenciadas pelo cliente no AWS Fargate, consulte a.

Este blog é uma tradução do conteúdo original em inglês (link aqui).

Biografia do Autor

Maish Saidel-Keesing, Senior Developer Advocate

Biografia do Tradutor

Rodrigo Peres é Arquiteto de Soluções na AWS, com mais de 20 anos de experiência trabalhando com arquitetura de soluções, desenvolvimento de sistemas e modernização de sistemas legados.

Biografia do Revisor

Daniel Abib é arquiteto de soluções sênior na AWS, com mais de 25 anos trabalhando com gerenciamento de projetos, arquiteturas de soluções escaláveis, desenvolvimento de sistemas e CI/CD, microsserviços, arquitetura Serverless & Containers e segurança. Ele trabalha apoiando clientes corporativos, ajudando-os em sua jornada para a nuvem.

https://www.linkedin.com/in/danielabib/