Search
Close this search box.
View Categories

[AWS] Configurar cópia cofre (cross account) com KMS

Com a maior utilização de criptografia em todos os componentes, cresce o desafio de configurar a segurança e acessos entre contas. Especialmente quando é necessário aumentar a resiliência e se fortalecer contra ransonwares. Um dos recursos de proteção mais utilizados é a ‘cópia cofre’ que centraliza backups e snapshots em uma conta dedicada dentro da sua organização. O mecanismo é simples de definir: realizar backup de um componente e copiá-lo para uma conta exclusiva de armazenamento, onde somente pessoas autorizadas podem acessá-los, diminuindo superfície de ataque e evitando o espalhamento de acessos e credenciais.

Quando o componente não possui encriptação (KMS) montar um workflow é relativamente direto. Mas quando há um KMS envolvido – seja em um disco de EC2 encriptado ou um RDS – adicionam-se alguns passos de configuração de segurança que não são triviais e precisam ser executados.

  1. Se o componente estiver encriptado com o KMS default, o AWS não suporta. Você precisa criar uma chave KMS e encriptar o componente se for fazer a cópia cofre. Se o componente já tiver encriptado com o KMS default será necessário migrá-lo e recriá-lo com a nova chave.
  2. A conta ‘destino’ precisa ter as seguintes permissões:
"ec2:CopyImage",
"rds:CopyDBSnapshot",
"rds:CopyDBClusterSnapshot"

E a conta ‘origem’:

"ec2:ModifyImageAttribute",
"ec2:ModifySnapshotAttribute",
"rds:ModifyDBSnapshotAttribute",
"rds:ModifyDBClusterSnapshotAttribute"

3. Conta ‘Origem‘: dar permissão na chave KMS que encripta os componentes para a conta destino.

https://us-east-1.console.aws.amazon.com/kms/home

  • selecionar KMS em “Customer Managed Keys”
  • em “Key Users” adicionar o usuário ou Role desta conta origem que está no Cloud8
  • em “Other AWS accounts” adicionar o ID da conta destino

Com esta configuração, a conta “Destino” pode usar este KMS da “Origem” e delegar as permissões aos seus usuários e roles.

4. Na conta “Destino” se certificar que o usuário/role que está cadastrado no Cloud8 pode usar este KMS.

  • selecionar KMS em “Customer Managed Keys”
  • em “Key Users” adicionar o usuário ou Role desta conta destino que está no Cloud8
  • em “Key Users” colocar usuário/role que está no Cloud8

Com esta configuração, a conta “Destino” pode usar o KMS de sua mesma conta “Destino”.

5. Na conta “Destino”, dentro do IAM, criar um Inline Policy e associar ao usuário/role que está configurado no Cloud8.

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "AllowUseOfTheKey",
            "Effect": "Allow",
            "Action": [
                "kms:Encrypt",
                "kms:Decrypt",
                "kms:ReEncrypt*",
                "kms:GenerateDataKey*",
                "kms:DescribeKey"
            ],
            "Resource": [
                "arn:aws:kms:us-east-1:_____IDORIGEM_____:key/KEYID"
            ]
        },
        {
            "Sid": "AllowAttachmentOfPersistentResources",
            "Effect": "Allow",
            "Action": [
                "kms:CreateGrant",
                "kms:ListGrants",
                "kms:RevokeGrant"
            ],
            "Resource": [
                "arn:aws:kms:us-east-1:____IDORIGEM______:key/KEYID"
            ],
            "Condition": {
                "Bool": {
                    "kms:GrantIsForAWSResource": true
                }
          }
        }
    ]
}

Com esta configuração, a conta destino pode usar a chave “Origem” para descriptografar/criptografar a cópia.