Meu bucket do Amazon Simple Storage Service (Amazon S3) é criptografado com uma chave gerenciada pelo cliente do AWS Key Management Service (AWS KMS). Quando usuários de outra conta da AWS tentam acessar os objetos no meu bucket, eles recebem um erro de acesso negado.
Breve descrição
Para conceder acesso a um bucket criptografado do AWS KMS na Conta A a um usuário na Conta B, aplique as seguintes permissões:
- A política de bucket do Amazon S3 na Conta A deve conceder acesso à Conta B.
- A chave gerenciada pela AWS na Conta A deve estar localizada na mesma região da AWS que o bucket S3 na Conta A.
- A política de chave do AWS KMS na Conta A deve conceder acesso ao usuário na Conta B.
- A política do AWS Identity and Access Management (IAM) na Conta B deve conceder ao usuário acesso ao bucket e à chave do AWS KMS na Conta A.
Para solucionar o erro Access Denied, verifique se essas permissões estão configuradas corretamente.
Importante: Para políticas de chaves gerenciadas pelo cliente, você pode alterar a política de chave somente na conta que criou a política.
Você deve usar um ARN de chave KMS totalmente qualificado para a configuração de criptografia do bucket. Se você usar um alias de chave KMS, o AWS KMS resolverá a chave somente dentro da conta que tem o bucket (Conta A).
Veja a seguir um exemplo de um ARN de chave do AWS KMS totalmente qualificado que você usa para criptografia de bucket:
"arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab"
Veja a seguir um exemplo de um alias de chave do AWS KMS que você não usa para criptografia de bucket:
arn:aws:kms:us-west-2:111122223333:alias/alias-name
Resolução
A política de bucket na Conta A deve conceder acesso ao usuário na Conta B
Na Conta A, revise a política do bucket para confirmar se há uma declaração que permite o acesso a partir do ID da Conta B.
Por exemplo, a política de bucket a seguir permite que o s3:GetObject acesse a ID da conta 111122223333:
{
"Id": "ExamplePolicy1",
"Version": "2012-10-17",
"Statement": [
{
"Sid": "ExampleStmt1",
"Action": [
"s3:GetObject"
],
"Effect": "Allow",
"Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*",
"Principal": {
"AWS": [
"111122223333"
]
}
}
]
}
A política de chave do AWS KMS na Conta A deve conceder acesso ao usuário na Conta B
A política de chave do AWS KMS deve conceder ao usuário na Conta B permissões para a ação kms:Decrypt. Por exemplo, para conceder acesso à chave a apenas um usuário ou perfil do IAM, use uma política de chaves semelhante à seguinte:
{
"Sid": "Allow use of the key",
"Effect": "Allow",
"Principal": {
"AWS": [
"arn:aws:iam::111122223333:role/role_name"
]
},
"Action": [
"kms:Decrypt"
],
"Resource": "*"
}
Na Conta A, analise a política de chave usando a visualização de políticas do Console de Gerenciamento da AWS. Na política de chaves, encontre “Sid”: “Permitir o uso da chave”. Em seguida, confirme se o usuário na Conta B está listado como entidade principal nessa declaração.
Se você não vir a declaração “Sid”: “Permitir o uso da chave” e, em seguida, use a visualização padrão do Console de Gerenciamento da AWS para revisar a política de chaves. Em seguida, adicione o ID da Conta B como uma conta externa com acesso à chave.
A política de usuário do IAM na Conta B deve conceder ao usuário acesso ao bucket e à chave na Conta A
Na Conta B, conclua as seguintes etapas:
- Abra o console do IAM.
- Abra o usuário ou perfil do IAM associado ao usuário na Conta B.
- Analise a lista de políticas de permissões que são aplicadas ao usuário ou ao perfil do IAM.
- Verifique se há políticas aplicadas que concedem acesso ao bucket e à chave.
Observação: se o usuário ou perfil do IAM na Conta B já tiver acesso de administrador, você não precisará conceder acesso à chave. O exemplo de política a seguir concede ao usuário do IAM na Conta B acesso a objetos e à chave do KMS em um bucket:
{
"Version": "2012-10-17",
"Statement": [{
"Sid": "ExampleStmt1",
"Action": [
"s3:GetObject"
],
"Effect": "Allow",
"Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*"
},
{
"Sid": "ExampleStmt2",
"Action": [
"kms:Decrypt"
],
"Effect": "Allow",
"Resource": "arn:aws:kms:us-west-2:444455556666:key/1234abcd-12ab-34cd-56ef-1234567890ab"
}
]
}
Para obter mais informações sobre como adicionar ou corrigir as permissões do usuário do IAM, consulte Alteração de permissões para um usuário do IAM.
Informações relacionadas
Gerador de políticas da AWS