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 corrigir? #
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
}
}
}
]
}