Conceder permissões para operações em lote - Amazon Simple Storage Service

Conceder permissões para operações em lote

Antes de criar e executar trabalhos do S3 Batch Operations, você deve conceder as permissões necessárias. Para criar um trabalho do Amazon S3 Batch Operations, a permissão de usuário s3:CreateJob é necessária. A mesma entidade que cria o trabalho também deve ter a permissão iam:PassRole para passar o perfil do AWS Identity and Access Management (IAM) especificado para o trabalho ao Operações em Lote.

Para obter informações gerais sobre como especificar recursos do IAM, consulte Elementos de política JSON do IAM: Resource no Guia do usuário do IAM. As seções a seguir fornecem informações sobre como criar uma função do IAM e anexar políticas.

Criar uma função do IAM das operações em lote do S3

O Amazon S3 deve ter permissão para executar o S3 Batch Operations em seu nome. Conceda essas permissões por meio de uma função do AWS Identity and Access Management (IAM). Esta seção fornece exemplos das políticas de permissões e confiança usadas ao criar uma função do IAM. Para obter mais informações, consulte Funções do IAM no Guia do usuário do IAM. Veja exemplos em Controlar permissões para o Operações em Lote usando tags de trabalho e Copiar objetos usando o S3 Batch Operations.

Em suas políticas do IAM, você também pode usar chaves de condição para filtrar permissões de acesso para trabalhos de operações em lote do S3. Consulte mais informações e uma lista completa das chaves de condição específicas do Amazon S3 em Actions, resources, and condition keys for Amazon S3 na Referência de autorização do serviço.

Para ter mais informações sobre as permissões referentes a operações de API do S3 de acordo com os tipos de recurso do S3, consulte Permissões obrigatórias para operações de API do Amazon S3.

O vídeo a seguir inclui como configurar permissões do IAM para trabalhos de operações em lote usando o AWS Management Console.

Política de confiança

Para permitir que o principal do serviço de operações em lote do S3 assuma a função do IAM, anexe a política de confiança a seguir à função.

{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Principal":{ "Service":"batchoperations.s3.amazonaws.com" }, "Action":"sts:AssumeRole" } ] }

Anexar políticas de permissões

Dependendo do tipo de operação, é possível anexar uma das seguintes políticas:

Antes de configurar as permissões, observe o seguinte:

  • Independentemente da operação, o Amazon S3 precisa de permissão para ler o objeto do manifesto no seu bucket do S3 e, opcionalmente, gerar um relatório para o bucket. Portanto, todas as políticas a seguir incluem essas permissões.

  • Para manifestos de relatório do Amazon S3 Inventory, as operações em lote do S3 necessitam de permissão de leitura para o objeto manifest.json e todos os arquivos de dados CSV associados.

  • Permissões específicas da versão, como s3:GetObjectVersion, somente são necessárias ao especificar o ID de versão dos objetos.

  • Se você estiver executando o S3 Batch Operations em objetos criptografados, a função do IAM também deverá ter acesso às chaves do AWS KMS usadas para criptografá-las.

  • Se você enviar um manifesto de relatório de inventário criptografado com o AWS KMS, a política do IAM deverá incluir as permissões "kms:Decrypt" e "kms:GenerateDataKey" para o objeto manifest.json e todos os arquivos de dados CSV associados.

  • Se o trabalho de operações em lote gerar um manifesto em um bucket com listas de controle de acesso (ACLs) habilitadas e estiver em outra Conta da AWS, você deverá conceder a permissão s3:PutObjectAcl na política do IAM do perfil do IAM configurado para o trabalho em lote. Se você não incluir essa permissão, o trabalho em lote falhará com o erro Error occurred when preparing manifest: Failed to write manifest.

Copiar objetos: PutObject

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "s3:PutObject", "s3:PutObjectAcl", "s3:PutObjectTagging" ], "Effect": "Allow", "Resource": "arn:aws:s3:::amzn-s3-demo-destination-bucket/*" }, { "Action": [ "s3:GetObject", "s3:GetObjectAcl", "s3:GetObjectTagging", "s3:ListBucket" ], "Effect": "Allow", "Resource": [ "arn:aws:s3:::amzn-s3-demo-source-bucket", "arn:aws:s3:::amzn-s3-demo-source-bucket/*" ] }, { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:GetObjectVersion" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-manifest-bucket/*" ] }, { "Effect": "Allow", "Action": [ "s3:PutObject" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-completion-report-bucket/*" ] } ] }

Substituir a marcação de objetos: PutObjectTagging

{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "s3:PutObjectTagging", "s3:PutObjectVersionTagging" ], "Resource": "arn:aws:s3:::amzn-s3-demo-destination-bucket/*" }, { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:GetObjectVersion" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-manifest-bucket/*" ] }, { "Effect":"Allow", "Action":[ "s3:PutObject" ], "Resource":[ "arn:aws:s3:::amzn-s3-demo-completion-report-bucket/*" ] } ] }

Excluir a marcação de objetos: DeleteObjectTagging

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:DeleteObjectTagging", "s3:DeleteObjectVersionTagging" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-destination-bucket/*" ] }, { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:GetObjectVersion" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-manifest-bucket/*" ] }, { "Effect": "Allow", "Action": [ "s3:PutObject" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-completion-report-bucket/*" ] } ] }

Substituir a lista de controle de acesso: PutObjectAcl

{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "s3:PutObjectAcl", "s3:PutObjectVersionAcl" ], "Resource": "arn:aws:s3:::amzn-s3-demo-destination-bucket/*" }, { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:GetObjectVersion" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-manifest-bucket/*" ] }, { "Effect":"Allow", "Action":[ "s3:PutObject" ], "Resource":[ "arn:aws:s3:::amzn-s3-demo-completion-report-bucket/*" ] } ] }

Restaurar objetos: RestoreObject

{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "s3:RestoreObject" ], "Resource": "arn:aws:s3:::amzn-s3-demo-destination-bucket/*" }, { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:GetObjectVersion" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-manifest-bucket/*" ] }, { "Effect":"Allow", "Action":[ "s3:PutObject" ], "Resource":[ "arn:aws:s3:::amzn-s3-demo-completion-report-bucket/*" ] } ] }

Aplicar retenção do Bloqueio de Objetos: PutObjectRetention

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:GetBucketObjectLockConfiguration", "Resource": [ "arn:aws:s3:::amzn-s3-demo-destination-bucket" ] }, { "Effect": "Allow", "Action": [ "s3:PutObjectRetention", "s3:BypassGovernanceRetention" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-destination-bucket/*" ] }, { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:GetObjectVersion" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-manifest-bucket/*" ] }, { "Effect": "Allow", "Action": [ "s3:PutObject" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-completion-report-bucket/*" ] } ] }
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:GetBucketObjectLockConfiguration", "Resource": [ "arn:aws:s3:::amzn-s3-demo-destination-bucket" ] }, { "Effect": "Allow", "Action": "s3:PutObjectLegalHold", "Resource": [ "arn:aws:s3:::amzn-s3-demo-destination-bucket/*" ] }, { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:GetObjectVersion" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-manifest-bucket/*" ] }, { "Effect": "Allow", "Action": [ "s3:PutObject" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-completion-report-bucket/*" ] } ] }

Replicar objetos existentes: InitiateReplication com um manifesto gerado pelo S3

Use essa política se estiver usando e armazenando um manifesto gerado pelo S3. Consulte mais informações sobre o uso de operações em lote para replicação de objetos existentes em Replicar objetos existentes com o Replicação em Lote.

{ "Version":"2012-10-17", "Statement":[ { "Action":[ "s3:InitiateReplication" ], "Effect":"Allow", "Resource":[ "arn:aws:s3:::amzn-s3-demo-source-bucket/*" ] }, { "Action":[ "s3:GetReplicationConfiguration", "s3:PutInventoryConfiguration" ], "Effect":"Allow", "Resource":[ "arn:aws:s3:::amzn-s3-demo-source-bucket" ] }, { "Action":[ "s3:GetObject", "s3:GetObjectVersion" ], "Effect":"Allow", "Resource":[ "arn:aws:s3:::amzn-s3-demo-manifest-bucket/*" ] }, { "Effect":"Allow", "Action":[ "s3:PutObject" ], "Resource":[ "arn:aws:s3:::amzn-s3-demo-completion-report-bucket/*", "arn:aws:s3:::amzn-s3-demo-manifest-bucket/*" ] } ] }

Replicar objetos existentes: InitiateReplication com um manifesto do usuário

Use essa política se estiver usando um manifesto fornecido pelo usuário. Consulte mais informações sobre o uso de Operações em Lote para replicação de objetos existentes em Replicar objetos existentes com o Replicação em Lote.

{ "Version":"2012-10-17", "Statement":[ { "Action":[ "s3:InitiateReplication" ], "Effect":"Allow", "Resource":[ "arn:aws:s3:::amzn-s3-demo-source-bucket/*" ] }, { "Action":[ "s3:GetObject", "s3:GetObjectVersion" ], "Effect":"Allow", "Resource":[ "arn:aws:s3:::amzn-s3-demo-manifest-bucket/*" ] }, { "Effect":"Allow", "Action":[ "s3:PutObject" ], "Resource":[ "arn:aws:s3:::amzn-s3-demo-completion-report-bucket/*" ] } ] }