Ir para o conteúdo

Por que não consigo fazer o upload de um arquivo grande para o Amazon S3 com a criptografia de chave do AWS KMS?

3 minuto de leitura
0

Eu quero fazer o upload de um arquivo grande para meu bucket do Amazon Simple Storage Service (Amazon S3). Na minha solicitação de upload, 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.

Em 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 upload multiparte. Para usar uma chave do AWS KMS para criptografar um upload multiparte, você deve ter permissões kms:GenerateDataKey e kms:Decrypt. A permissão kms:GenerateDataKey permite que você inicie o upload. 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 multiparte 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 multiparte seja concluído.

Se seu usuário ou perfil do AWS Identity and Access Management (AWS IAM) estiver na mesma conta da AWS que a chave do KMS, você deve ter essas permissões na política de chave. Se seu usuário ou perfil do IAM pertencer a uma conta diferente da chave do KMS, você deve ter as permissões na política de chave e no seu usuário ou perfil 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 instruções em que o número de recurso da Amazon (ARN) do seu usuário ou perfil do IAM esteja listado como uma 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 instruções de perfil ou usuário do IAM permitem. Para uploads multiparte, 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 verificar 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ê realizar 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 permissões de um usuário do IAM.

Informações relacionadas

AWS Policy Generator (Gerador de políticas da AWS)

Data encryption in Amazon S3 (Criptografia de dados no Amazon S3)

AWS OFICIALAtualizada há 2 anos