View a markdown version of this page

Aggiornamento della crittografia lato server per i dati esistenti - Amazon Simple Storage Service

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Aggiornamento della crittografia lato server per i dati esistenti

Tutti i bucket Amazon S3 hanno la crittografia configurata per impostazione predefinita e gli oggetti vengono crittografati automaticamente utilizzando la crittografia lato server con chiavi gestite da Amazon S3 (). SSE-S3 Questa impostazione di crittografia predefinita si applica a tutti i nuovi oggetti nei tuoi bucket Amazon S3.

Utilizzando l'operazione UpdateObjectEncryption API, puoi aggiornare atomicamente il tipo di crittografia lato server di un oggetto crittografato esistente in un bucket generico dalla crittografia lato server con crittografia gestita Amazon S3 (SSE-S3) alla crittografia lato server con chiavi di crittografia () (). AWS Key Management Service AWS KMS SSE-KMS L'operazione UpdateObjectEncryption API utilizza la crittografia a inviluppo per crittografare nuovamente la chiave di dati utilizzata per crittografare e decrittografare l'oggetto con il tipo di crittografia lato server appena specificato.

Amazon S3 esegue questo aggiornamento del tipo di crittografia senza alcun trasferimento di dati. In altre parole, quando si utilizza l'UpdateObjectEncryptionoperazione, i dati non vengono copiati, gli oggetti archiviati in S3 Glacier Flexible Retrieval o S3 Glacier Deep Archive non vengono ripristinati e gli oggetti nella classe di storage S3 non vengono spostati tra i livelli. Intelligent-Tiering Inoltre, l'UpdateObjectEncryptionoperazione conserva tutte le proprietà dei metadati degli oggetti, tra cui la classe di archiviazione, la data di creazione, la data dell'ultima modifica, ETag e le proprietà checksum.

L'UpdateObjectEncryptionoperazione è supportata per tutte le classi di archiviazione S3 supportate da bucket generici. È possibile utilizzare l'UpdateObjectEncryptionoperazione per effettuare le seguenti operazioni:

  • Cambia gli oggetti crittografati dalla crittografia lato server con crittografia gestita Amazon S3 (SSE-S3) alla crittografia lato server con chiavi di crittografia AWS Key Management Service (AWS KMS) (). SSE-KMS

  • Aggiorna gli oggetti SSE-KMS crittografati a livello di oggetto per utilizzare S3 Bucket Keys, che riduce il traffico di richieste da Amazon S3 a. AWS KMS AWS KMS Per ulteriori informazioni, consulta Riduzione dei costi SSE-KMS con Amazon S3 Bucket Keys.

  • Modifica la chiave KMS gestita dal cliente utilizzata per crittografare i dati in modo da rispettare gli standard personalizzati di rotazione delle chiavi.

Nota

Gli oggetti di origine non crittografati o crittografati con crittografia lato server a doppio livello con () o chiavi di crittografia fornite dal cliente AWS KMS keys (DSSE-KMS) non sono supportati da questa operazione. SSE-C

L'UpdateObjectEncryptionoperazione viene in genere completata in millisecondi indipendentemente dalle dimensioni dell'oggetto o dalla classe di archiviazione, inclusi S3 Glacier Flexible Retrieval o S3 Glacier Deep Archive. Questa operazione non è considerata un accesso per S3 Intelligent-Tiering, quindi gli oggetti nel livello Infrequent Access o Archive Instant Access non torneranno automaticamente al livello Frequent Access se si modifica il tipo di crittografia lato server dell'oggetto.

UpdateObjectEncryptionè un'operazione API a livello di oggetto (piano dati) che viene registrata nei log di accesso al server Amazon S3 e negli eventi ai dati. AWS CloudTrail Per ulteriori informazioni, consulta Opzioni di registrazione per Amazon S3.

L'UpdateObjectEncryptionoperazione ha lo stesso prezzo diPUT, COPYPOST, e LIST delle richieste (per 1.000 richieste) e viene sempre addebitata come richiesta di classe di storage S3 Standard indipendentemente dalla classe di storage dell'oggetto sottostante. Per ulteriori informazioni, consulta Prezzi di Amazon S3.

Restrizioni e considerazioni

Quando si utilizza l'UpdateObjectEncryptionoperazione, si applicano le seguenti restrizioni e considerazioni:

  • L'UpdateObjectEncryptionoperazione non supporta oggetti non crittografati o oggetti crittografati con crittografia lato server a doppio livello con AWS KMS keys (DSSE-KMS) o chiavi di crittografia fornite dal cliente (). SSE-C Inoltre, non è possibile specificare SSE-S3 come richiesta il nuovo tipo di crittografia richiesto. UpdateObjectEncryption

  • È possibile utilizzare l'UpdateObjectEncryptionoperazione per aggiornare gli oggetti nei bucket in cui è abilitato il controllo delle versioni di S3. Per aggiornare il tipo di crittografia di una particolare versione, è necessario specificare un ID di versione nella UpdateObjectEncryption richiesta. Se non si specifica l'ID di versione, la UpdateObjectEncryption richiesta agisce sulla versione corrente dell'oggetto. Per ulteriori informazioni sulla funzione Controllo delle versioni S3, consulta Conservazione di più versioni degli oggetti con Controllo delle versioni S3.

  • L'UpdateObjectEncryptionoperazione ha esito negativo su qualsiasi oggetto a cui è applicata una modalità di conservazione S3 Object Lock o un blocco legale. Se un oggetto ha un periodo di conservazione in modalità governativa o un blocco legale, è necessario rimuovere lo stato Object Lock sull'oggetto prima di emettere la richiesta. UpdateObjectEncryption Non è possibile utilizzare l'UpdateObjectEncryptionoperazione con oggetti a cui è applicato un periodo di conservazione in modalità di conformità Object Lock. Per ulteriori informazioni sul blocco degli oggetti S3, consulta Blocco di oggetti con Object Lock.

  • UpdateObjectEncryptionle richieste sui bucket di origine con la replica in tempo reale abilitata non avvieranno eventi di replica nel bucket di destinazione. Se desideri modificare il tipo di crittografia degli oggetti nei bucket di origine e di destinazione, devi avviare UpdateObjectEncryption richieste separate sugli oggetti nei bucket di origine e di destinazione.

  • Per impostazione predefinita, tutte le UpdateObjectEncryption richieste che specificano una chiave KMS gestita dal cliente sono limitate alle chiavi KMS di proprietà del proprietario del bucket. Account AWS Se stai utilizzando AWS Organizations, puoi richiedere la possibilità di utilizzare account di AWS KMS keys proprietà di altri membri all'interno della tua organizzazione contattando. Supporto AWS

  • Se utilizzi S3 Batch Replication per replicare i set di dati in più regioni e in precedenza il tipo di crittografia lato server era aggiornato dal SSE-S3 al SSE-KMS, potresti aver bisogno di autorizzazioni aggiuntive. Nel bucket della regione di origine, è necessario disporre delle autorizzazioni. kms:decrypt Quindi, avrai bisogno delle kms:encrypt autorizzazioni kms:decrypt e per il bucket nella regione di destinazione.

  • Nella richiesta è necessario fornire un ARN completo della chiave KMS. UpdateObjectEncryption Non puoi utilizzare un nome alias o un alias ARN. Puoi determinare l'ARN completo della chiave KMS nella console AWS KMS o utilizzando l'API AWS KMS. DescribeKey

Autorizzazioni richieste

Per eseguire l'UpdateObjectEncryptionoperazione, devi disporre delle seguenti autorizzazioni:

  • s3:UpdateObjectEncryption

  • kms:Encrypt

  • kms:Decrypt

  • kms:GenerateDataKey

  • kms:ReEncrypt*

Se stai utilizzando AWS Organizations, per utilizzare questa operazione con chiavi KMS gestite dal cliente provenienti da altri membri della tua Account AWS organizzazione, devi disporre dell'autorizzazione. organizations:DescribeAccount È inoltre necessario richiedere la possibilità di utilizzare account AWS KMS keys di proprietà di altri membri all'interno dell'organizzazione contattando. Supporto AWS

Per eseguire l'UpdateObjectEncryptionoperazione, aggiungi la seguente policy AWS Identity and Access Management (IAM) al tuo ruolo IAM. Per utilizzare questa policy, amzn-s3-demo-bucket sostituiscila con il nome del tuo bucket generico e sostituisci l'altro user input placeholders con le tue informazioni.

{ "Version": "2012-10-17", "Statement": [{ "Sid": "AllowUpdateObjectEncryption", "Effect": "Allow", "Action": [ "s3:UpdateObjectEncryption", "kms:Encrypt", "kms:Decrypt", "kms:GenerateDataKey", "kms:ReEncrypt*", "organizations:DescribeAccount" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket", "arn:aws:s3:::amzn-s3-demo-bucket/*", "arn:aws:kms:us-east-1:111122223333:key/01234567-89ab-cdef-0123-456789abcdef" ] } ] }

Aggiornamento della crittografia in blocco

Per aggiornare il tipo di crittografia lato server di più di un oggetto Amazon S3 con una singola richiesta, puoi utilizzare S3 Batch Operations. Puoi fornire a S3 Batch Operations un elenco di oggetti su cui operare oppure puoi indirizzare Batch Operations a generare metadati degli oggetti basati su un elenco di oggetti, tra cui prefisso, classe di archiviazione, data di creazione, tipo di crittografia, ARN della chiave KMS o stato della chiave S3 Bucket. Le operazioni in batch S3 richiamano la rispettiva API per eseguire l'operazione specificata. Un singolo job Batch Operations può eseguire l'operazione specificata su miliardi di oggetti all'interno di un bucket contenente petabyte di dati. Per ulteriori informazioni su Batch Operations, consulta Esecuzione di operazioni sugli oggetti in blocco con le operazioni in batch.

La funzionalità Operazioni in batch S3 tiene traccia dei progressi, invia notifiche e memorizza un report dettagliato sul completamento di tutte le azioni, offrendo un'esperienza serverless completamente gestita e verificabile. Puoi utilizzare S3 Batch Operations tramite la console Amazon S3, AWS Command Line Interface (AWS CLI) AWS SDK o l'API REST di Amazon S3. Per ulteriori informazioni, consulta Aggiorna la crittografia degli oggetti.

Aggiornamento della crittografia per gli oggetti

Puoi aggiornare il tipo di crittografia lato server per un oggetto tramite gli AWS SDK AWS Command Line Interface (AWS CLI) o l'API REST di Amazon S3.

Aggiorna la crittografia per un oggetto

Per eseguire i seguenti comandi, è necessario che siano AWS CLI installati e configurati. Se non è AWS CLI installato, consulta Installare o aggiornare alla versione più recente di AWS CLI nella Guida per l'AWS Command Line Interface utente.

In alternativa, puoi eseguire AWS CLI comandi dalla console utilizzando AWS CloudShell. AWS CloudShell è una shell preautenticata basata su browser che puoi avviare direttamente da. Console di gestione AWS Per ulteriori informazioni, vedi Che cos'è? CloudShell e Guida introduttiva AWS CloudShell nella Guida AWS CloudShell per l'utente.

Per aggiornare la crittografia di un oggetto utilizzando AWS CLI

Per utilizzare il seguente comando di esempio, sostituisci user input placeholders con le tue informazioni.

  1. Usa il comando seguente per aggiornare la crittografia di un singolo oggetto (index.html) nel tuo bucket generico (ad esempio,amzn-s3-demo-bucket) da utilizzare SSE-KMS con una chiave bucket S3:

    aws s3api update-object-encryption \ --bucket amzn-s3-demo-bucket \ --key index.html \ --object-encryption '{"SSEKMS": { "KMSKeyArn": "arn:aws:kms:us-east-1:111122223333:key/f12a345a-678e-9bbb-1025-62e317037583", "BucketKeyEnabled": true }}'
    Nota

    Devi specificare l' AWS KMS key Amazon Resource Name (ARN) completo. L'ID della chiave KMS e l'alias della chiave KMS non sono supportati.

  2. Esegui il head-object comando per visualizzare il tipo di crittografia aggiornato del tuo oggetto:

    aws s3api head-object --bucket amzn-s3-demo-bucket --key index.html

È possibile inviare richieste REST per aggiornare la crittografia di un oggetto. Per ulteriori informazioni, consulta UpdateObjectEncryption.

È possibile utilizzare gli AWS SDK per aggiornare la crittografia di un oggetto. Per ulteriori informazioni, consulta l'elenco degli SDK supportati.

Java
Esempio

L' AWS SDK for Java 2.x esempio seguente aggiorna il tipo di crittografia SSE-KMS per un oggetto in un bucket generico.

public void updateObjectEncryption(String bucketName, String objectKey, String versionId, String kmsKeyArn, boolean bucketKeyEnabled) { // Create the target object encryption type. ObjectEncryption objectEncryption = ObjectEncryption.builder() .ssekms(SSEKMSEncryption.builder() .kmsKeyArn(kmsKeyArn) .bucketKeyEnabled(bucketKeyEnabled) .build()) .build(); // Create the UpdateObjectEncryption request. UpdateObjectEncryptionRequest request = UpdateObjectEncryptionRequest.builder() .bucket(bucketName) .key(objectKey) .versionId(versionId) .objectEncryption(objectEncryption) .build(); // Update the object encryption. try { getS3Client().updateObjectEncryption(request); logger.info("Object encryption updated to SSE-KMS for {} in bucket {}", objectKey, bucketName); } catch (S3Exception e) { logger.error("Failed to update to object encryption: {} - Error code: {}", e.awsErrorDetails().errorMessage(), e.awsErrorDetails().errorCode()); throw e; } }
Python
Esempio

L' AWS SDK per Python (Boto3) esempio seguente mostra come aggiornare il tipo di crittografia SSE-KMS per un oggetto in un bucket generico.

response = client.update_object_encryption( Bucket='string', Key='string', VersionId='string', ObjectEncryption={ 'SSEKMS': { 'KMSKeyArn': 'string', 'BucketKeyEnabled': True|False } } )