Concesión de permisos para Operaciones por lotes de S3 - Amazon Simple Storage Service

Concesión de permisos para Operaciones por lotes de S3

Antes de crear y ejecutar trabajos de operaciones por lotes de S3, debe conceder los permisos necesarios. Para crear un trabajo de operaciones por lotes de Amazon S3 se requiere el permiso del usuario s3:CreateJob. La misma entidad que crea el trabajo también debe tener permiso iam:PassRole para transferir el rol de AWS Identity and Access Management (IAM) especificado para el trabajo a la herramienta de operaciones por lotes.

Para obtener información general acerca de cómo especificar recursos de IAM, consulte Elementos de la política de JSON de IAM: Resource en la Guía del usuario de IAM. En las siguientes secciones se proporciona información sobre cómo crear un rol de IAM y cómo adjuntar las políticas.

Creación de un rol de IAM de Operaciones por lotes de S3

Amazon S3 debe tener permisos para poder realizar operaciones por lotes de S3 en su nombre. Estos permisos se conceden a través de un rol de AWS Identity and Access Management (IAM). Esta sección proporciona ejemplos de las políticas de confianza y de permisos que se utilizan al crear un rol de IAM. Para obtener más información, consulte Roles de IAM en la Guía del usuario de IAM. Para ver ejemplos, consulte Control de permisos para Operaciones por lotes de S3 mediante etiquetas de trabajo y Copia de objetos mediante operaciones por lotes de S3.

En las políticas de IAM también puede utilizar claves de condición para filtrar permisos de acceso para trabajos de Operaciones por lotes de S3. Para obtener más información y una lista completa de las claves de condición específicas de Amazon S3, consulte Actions, resources, and condition keys for Amazon S3 en la Referencia de autorización de servicios.

En el siguiente video, se muestra cómo configurar permisos de IAM para trabajos de operaciones por lotes con la AWS Management Console.

Política de confianza

Para que la entidad principal del servicio Operaciones por lotes de S3 pueda asumir el rol de IAM debe asociar al rol la siguiente política de confianza.

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

Adjunción de políticas de permisos

En función del tipo de operaciones, puede asociar una de estas políticas.

Antes de configurar los permisos, tenga en cuenta lo siguiente:

  • Con independencia de la operación que realice, Amazon S3 necesita permisos para leer el objeto del manifiesto del bucket de S3 y, de forma opcional, escribir un informe en el bucket. Por lo tanto, todas las políticas que se indican a continuación contienen estos permisos.

  • Para los manifiestos de informes de Amazon S3 Inventory, S3 Batch Operations requiere permiso para leer el objeto manifest.json y todos los archivos de datos CSV asociados.

  • Los permisos específicos de las versiones como s3:GetObjectVersion solo son obligatorios cuando especifica el ID de la versión de los objetos.

  • Si ejecuta la herramienta de operaciones por lotes de S3 en objetos cifrados, el rol de IAM también debe tener acceso a las claves de AWS KMS utilizadas para cifrarlos.

  • Si envía un manifiesto de informe de inventario cifrado con AWS KMS, su política de IAM debe incluir los permisos "kms:Decrypt" y "kms:GenerateDataKey" para el objeto manifest.json y todos los archivos de datos CSV asociados.

Copiar objetos: PutObject

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "s3:PutObject", "s3:PutObjectAcl", "s3:PutObjectTagging" ], "Effect": "Allow", "Resource": "arn:aws:s3:::DestinationBucket/*" }, { "Action": [ "s3:GetObject", "s3:GetObjectAcl", "s3:GetObjectTagging", "s3:ListBucket" ], "Effect": "Allow", "Resource": [ "arn:aws:s3:::SourceBucket", "arn:aws:s3:::SourceBucket/*" ] }, { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:GetObjectVersion" ], "Resource": [ "arn:aws:s3:::ManifestBucket/*" ] }, { "Effect": "Allow", "Action": [ "s3:PutObject" ], "Resource": [ "arn:aws:s3:::ReportBucket/*" ] } ] }

Reemplazar el etiquetado de objetos: PutObjectTagging

{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "s3:PutObjectTagging", "s3:PutObjectVersionTagging" ], "Resource": "arn:aws:s3:::TargetResource/*" }, { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:GetObjectVersion" ], "Resource": [ "arn:aws:s3:::ManifestBucket/*" ] }, { "Effect":"Allow", "Action":[ "s3:PutObject" ], "Resource":[ "arn:aws:s3:::ReportBucket/*" ] } ] }

Eliminar etiquetado de objetos: DeleteObjectTagging

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:DeleteObjectTagging", "s3:DeleteObjectVersionTagging" ], "Resource": [ "arn:aws:s3:::TargetResource/*" ] }, { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:GetObjectVersion" ], "Resource": [ "arn:aws:s3:::ManifestBucket/*" ] }, { "Effect": "Allow", "Action": [ "s3:PutObject" ], "Resource": [ "arn:aws:s3:::ReportBucket/*" ] } ] }

Reemplazar lista de control de acceso: PutObjectACL

{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "s3:PutObjectAcl", "s3:PutObjectVersionAcl" ], "Resource": "arn:aws:s3:::TargetResource/*" }, { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:GetObjectVersion" ], "Resource": [ "arn:aws:s3:::ManifestBucket/*" ] }, { "Effect":"Allow", "Action":[ "s3:PutObject" ], "Resource":[ "arn:aws:s3:::ReportBucket/*" ] } ] }

Restaurar objetos: RestoreObject

{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "s3:RestoreObject" ], "Resource": "arn:aws:s3:::TargetResource/*" }, { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:GetObjectVersion" ], "Resource": [ "arn:aws:s3:::ManifestBucket/*" ] }, { "Effect":"Allow", "Action":[ "s3:PutObject" ], "Resource":[ "arn:aws:s3:::ReportBucket/*" ] } ] }

Aplicar retención de bloqueo de objetos: PutObjectRetention

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:GetBucketObjectLockConfiguration", "Resource": [ "arn:aws:s3:::TargetResource" ] }, { "Effect": "Allow", "Action": [ "s3:PutObjectRetention", "s3:BypassGovernanceRetention" ], "Resource": [ "arn:aws:s3:::TargetResource/*" ] }, { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:GetObjectVersion" ], "Resource": [ "arn:aws:s3:::ManifestBucket/*" ] }, { "Effect": "Allow", "Action": [ "s3:PutObject" ], "Resource": [ "arn:aws:s3:::ReportBucket/*" ] } ] }
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:GetBucketObjectLockConfiguration", "Resource": [ "arn:aws:s3:::TargetResource" ] }, { "Effect": "Allow", "Action": "s3:PutObjectLegalHold", "Resource": [ "arn:aws:s3:::TargetResource/*" ] }, { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:GetObjectVersion" ], "Resource": [ "arn:aws:s3:::ManifestBucket/*" ] }, { "Effect": "Allow", "Action": [ "s3:PutObject" ], "Resource": [ "arn:aws:s3:::ReportBucket/*" ] } ] }

Replicación de objetos existentes: InitiateReplication con un manifiesto generado por S3

Utilice esta política si utiliza y almacena un manifiesto generado por S3. Para obtener más información sobre cómo utilizar las operaciones por lotes para replicar objetos existentes, consulte Replicación de objetos existentes con replicación por lotes de S3.

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

Replicar objetos existentes: InitiateReplication con un manifiesto del usuario

Utilice esta política si utiliza un manifiesto que proporciona el usuario. Para obtener más información sobre cómo utilizar las operaciones por lotes para replicar objetos existentes, consulte Replicación de objetos existentes con replicación por lotes de S3.

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