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

5 minuto de leitura
0

Eu configurei meu bucket do Amazon Simple Storage Service (Amazon S3) para usar a criptografia padrão com uma chave personalizada do AWS Key Management Service (AWS KMS). Quero que um usuário do AWS Identity and Access Management (IAM) possa fazer o download pelo bucket e fazer upload para o bucket. Como posso fazer isso?

Resolução

O usuário do IAM e a chave do AWS KMS pertencem à mesma conta da AWS

1.    Abra o console do AWS KMS e, em seguida, visualize o documento da política de chave usando a visualização da política. Modifique a política de chave para conceder ao usuário do IAM permissões no mínimo para as ações kms:GenerateDataKey e kms:Decrypt. Você pode adicionar uma declaração como a seguinte:

{
  "Sid": "ExampleStmt",
  "Action": [
    "kms:Decrypt",
    "kms:GenerateDataKey"
  ],
  "Effect": "Allow",
  "Principal": {
    "AWS": "arn:aws:iam::111122223333:user/Jane"
  },
  "Resource": "*"
}

Observação: este exemplo de política inclui somente as permissões mínimas necessárias para que um usuário individual do IAM faça o download e o upload em um bucket criptografado do S3. Você pode modificar ou expandir as permissões com base no seu caso de uso.

2.    Abra o console do IAM. Adicione uma política ao usuário do IAM que conceda as permissões de upload e download a partir do bucket. Você pode usar uma política semelhante à seguinte:

Observação: no valor Recurso, insira o nome do recurso da Amazon (ARN) para o bucket com um caractere curinga para indicar os objetos no bucket.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "ExampleStmt",
      "Action": [
        "s3:GetObject",
        "s3:PutObject"
      ],
      "Effect": "Allow",
      "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*"
    }
  ]
}

Importante: as permissões do S3 concedidas pela política de usuário do IAM podem ser bloqueadas por uma declaração de negação explícita na política de bucket. Não deixe de revisar a política de bucket para confirmar que não há nenhuma declaração de negação explícita que entre em conflito com a política de usuário do IAM.

O usuário do IAM está em uma conta diferente da chave do AWS KMS e do bucket do S3

Importante: você pode conceder acesso entre contas para uma chave do AWS KMS gerenciada pelo cliente, mas não para uma chave do AWS KMS gerenciada pela AWS. A política de chaves de uma chave do AWS KMS gerenciada pela AWS não pode ser modificada.

1.    Abra o console do AWS KMS e, em seguida, visualize o documento da política de chave usando a visualização da política. Modifique a política de chave para conceder ao usuário do IAM permissões no mínimo para as ações kms:GenerateDataKey e kms:Decrypt. Você pode adicionar uma declaração semelhante à seguinte:

{
  "Sid": "ExampleStmt",
  "Action": [
    "kms:Decrypt",
    "kms:GenerateDataKey"
  ],
  "Effect": "Allow",
  "Principal": {
    "AWS": "arn:aws:iam::111122223333:user/Jane"
  },
  "Resource": "*"
}

Observação: este exemplo de política inclui somente as permissões mínimas necessárias para que um usuário individual do IAM faça o download e o upload em um bucket criptografado do S3. Você pode modificar ou expandir as permissões com base no seu caso de uso.

2.    Abra o console do IAM a partir da conta à qual o usuário do IAM pertence. Adicione uma política ao usuário do IAM que conceda as permissões de upload e download a partir do bucket. A política também deve funcionar com a chave do AWS KMS associada ao bucket.

Para cenários entre contas, considere conceder permissões s3:PutObjectAcl para que o usuário do IAM possa carregar um objeto. Em seguida, conceda à conta do bucket o controle total do objeto (bucket-owner-full-control). Além disso, considere conceder permissões s3:ListBucket, que são necessárias para executar uma operação de sincronização ou uma operação de cópia recursiva. Você pode usar uma política semelhante à seguinte:

Observação: No primeiro valor Recurso, insira o ARN do bucket com um caractere curinga para indicar os objetos no bucket. No segundo valor Recurso, insira o ARN do bucket. No terceiro valor Recurso, insira o ARN da chave do AWS KMS.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "DownloadandUpload",
      "Action": [
        "s3:GetObject",
        "s3:GetObjectVersion",
        "s3:PutObject",
        "s3:PutObjectAcl"
      ],
      "Effect": "Allow",
      "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*"
    },
    {
      "Sid": "ListBucket",
      "Action": [
        "s3:ListBucket"
      ],
      "Effect": "Allow",
      "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET"
    },
    {
      "Sid": "KMSAccess",
      "Action": [
        "kms:Decrypt",
        "kms:GenerateDataKey"
      ],
      "Effect": "Allow",
      "Resource": "arn:aws:kms:example-region-1:123456789098:key/111aa2bb-333c-4d44-5555-a111bb2c33dd"
    }
  ]
}

3.    Abra o console do Amazon S3 a partir da conta que detém o bucket do S3. Atualize a política de bucket para conceder ao usuário do IAM acesso ao bucket. Você pode usar uma política como a seguinte:

Observação: Nos valores Entidade principal, insira o ARN do usuário do IAM. No primeiro valor Recurso, insira o ARN do bucket com um caractere curinga para indicar os objetos no bucket. No segundo valor Recurso, insira o ARN do bucket.

{
  "Id": "Policy1584399307003",
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "DownloadandUpload",
      "Action": [
        "s3:GetObject",
        "s3:GetObjectVersion",
        "s3:PutObject",
        "s3:PutObjectAcl"
      ],
      "Effect": "Allow",
      "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*",
      "Principal": {
        "AWS": [
          "arn:aws:iam::111122223333:user/Jane"
        ]
      }
    },
    {
      "Sid": "ListBucket",
      "Action": [
        "s3:ListBucket"
      ],
      "Effect": "Allow",
      "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET",
      "Principal": {
        "AWS": [
          "arn:aws:iam::111122223333:user/Jane"
        ]
      }
    }
  ]
}

Informações relacionadas

Edição de chaves

aws s3 cp

Uso de políticas do IAM com o AWS KMS

Amazon S3: Permite acesso de leitura e gravação a objetos em um bucket do S3

Desativação de ACLs para todos os novos buckets e imposição da propriedade do objeto

AWS OFICIAL
AWS OFICIALAtualizada há 2 anos