Ir para o conteúdo

Por que estou recebendo o erro “O texto cifrado se refere a uma chave mestra do cliente que não existe, não existe nesta região ou que você não tem permissão para acessar” quando baixo ou copio um objeto do meu bucket do Amazon S3?

3 minuto de leitura
0

Estou recebendo o seguinte erro ao tentar baixar ou copiar um objeto do meu bucket do Amazon Simple Storage Service (Amazon S3): O texto cifrado se refere a uma chave mestra do cliente que não existe, não existe nesta região ou que você não tem permissão para acessar.

Solução

Você recebe esse erro quando as duas condições a seguir são verdadeiras:

  • O objeto armazenado no bucket para o qual você está fazendo solicitações está criptografado com uma chave do AWS Key Management Service (AWS KMS).
  • A função ou usuário do AWS Identity and Access Management (IAM) que está fazendo as solicitações não tem permissões suficientes para acessar a chave do AWS KMS usada para criptografar os objetos.

Observação: se você receber erros ao executar comandos da AWS Command Line Interface (AWS CLI), verifique se está usando a versão mais recente da AWS CLI.

Você pode verificar a criptografia em um objeto usando o comando head-object da AWS CLI:

aws s3api head-object --bucket my-bucket --key my-object

Não deixe de fazer o seguinte com o comando anterior:

  • Substitua my-bucket pelo nome do seu bucket.
  • Substitua my-object pelo nome do seu objeto.

A saída desse comando tem a seguinte aparência:

{
  "AcceptRanges": "bytes",
  "ContentType": "text/html",
  "LastModified": "Thu, 16 Apr 2015 18:19:14 GMT",
  "ContentLength": 77,
  "VersionId": "null",
  "ETag": "\"30a6ec7e1a9ad79c203d05a589c8b400\"",
  "ServerSideEncryption": "aws:kms",
  "Metadata": {},
  "SSEKMSKeyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab",
  "BucketKeyEnabled": true
}

O campo SSEKMSKeyId da saída especifica a chave do AWS KMS que foi usada para criptografar o objeto.

Para resolver esse erro, faça o seguinte:

  • Certifique-se de que a política anexada ao usuário ou à função do IAM tenha as permissões necessárias. Exemplo:
{
  "Version": "2012-10-17",
  "Statement": {
    "Effect": "Allow",
    "Action": [
      "kms:DescribeKey",
      "kms:GenerateDataKey",
      "kms:Decrypt"
    ],
    "Resource": [
      "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab"
    ]
  }
}
  • Certifique-se de que a política do AWS KMS tenha as permissões necessárias. Exemplo:
{
  "Version": "2012-10-17",
  "Statement": {
    "Effect": "Allow",
    "Principal": {
      "AWS": "arn:aws:iam::AWS-account-ID:user/user-name-1"
    },
    "Action": [
      "kms:DescribeKey",
      "kms:GenerateDataKey",
      "kms:Decrypt"
    ],
    "Resource": "*"
  }
}

Se o usuário ou a função do IAM e a chave do AWS KMS forem de contas da AWS diferentes, verifique se:

  • A política anexada à entidade do IAM tem as permissões do AWS KMS necessárias.
  • A política de chave do AWS KMS concede as permissões necessárias à entidade do IAM.

Importante: você não pode usar as chaves gerenciadas pela AWS em casos de uso entre contas porque não é possível modificar as políticas de chaves gerenciadas pela AWS.

Para obter informações detalhadas sobre uma chave do AWS KMS, execute o comando describe-key:

aws kms describe-key --key-id arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab

Você também pode usar o console do AWS KMS para ver detalhes de uma chave do AWS KMS.

Observação: certifique-se de que a chave do AWS KMS usada para criptografar o objeto esteja habilitada.

Informações relacionadas

Meu bucket do Amazon S3 tem criptografia padrão usando uma chave personalizada do AWS KMS. Como posso permitir que os usuários façam download e upload para o bucket?

Preciso especificar a chave do AWS KMS quando faço download de um objeto do Amazon S3 criptografado pelo KMS?

AWS OFICIALAtualizada há 3 anos
Sem comentários