

# Actualización de cifrado de objetos
<a name="batch-ops-update-encryption"></a>

Puede utilizar Operaciones por lotes de Amazon S3 para realizar operaciones por lotes a gran escala en objetos de Amazon S3. La operación [https://docs.aws.amazon.com//AmazonS3/latest/API/API_control_UpdateObjectEncryptionOperation.html](https://docs.aws.amazon.com//AmazonS3/latest/API/API_control_UpdateObjectEncryptionOperation.html) de operaciones por lotes actualiza el tipo de cifrado del servidor de más de un objeto de Amazon S3 con una sola solicitud. Un solo trabajo de operación `UpdateObjectEncryption` puede admitir un manifiesto con hasta 20 000 millones de objetos.

La operación `UpdateObjectEncryption` es compatible con todas las clases de almacenamiento de Amazon S3 compatibles con los buckets de uso general. Puede usar la operación `UpdateObjectEncryption` para cambiar los objetos cifrados de [cifrado del servidor con claves administradas por Amazon S3 (SSE-S3)](https://docs.aws.amazon.com//AmazonS3/latest/userguide/UsingServerSideEncryption.html) a [claves de AWS Key Management Service (AWS KMS) (SSE-KMS)](https://docs.aws.amazon.com//AmazonS3/latest/userguide/UsingKMSEncryption.html) o aplicar las claves de bucket de S3. También puede usar la operación `UpdateObjectEncryption` para cambiar la clave de KMS administrada por el cliente que se usa para cifrar los datos, de modo que pueda cumplir con los estándares personalizados de rotación de claves.

 Cuando cree un trabajo de operaciones por lotes, puede generar una lista de objetos en función de la ubicación de origen y filtrar los criterios que especifique. Puede usar el filtro `MatchAnyObjectEncryption` para generar una lista de objetos del bucket que desee actualizar e incluir en el manifiesto. La lista de objetos generada incluye solo los objetos del bucket de origen con el tipo de cifrado del servidor indicado. Si selecciona SSE-KMS, también puede filtrar opcionalmente los resultados especificando el ARN de una clave de KMS específica y el estado habilitado de la clave del bucket. Para obtener más información, consulte [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_JobManifestGeneratorFilter.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_JobManifestGeneratorFilter.html) y [`SSEKMSFilter` en la *Referencia de la API de Amazon S3*](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_SSEKMSFilter.html).

## Restricciones y consideraciones
<a name="batch-ops-encrypt-object-restrictions"></a>

Al utilizar la operación `UpdateObjectEncryption` de operaciones por lotes, se aplican las siguientes restricciones y consideraciones:
+ La operación `UpdateObjectEncryption` no admite objetos que no estén cifrados u objetos que estén cifrados con cifrado del servidor de doble capa con AWS KMS keys (DSSE-KMS) o claves de cifrado proporcionadas por el cliente (SSE-C). Además, no puede especificar la solicitud de `UpdateObjectEncryption` de tipo de cifrado de SSE-S3.
+ Puede usar la operación `UpdateObjectEncryption` para actualizar objetos en buckets que tienen habilitado el control de versiones de S3. Para actualizar el tipo de cifrado de una versión concreta, debe especificar un ID de versión en la solicitud de `UpdateObjectEncryption`. Si no especifica el ID de versión, la solicitud de `UpdateObjectEncryption` actúa en la versión actual del objeto. Para obtener más información sobre el control de versiones de S3, consulte [Retención de varias versiones de objetos con Control de versiones de S3](Versioning.md).
+ La operación `UpdateObjectEncryption` produce un error en cualquier objeto al que se le aplique un modo de retención de Bloqueo de objetos de S3 o una retención legal. Si un objeto tiene un periodo de retención en modo de gobernanza o una retención legal, primero debe eliminar el estado de Bloqueo de objetos del objeto antes de emitir la solicitud de `UpdateObjectEncryption`. No puede usar la operación `UpdateObjectEncryption` con objetos a los que se les haya aplicado un periodo de retención del modo de cumplimiento de Bloqueo de objetos. Para obtener más información acerca de S3 Object Lock, consulte [Bloqueo de objetos mediante Bloqueo de objetos](object-lock.md).
+ Las solicitudes de `UpdateObjectEncryption` en los buckets de origen con la replicación en directo habilitada no iniciarán los eventos de réplica en el bucket de destino. Si desea cambiar el tipo de cifrado de los objetos en los buckets de origen y destino, debe iniciar solicitudes de `UpdateObjectEncryption` independientes en los objetos de los buckets de origen y destino.
+ De forma predeterminada, todas las solicitudes de `UpdateObjectEncryption` que especifican una clave de KMS administrada por el cliente están restringidas a las claves de KMS que son propiedad de la Cuenta de AWS del propietario del bucket. Si utiliza AWS Organizations, puede solicitar la posibilidad de utilizar AWS KMS keys si son propiedad de otras cuentas de miembros de la organización contactando con AWS Support.
+ Si usa la replicación por lotes de S3 para replicar conjuntos de datos entre regiones y los objetos anteriormente actualizaron el tipo de cifrado del servidor de SSE-S3 a SSE-KMS, es posible que necesite permisos adicionales. En el bucket de la región de origen, debe tener permisos `kms:decrypt`. A continuación, necesitará los permisos `kms:decrypt` y `kms:encrypt` para el bucket en la región de destino.
+ Proporcione un ARN de clave de KMS completo en la solicitud de `UpdateObjectEncryption`. No puede usar un nombre de alias o ARN de alias. Puede determinar el ARN de clave de KMS completo en la consola de AWS KMS o mediante la API de AWS KMS `DescribeKey`.

Para obtener más información acerca de `UpdateObjectEncryption`, consulte [Actualización de cifrado del servidor para los datos existentes](update-sse-encryption.md).

## Permisos necesarios
<a name="batch-ops-required-permissions"></a>

Para realizar la operación `UpdateObjectEncryption`, agregue la siguiente política de AWS Identity and Access Management (IAM) a la entidad principal de IAM (usuario, rol o grupo). Para usar esta política, sustituya *`amzn-s3-demo-bucket`* por el nombre del bucket que contiene los objetos para los que desea actualizar el cifrado. Sustituya `amzn-s3-demo-manifest-bucket` por el nombre del bucket que contiene el manifiesto y sustituya `amzn-s3-demo-completion-report-bucket` por el nombre del bucket en el que desea almacenar el informe de finalización.

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "S3BatchOperationsUpdateEncryption",
            "Effect": "Allow",
            "Action": [
                "s3:GetObject",
                "s3:GetObjectVersion",
                "s3:PutObject",
                "s3:UpdateObjectEncryption"
            ],
            "Resource": [
                 "arn:aws:s3:::amzn-s3-demo-bucket-target"
                "arn:aws:s3:::amzn-s3-demo-bucket-target-target/*"
            ]
        },
        {
            "Sid": "S3BatchOperationsPolicyForManifestFile",
            "Effect": "Allow",
            "Action": [
                "s3:PutObject",
                "s3:GetObject",
                "s3:GetObjectVersion"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-bucket-manifest/*"
            ]
        },
        {
            "Sid": "S3BatchOperationsPolicyForCompletionReport",
            "Effect": "Allow",
            "Action": [
                "s3:PutObject"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-bucket-completion-report/*"
            ]
        },
        {
            "Sid": "S3BatchOperationsPolicyManifestGeneration",
            "Effect": "Allow",
            "Action": [
                "s3:PutInventoryConfiguration"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-bucket-target"
            ]
        },
        {
            "Sid": "AllowKMSOperationsForS3BatchOperations",
            "Effect": "Allow",
            "Action": [
                "kms:Decrypt",
                "kms:GenerateDataKey",
                "kms:Encrypt",
                "kms:ReEncrypt*"
            ],
            "Resource": [                "arn:aws:kms:us-east-1:111122223333:key/01234567-89ab-cdef-0123-456789abcdef"
            ]
        }
    ]
}
```

Para ver la política de confianza y la política de permisos que debe adjuntar al rol de IAM que la entidad principal del servicio de operaciones por lotes de S3 asume para ejecutar los trabajos de operaciones por lotes en su nombre, consulte [Concesión de permisos para Operaciones por lotes](batch-ops-iam-role-policies.md) y [Actualización de cifrado de objetos](batch-ops-iam-role-policies.md#batch-ops-update-encryption-policies).

# Creación de un trabajo de operaciones por lotes para actualizar el cifrado de objetos
<a name="batch-ops-update"></a>

Para actualizar el tipo de cifrado del servidor de más de un objeto de Amazon S3 con una sola solicitud, puede usar operaciones por lotes de S3. Puede utilizar operaciones por lotes de S3 a través de la consola de Amazon S3, la AWS Command Line Interface (AWS CLI), los AWS SDK o la API de REST de Amazon S3.

## Uso de AWS CLI
<a name="batch-ops-example-cli-update-job"></a>

Para ejecutar los siguientes comandos, debe tener instalado y configurado la AWS CLI. Si aún no ha instalado la AWS CLI, consulte [Instalación o actualización de la última versión de la AWS CLI](https://docs.aws.amazon.com//cli/latest/userguide/getting-started-install.html) en la *Guía del usuario de la AWS Command Line Interface*.

De forma alternativa, puede ejecutar comandos de la AWS CLI desde la consola mediante AWS CloudShell. AWS CloudShell es un intérprete de comandos previamente autenticado y basado en el navegador que se puede lanzar directamente desde la Consola de administración de AWS. Para obtener más información, consulte [¿Qué es CloudShell?](https://docs.aws.amazon.com//cloudshell/latest/userguide/welcome.html) e [Introducción a AWS CloudShell](https://docs.aws.amazon.com//cloudshell/latest/userguide/getting-started.html) en la *Guía el usuario de AWS CloudShell*.

**Example 1: Crear un trabajo de operaciones por lotes que actualice los objetos cifrados de una AWS KMS key a otra clave de KMS**  
En el siguiente ejemplo, se muestra cómo crear un trabajo de operaciones por lotes de S3 que actualiza la configuración de cifrado para varios objetos en el bucket de uso general. Este comando crea un trabajo que cambia los objetos cifrados con una clave AWS Key Management Service (AWS KMS) para usar una clave de KMS diferente. Este trabajo también genera y guarda un manifiesto de los objetos afectados y crea un informe de los resultados. Para usar este comando, sustituya `user input placeholders` por su propia información.  

```
aws s3control create-job --account-id account-id \
--no-confirmation-required \
--operation '{"S3UpdateObjectEncryption": {  "ObjectEncryption": { "SSEKMS": { "KMSKeyArn": "KMS-key-ARN-to-apply", "BucketKeyEnabled": false  }  }  } }' \
--report '{ "Enabled": true, "Bucket": "report-bucket-ARN",  "Format": "Report_CSV_20180820", "Prefix": "report", "ReportScope": "AllTasks" }' \
--manifest-generator '{ "S3JobManifestGenerator": { "ExpectedBucketOwner": "account-id", "SourceBucket": "source-bucket-ARN", "EnableManifestOutput": true, "ManifestOutputLocation": { "Bucket": "manifest-bucket-ARN", "ManifestFormat": "S3InventoryReport_CSV_20211130", "ManifestPrefix": "manifest-prefix" }, "Filter": {   "MatchAnyObjectEncryption": [{ "SSEKMS": { "KmsKeyArn": "kms-key-ARN-to-match" } }] } } }' \
--priority 1 \
--role-arn batch-operations-role-ARN
```
Para obtener el mejor rendimiento, se recomienda utilizar el filtro `KmsKeyArn` junto con otros filtros de metadatos de objetos, como `MatchAnyPrefix`, `CreatedAfter` o `MatchAnyStorageClass`.

**Example 2: Crear un trabajo de operaciones por lotes que actualice los objetos cifrados de SSE-S3 a SSE-KMS**  
En el siguiente ejemplo, se muestra cómo crear un trabajo de operaciones por lotes de S3 que actualiza la configuración de cifrado para varios objetos en el bucket de uso general. Este comando crea un trabajo que cambia objetos cifrados mediante el uso del cifrado del servidor con claves administradas por Amazon S3 (SSE-S3) para usar el cifrado del servidor con claves de AWS Key Management Service (AWS KMS) (SSE-KMS) en su lugar. Este trabajo también genera y guarda un manifiesto de los objetos afectados y crea un informe de los resultados. Para usar este comando, sustituya `user input placeholders` por su propia información.  

```
aws s3control create-job --account-id account-id \
--no-confirmation-required \
--operation '{"S3UpdateObjectEncryption": {  "ObjectEncryption": { "SSEKMS": { "KMSKeyArn": "KMS-key-ARN-to-apply", "BucketKeyEnabled": false  }  }  } }' \
--report '{ "Enabled": true, "Bucket": "report-bucket-ARN",  "Format": "Report_CSV_20180820", "Prefix": "report", "ReportScope": "AllTasks" }' \
--manifest-generator '{ "S3JobManifestGenerator": { "ExpectedBucketOwner": "account-id", "SourceBucket": "source-bucket-ARN", "EnableManifestOutput": true, "ManifestOutputLocation": { "Bucket": "manifest-bucket-ARN", "ManifestFormat": "S3InventoryReport_CSV_20211130", "ManifestPrefix": "manifest-prefix" }, "Filter": {   "MatchAnyObjectEncryption": [{ "SSES3": {} }] } } }' \
--priority 1 \
--role-arn batch-operations-role-ARN
```
Para obtener el mejor rendimiento, se recomienda utilizar el filtro `KmsKeyArn` junto con otros filtros de metadatos de objetos, como `MatchAnyPrefix`, `CreatedAfter` o `MatchAnyStorageClass`.