

# Atualizar a criptografia de objetos
<a name="batch-ops-update-encryption"></a>

Você pode usar o Operações em Lote do Amazon S3 para executar operações em lote de grande escala em objetos do Amazon S3. A operação [https://docs.aws.amazon.com//AmazonS3/latest/API/API_control_UpdateObjectEncryptionOperation.html](https://docs.aws.amazon.com//AmazonS3/latest/API/API_control_UpdateObjectEncryptionOperation.html) do recurso Operações em Lote atualiza o tipo de criptografia do lado do servidor de um objeto do Amazon S3 com uma única solicitação. Um único trabalho da operação `UpdateObjectEncryption` pode comportar um manifesto com até 20 bilhões de objetos.

É possível usar a operação `UpdateObjectEncryption` com todas as classes de armazenamento do Amazon S3 aceitas por buckets de uso geral. É possível usar a operação `UpdateObjectEncryption` para alterar o tipo de criptografia de objetos de [criptografia do lado do servidor com chaves gerenciadas pelo Amazon S3 (SSE- S3)](https://docs.aws.amazon.com//AmazonS3/latest/userguide/UsingServerSideEncryption.html) para [chaves do AWS Key Management Service (AWS KMS) (SSE-KMS)](https://docs.aws.amazon.com//AmazonS3/latest/userguide/UsingKMSEncryption.html) ou aplicar chaves de bucket do S3. Também é possível usar a operação `UpdateObjectEncryption` para alterar a chave do KMS gerenciada pelo cliente utilizada na criptografia de seus dados e cumprir padrões personalizados de alternância de chaves.

 Ao criar um trabalho de operações em lote, é possível gerar uma lista de objetos baseada no local de origem e em critérios de filtro especificados por você. É possível usar o filtro `MatchAnyObjectEncryption` para gerar uma lista de objetos do seu bucket que você deseja atualizar e incluir no seu manifesto. A lista de objetos gerada inclui somente objetos do bucket de origem com o tipo de criptografia do lado do servidor indicado. Se você selecionar SSE-KMS, poderá, opcionalmente, filtrar ainda mais os resultados especificando um ARN de chave do KMS e o status “Chave do bucket habilitada”. Para ter mais informações, 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) e [https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_SSEKMSFilter.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_control_SSEKMSFilter.html) na *Referência de API do Amazon S3*.

## Restrições e considerações
<a name="batch-ops-encrypt-object-restrictions"></a>

Quando você usa a operação `UpdateObjectEncryption` do recurso Operações em Lote, as seguintes restrições e considerações se aplicam:
+ A operação `UpdateObjectEncryption` não permite objetos não criptografados ou objetos criptografados com a criptografia de camada dupla do lado do servidor com AWS KMS keys (DSSE-KMS) ou chaves de criptografia fornecidas pelo cliente (SSE-C). Além disso, não é possível especificar a solicitação `UpdateObjectEncryption` para o tipo de criptografia SSE-S3.
+ É possível usar a operação `UpdateObjectEncryption` para atualizar objetos em buckets que têm o Versionamento do S3 habilitado. Para atualizar o tipo de criptografia de uma versão específica, é necessário especificar um ID de versão na solicitação `UpdateObjectEncryption`. Se você não especificar um ID de versão, a solicitação `UpdateObjectEncryption` atuará na versão atual do objeto. Para obter mais informações sobre o S3 Versioning, consulte [Reter várias versões de objetos com o Versionamento do S3](Versioning.md).
+ A operação `UpdateObjectEncryption` falha em qualquer objeto que tenha um modo de retenção do Bloqueio de Objetos do S3 ou uma retenção jurídica aplicados a ele. Se um objeto tiver um período de retenção no modo de governança ou uma retenção jurídica, primeiro será necessário remover o status de bloqueio de objetos para emitir a solicitação `UpdateObjectEncryption`. Não é possível usar a operação `UpdateObjectEncryption` com objetos que tenham um período de retenção do modo de conformidade do Bloqueio de Objetos aplicado a eles. Para obter mais informações sobre bloqueio de objetos do S3, consulte [Bloquear objetos com o Bloqueio de Objetos](object-lock.md).
+ As solicitações `UpdateObjectEncryption` em buckets de origem com replicação em tempo real habilitada não iniciarão eventos de réplica no bucket de destino. Se você quiser alterar o tipo de criptografia dos objetos nos buckets de origem e destino, será necessário iniciar solicitações `UpdateObjectEncryption` separadas nos objetos nos buckets de origem e destino.
+ Por padrão, todas as solicitações `UpdateObjectEncryption` que especificam uma chave do KMS gerenciada pelo cliente são restritas às chaves do KMS pertencentes à Conta da AWS do proprietário do bucket. Se você estiver usando o AWS Organizations, existe a possibilidade de usar AWS KMS keys pertencentes a outras contas de membro em sua organização. Para isso, entre em contato com o AWS Support para fazer essa solicitação.
+ Se você usa o recurso Replicação em Lote do S3 para replicar conjuntos de dados entre regiões e já tiver atualizado o tipo de criptografia do lado do servidor de SSE-S3 para SSE-KMS, talvez você precise de permissões adicionais. No bucket da região de origem, é necessário ter a permissão `kms:decrypt`. Em seguida, é necessário ter as permissões `kms:decrypt` e `kms:encrypt` para o bucket na região de destino.
+ Forneça um ARN completo da chave do KMS na solicitação `UpdateObjectEncryption`. Não é possível usar um nome de alias ou ARN de alias. É possível determinar o ARN completo da chave do KMS no console do AWS KMS ou usando a API `DescribeKey` do AWS KMS.

Para obter mais informações sobre o `UpdateObjectEncryption`, consulte [Atualizar a criptografia do lado do servidor para dados existentes](update-sse-encryption.md).

## Permissões obrigatórias
<a name="batch-ops-required-permissions"></a>

Para realizar a operação `UpdateObjectEncryption`, adicione a política do AWS Identity and Access Management (IAM) a seguir à sua entidade principal do IAM (usuário, perfil ou grupo). Para usar essa política, substitua *`amzn-s3-demo-bucket`* pelo nome do bucket que contém os objetos para os quais você deseja atualizar a criptografia. Substitua `amzn-s3-demo-manifest-bucket` pelo nome do bucket que contém seu manifesto e substitua `amzn-s3-demo-completion-report-bucket` pelo nome do bucket onde você deseja armazenar o relatório de conclusão.

```
{
    "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 ter informações sobre a política de confiança e a política de permissões que devem ser anexadas ao perfil do IAM que a entidade principal de serviço do recurso Operações em Lote do S3 assume para executar trabalhos de operações em lote em seu nome, consulte [Conceder permissões para operações em lote](batch-ops-iam-role-policies.md) e [Atualizar a criptografia de objetos](batch-ops-iam-role-policies.md#batch-ops-update-encryption-policies).

# Criar um trabalho de operações em lote para atualizar a criptografia de objetos
<a name="batch-ops-update"></a>

Para atualizar o tipo de criptografia do lado do servidor de mais de um objeto do Amazon S3 com uma única solicitação, você pode usar o recurso Operações em Lote do S3. É possível usar o recurso Operações em Lote do S3 por meio do console do Amazon S3, da AWS Command Line Interface (AWS CLI), de SDKs da AWS ou da API REST do Amazon S3.

## Como usar o AWS CLI
<a name="batch-ops-example-cli-update-job"></a>

Para executar os comandos a seguir, você deve ter a AWS CLI instalada e configurada. Se ainda não tiver a AWS CLI instalada, consulte [Instalar ou atualizar a versão mais recente da AWS CLI](https://docs.aws.amazon.com//cli/latest/userguide/getting-started-install.html) no *Guia do usuário da AWS Command Line Interface*.

Também é possível executar comandos da AWS CLI pelo console usando o AWS CloudShell. O AWS CloudShell é um shell pré-autenticado e baseado em navegador que você pode iniciar diretamente do Console de gerenciamento da AWS. Para ter mais informações, consulte [What is CloudShell?](https://docs.aws.amazon.com//cloudshell/latest/userguide/welcome.html) e [Getting started with AWS CloudShell](https://docs.aws.amazon.com//cloudshell/latest/userguide/getting-started.html) no *Guia do usuário do AWS CloudShell*.

**Example 1: criar um trabalho de operações em lote que atualiza o tipo de criptografia de objetos de uma AWS KMS key para outra chave do KMS**  
O exemplo a seguir mostra como criar um trabalho de operações em lote do S3 que atualiza as configurações de criptografia para vários objetos em um bucket de uso geral. Esse comando cria um trabalho que altera os objetos criptografados com uma chave do AWS Key Management Service (AWS KMS) para usar uma chave diferente do KMS. Esse trabalho também gera e salva um manifesto dos objetos afetados e cria um relatório dos resultados. Para usar esse comando, substitua os `user input placeholders` por suas informações.  

```
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 obter o melhor desempenho, recomendamos usar o filtro `KmsKeyArn` com outros filtros de metadados de objeto, como `MatchAnyPrefix`, `CreatedAfter` ou `MatchAnyStorageClass`.

**Example 2: criar um trabalho de operações em lote que atualiza o tipo de criptografia de objetos de SSE-S3 para SSE-KMS**  
O exemplo a seguir mostra como criar um trabalho de operações em lote do S3 que atualiza as configurações de criptografia para vários objetos em um bucket de uso geral. Esse comando cria um trabalho que altera o tipo de criptografia de objetos da criptografia do lado do servidor com chaves gerenciadas pelo Amazon S3 (SSE-S3) para a criptografia do lado do servidor com chaves do AWS Key Management Service (AWS KMS) (SSE-KMS). Esse trabalho também gera e salva um manifesto dos objetos afetados e cria um relatório dos resultados. Para usar esse comando, substitua os `user input placeholders` por suas informações.  

```
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 obter o melhor desempenho, recomendamos usar o filtro `KmsKeyArn` com outros filtros de metadados de objeto, como `MatchAnyPrefix`, `CreatedAfter` ou `MatchAnyStorageClass`.