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

Concesión de permisos para Operaciones por lotes

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 el permiso iam:PassRole para transferir el rol de AWS Identity and Access Management (IAM) especificado para el trabajo a 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 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.

Para obtener más información sobre los permisos para las operaciones de la API de S3 por tipos de recursos de S3, consulte Permisos necesarios para las operaciones de la API de Amazon S3.

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, la 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.

  • Si el trabajo de Operaciones por lotes genera un manifiesto en un bucket que tiene las listas de control de acceso (ACL) habilitadas y se encuentra en una Cuenta de AWS diferente, debe conceder el permiso s3:PutObjectAcl en la política de IAM del rol de IAM configurado para el trabajo por lotes. Si no incluye este permiso, el trabajo por lotes no se realiza y genera el error Error occurred when preparing manifest: Failed to write manifest.

Copia de 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/*" ] } ] }

Sustitución del etiquetado 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/*" ] } ] }

Eliminación del etiquetado 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/*" ] } ] }

Sustitución de la lista de control de acceso: 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/*" ] } ] }

Restauración de 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/*" ] } ] }

Aplicación de retención de Bloqueo 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/*" ] } ] }

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 Operaciones por lotes para replicar objetos existentes, consulte Replicación de objetos existentes con Replicación por lotes.

{ "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/*" ] } ] }

Replicación de objetos existentes: InitiateReplication con un manifiesto del usuario

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

{ "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/*" ] } ] }