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

3 minuto de leitura
0

Quero baixar objetos armazenados do Amazon Simple Storage Service (Amazon S3) que usam criptografia no lado do servidor com chaves gerenciadas pelo AWS Key Management Service (SSE-KMS).

Resolução

Você não precisa especificar o ID da chave do AWS Key Management Service (AWS KMS) ao baixar um objeto criptografado com SSE-KMS de um bucket do S3. Em vez disso, você precisa da permissão para decifrar a chave do AWS KMS.

Quando um usuário envia uma solicitação GET, o Amazon S3 deve verificar a autorização apropriada. O Amazon S3 verifica se o usuário ou função do AWS Identity and Access Management (IAM) que enviou a solicitação está autorizado a descriptografar a chave do objeto. Se o usuário ou o perfil do IAM e a chave pertencerem à mesma conta da AWS, as permissões de descriptografia devem ser concedidas na política de chaves.

Observação: Quando o usuário ou o perfil do IAM e a chave do KMS estão na mesma conta, você pode usar as políticas do IAM para controlar o acesso à chave. No entanto, você deve modificar a política de chaves para ativar explicitamente as políticas do IAM para permitir o acesso à chave. Para obter mais informações, consulte Uso de políticas do IAM com o AWS KMS.

Se o usuário ou a função e a chave do IAM pertencerem a contas diferentes, você precisará conceder permissões de decodificação na política do usuário do IAM e na política da chave.

A seguir está um exemplo de política do IAM que permite ao usuário decodificar a chave do AWS KMS e também baixar o bucket do S3:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "VisualEditor0",
      "Effect": "Allow",
      "Action": [
        "kms:Decrypt",
        "s3:GetObject"
      ],
      "Resource": [
        "arn:aws:kms:example-region-1:123456789012:key/example-key-id",
        "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*"
      ]
    }
  ]
}

Veja a seguir um exemplo de declaração de política de chaves que permite ao usuário decifrar a chave:

{
  "Sid": "Allow decryption of the key",
  "Effect": "Allow",
  "Principal": {
    "AWS": [
      "arn:aws:iam::123456789012:user/Bob"
    ]
  },
  "Action": [
    "kms:Decrypt"
  ],
  "Resource": "*"
}

Observação: para usuários ou perfis do IAM que pertencem a uma conta diferente do bucket, a política de bucket também deve conceder acesso aos objetos para os usuários. Por exemplo, se o usuário precisar baixar o bucket, ele deverá ter permissão para a ação s3:GetObject na política do bucket.

Depois de ter a permissão para decifrar a chave, você pode baixar objetos do S3 criptografados com a chave usando a AWS Command Line Interface (AWS CLI). Execute um comando semelhante ao seguinte:

aws s3api get-object --bucket DOC-EXAMPLE-BUCKET --key dir/example-object-name example-object-name

Observação: se você receber erros ao executar os comandos da AWS CLI, utilize a versão mais recente da AWS CLI.

Informações relacionadas

GetObject

get-object

Proteger dados usando a criptografia no lado do servidor com CMKs armazenadas no AWS Key Management Service (SSE-KMS)

AWS OFICIAL
AWS OFICIALAtualizada há um ano