Eu quero fazer o carregamento de um arquivo grande para um bucket do Amazon Simple Storage Service (Amazon S3). Na minha solicitação de carregamento, incluí informações de criptografia com uma chave do AWS Key Management Service (AWS KMS). No entanto, recebo um erro de acesso negado.
Breve descrição
Confirme se você tem permissão para realizar ações kms:Decrypt na chave do AWS KMS usada para criptografar o objeto.
Para arquivos grandes, comandos aws s3 de alto nível com a AWS Command Line Interface (AWS CLI), SDKs da AWS e muitos programas de terceiros realizam automaticamente um carregamento fracionado. Para usar uma chave do AWS KMS para criptografar um carregamento fracionado, você deve ter permissões kms:GenerateDataKey e kms:Decrypt. As permissões kms:GenerateDataKey permitem que você inicie o carregamento. A permissão kms:Decrypt permite criptografar partes recém-carregadas com a chave usada nas partes anteriores do mesmo objeto.
Observação: para realizar um upload de várias partes com criptografia usando uma chave do AWS KMS, você deve ter o seguinte:
- Permissão para as ações kms:Decrypt e kms:GenerateDataKey na chave.
- Permissões para a ação kms:GenerateDataKey para a API CreateMultipartUpload.
- Permissões para a ação kms:Decrypt nas APIs UploadPart e UploadPartCopy. Essas permissões são necessárias porque o Amazon S3 deve descriptografar e ler os dados das partes do arquivo criptografado antes que o upload de várias partes seja concluído.
Se seu usuário ou função do AWS Identity and Access Management (IAM) estiver na mesma conta da AWS que a chave KMS, você deverá ter essas permissões na política de chave. Se seu usuário ou função do IAM pertencer a uma conta diferente da chave KMS, você deverá ter as permissões na política de chave e no seu usuário ou função do IAM.
Resolução
Política de chave
Analise a política de chave do AWS KMS na exibição da política do Console de Gerenciamento da AWS.
Na política de chave, pesquise declarações em que o Amazon Resource Number (ARN) do seu usuário ou perfil do IAM esteja listado como entidade principal da AWS. O ARN está no seguinte formato: arn:aws:iam::111122223333:user/john.
Em seguida, verifique a lista de ações que suas declarações de perfil ou usuário do IAM permitem. Para carregamentos fracionados, a lista de ações permitidas deve incluir kms:Decrypt com SSE-KMS.
Por exemplo, a seguinte declaração em uma política de chave permite que o usuário John execute as ações kms:Decrypt e kms:GenerateDataKey:
{
"Sid": "Allow use of the key",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::111122223333:user/john"
},
"Action": [
"kms:Decrypt",
"kms:GenerateDataKey"
],
"Resource": "*"
}
Permissões do IAM
Para revisar suas permissões do IAM, abra o console do IAM e, em seguida, selecione seu usuário ou perfil do IAM.
Analise a lista de políticas de permissões que se aplicam ao seu usuário ou perfil do IAM. Certifique-se de que haja uma política aplicada que permita a você executar a ação kms:Decrypt na chave usada para criptografar o objeto:
{
"Version": "2012-10-17",
"Statement": {
"Effect": "Allow",
"Action": [
"kms:Decrypt",
"kms:GenerateDataKey"
],
"Resource": [
"arn:aws:kms:example-region-1:123456789098:key/111aa2bb-333c-4d44-5555-a111bb2c33dd"
]
}
}
O exemplo de declaração concede ao usuário do IAM acesso para executar kms:Decrypt e kms:GenerateDataKey na chave arn:aws:kms:example-region-1:123456789098:key/111aa2bb-333c-4d44-5555-a111bb2c33dd.
Para obter instruções sobre como atualizar suas permissões do IAM, consulte Alterar as permissões para um usuário do IAM.
Informações relacionadas
Gerador de políticas da AWS
Criptografia de dados no Amazon S3