Search
Close this search box.

Backup, DR e cópia cofre com KMS

Fazer um backup de RDS ou servidor EC2 (AMI ou Snapshot) que esteja encriptado por uma chave KMS (não default) é um desafio. Aqui listamos os passos para dar permissão entre contas/regiões que possam acessar as chaves e terminar o backup.

No erro exemplo abaixo, tentou-se copiar um backup RDS encriptado para outra conta e recebemos esta mensagem:

The source snapshot KMS key [arn:aws:kms:us-east-1:111111111111111:key/8aaaaaa0-adaa-43cc-83d1-54ffffff2ab4] does not exist, is not enabled or you do not have permissions to access it.

Como arrumar?

No console, dar permissão para a conta acessar:

https://console.aws.amazon.com/kms/home?region=us-east-1#/kms/keys/——-KMSKEY——-/

Na sessão: Other AWS accounts, adicionar a conta destino (ID com 12 dígitos)
Chave não pode estar desabilitada!

2. No IAM da conta destino, incluir a policy abaixo (lembrando que tentamos usar rds:CopyDBSnapshot

{
    “Version”: “2012-10-17”,
    “Statement”: [
        {
            “Sid”: “AllowUseOfTheKey”,
            “Effect”: “Allow”,
            “Action”: “rds:CopyDBSnapshot”,
            “Resource”: “*”
        },
        {
            “Sid”: “AllowUseOfTheKey”,
            “Effect”: “Allow”,
            “Action”: [
                “kms:Encrypt”,
                “kms:Decrypt”,
                “kms:ReEncrypt*”,
                “kms:GenerateDataKey*”,
                “kms:DescribeKey”,
                “kms:CreateGrant”,
                “kms:RetireGrant”
            ],
            “Resource”: [
                “arn:aws:kms:us-east-1:111111111111111:key/8aaaaaa0-adaa-43cc-83d1-54ffffff2ab4”
            ]
        },
        {
            “Sid”: “AllowAttachmentOfPersistentResources”,
            “Effect”: “Allow”,
            “Action”: [
                “kms:CreateGrant”,
                “kms:ListGrants”,
                “kms:RevokeGrant”
            ],
            “Resource”: [
                “arn:aws:kms:us-east-1:111111111111111:key/8aaaaaa0-adaa-43cc-83d1-54ffffff2ab4”
            ],
            “Condition”: {
                “Bool”: {
                    “kms:GrantIsForAWSResource”: true
                }
            }
        }
    ]
}