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?
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
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
Vídeos relacionados
Conteúdo relevante
- AWS OFICIALAtualizada há um ano