Replica di oggetti creati con crittografia lato server (SSE-C, SSE-S3, SSE-KMS) - Amazon Simple Storage Service

Replica di oggetti creati con crittografia lato server (SSE-C, SSE-S3, SSE-KMS)

Replica di oggetti crittografati (SSE-C)

Utilizzando la crittografia lato server con le chiavi fornite dal cliente (SSE-C), puoi gestire le chiavi di proprietà. Con SSE-C, puoi gestire le chiavi mentre Amazon S3 si occupa del processo di crittografia e decrittografia. È necessario fornire una chiave di crittografia come parte della richiesta, ma non è necessario scrivere codice per eseguire la crittografia o la decrittografia degli oggetti. Quando carichi un oggetto, Amazon S3 esegue la crittografia dell'oggetto utilizzando la chiave che hai specificato. Quindi Amazon S3 elimina la chiave dalla memoria. Quando viene recuperato un oggetto, è necessario fornire la stessa chiave di crittografia come parte della richiesta. Per ulteriori informazioni, consultare Utilizzo della crittografia lato server con chiavi fornite dal cliente (SSE-C).

La replica S3 supporta gli oggetti crittografati con SSE-C. Puoi configurare la replica degli oggetti SSE-C nella console Amazon S3 o con gli AWS SDK, nello stesso modo in cui configuri la replica degli oggetti non crittografati. La replica S3 replica automaticamente gli oggetti crittografati SSE-C appena caricati, se idonei, secondo la configurazione di replica S3. Per la replica di oggetti esistenti nei bucket, utilizza S3 Batch Replication. Non sono disponibili autorizzazioni SSE-C aggiuntive oltre a quelle attualmente richieste per la replica. Per ulteriori informazioni sulla replica di oggetti, consulta Impostazione della replica e Replica di oggetti esistenti con S3 Batch Replication.

Non sono previsti costi aggiuntivi per la replica di oggetti SSE-C. Per informazioni dettagliate sui prezzi della replica, consulta la pagina Prezzi di Amazon S3.

Replica di oggetti crittografati (SSE-S3, SSE-KMS)

Per impostazione predefinita, Amazon S3 non replica gli oggetti archiviati quando sono inattivi utilizzando la crittografia lato server con le AWS KMS keys archiviate in AWS KMS. Questa sezione illustra un'ulteriore configurazione che puoi aggiungere per fare in modo che Amazon S3 replichi questi oggetti.

Per un esempio con istruzioni dettagliate, consulta Replica di oggetti crittografati. Per informazioni sulla creazione di una configurazione di replica, consulta Replica di oggetti.

Specifica di informazioni aggiuntive nella configurazione di replica

Nella configurazione di replica, è necessario eseguire queste operazioni:

  • Nella configurazione Destination, aggiungi la chiave AWS KMS simmetrica gestita dal cliente che Amazon S3 deve utilizzare per crittografare le repliche dell'oggetto.

  • Specifica esplicitamente la funzione abilitando la replica di oggetti crittografati mediante le chiavi KMS aggiungendo l'elemento SourceSelectionCriteria.

<ReplicationConfiguration> <Rule> ... <SourceSelectionCriteria> <SseKmsEncryptedObjects> <Status>Enabled</Status> </SseKmsEncryptedObjects> </SourceSelectionCriteria> <Destination> ... <EncryptionConfiguration> <ReplicaKmsKeyID>AWS KMS key ID for the Regione AWS of the destination bucket.</ReplicaKmsKeyID> </EncryptionConfiguration> </Destination> ... </Rule> </ReplicationConfiguration>
Importante

La chiave KMS deve essere creata nella stessa Regione AWS dei bucket di destinazione.

Chiave KMS deve essere valida. L'operazione PUT dell'API di replica del bucket non controlla la validità delle chiavi KMS. Se utilizzi una chiave KMS non valida, viene restituito il codice di stato HTTP 200 OK in risposta, ma la replica non riesce.

Nell'esempio seguente viene illustrata una configurazione di replica che include gli elementi di configurazione opzionali.

<?xml version="1.0" encoding="UTF-8"?> <ReplicationConfiguration> <Role>arn:aws:iam::account-id:role/role-name</Role> <Rule> <ID>Rule-1</ID> <Priority>1</Priority> <Status>Enabled</Status> <DeleteMarkerReplication> <Status>Disabled</Status> </DeleteMarkerReplication> <Filter> <Prefix>Tax</Prefix> </Filter> <Destination> <Bucket>arn:aws:s3:::destination-bucket</Bucket> <EncryptionConfiguration> <ReplicaKmsKeyID>The AWS KMS key ID for the Regione AWS of the destination buckets. (S3 uses this key to encrypt object replicas.)</ReplicaKmsKeyID> </EncryptionConfiguration> </Destination> <SourceSelectionCriteria> <SseKmsEncryptedObjects> <Status>Enabled</Status> </SseKmsEncryptedObjects> </SourceSelectionCriteria> </Rule> </ReplicationConfiguration>

Questa configurazione di replica ha una regola. La regola si applica agli oggetti con il prefisso della chiave Tax. Amazon S3 utilizza l'ID AWS KMS key per crittografare queste repliche di oggetti.

Concessione di autorizzazioni aggiuntive per il ruolo IAM

Per replicare oggetti crittografati inattivi usando AWS KMS, concedi le seguenti autorizzazioni aggiuntive al ruolo AWS Identity and Access Management (IAM) specificato nella configurazione di replica. Queste autorizzazioni vengono concesse aggiornando la policy di autorizzazione associata al ruolo IAM.

  • Operazione s3:GetObjectVersionForReplication per gli oggetti di origine: consente ad Amazon S3 di replicare gli oggetti non crittografati e gli oggetti creati con la crittografia lato server mediante le chiavi SSE-S3 o SSE-KMS.

    Nota

    Ti consigliamo di utilizzare l'operazione s3:GetObjectVersionForReplication anziché l'operazione s3:GetObjectVersion in quanto s3:GetObjectVersionForReplication concede ad Amazon S3 solo le autorizzazioni minime necessarie per la replica. Inoltre, l'operazione s3:GetObjectVersion permette la replica di oggetti non crittografati e crittografati SSE-S3, ma non di oggetti creati utilizzando SSE-KMS.

  • Operazioni AWS KMS kms:Decrypt e kms:Encrypt per le chiavi KMS

    • È necessario concedere le autorizzazioni kms:Decrypt per la AWS KMS key utilizzata per decrittografare l'oggetto di origine.

    • È necessario concedere le autorizzazioni kms:Encrypt per la AWS KMS key utilizzata per crittografare la replica dell'oggetto.

Ti consigliamo di limitare queste autorizzazioni solo ai bucket e agli oggetti di destinazione utilizzando le chiavi di condizione AWS KMS. L'account AWS che include il ruolo IAM deve disporre delle autorizzazioni per le operazioni AWS KMS (kms:Encrypt e kms:Decrypt) per le chiavi KMS elencate nella policy. Se le chiavi KMS sono di proprietà di un altro Account AWS, è necessario che il proprietario della chiave KMS conceda tali autorizzazioni all'Account AWS titolare del ruolo IAM. Per ulteriori informazioni sulla gestione dell'accesso alle chiavi KMS, consulta Utilizzo di policy IAM con AWS KMS nella Guida per Developer di AWS Key Management Service.

Chiavi bucket Amazon S3 e replica

Per utilizzare la replica con una chiave del bucket S3, è necessario che la policy AWS KMS key per la chiave KMS utilizzata per crittografare la replica dell'oggetto includa le autorizzazioni kms:Decrypt per il principale chiamante. La chiamata a kms:Decrypt verifica l'integrità della chiave bucket S3 prima del suo utilizzo. Per ulteriori informazioni, consultare Utilizzo di una chiave bucket S3 con la replica.

Quando una chiave del bucket S3 è abilitata per il bucket di origine o di destinazione, il contesto di crittografia sarà il nome della risorsa Amazon (ARN) del bucket e non l'ARN dell'oggetto, ad esempio arn:aws:s3:::bucket_ARN. Dovrai aggiornare le policy IAM per utilizzare l'ARN del bucket per il contesto di crittografia:

"kms:EncryptionContext:arn:aws:arn": [ "arn:aws:s3:::bucket_ARN" ]

Per ulteriori informazioni, consulta Contesto di crittografia (x-amz-server-side-encryption-context) e Modifiche alla nota prima dell'abilitazione di una chiave bucket S3.

Policy di esempio: utilizzo di SSE-S3 e SSE-KMS con la replica

Le policy IAM di esempio riportate di seguito mostrano le istruzioni per utilizzare SSE-S3 e SSE-KMS con la replica.

Esempio - Utilizzo di SSE-KMS con bucket di destinazione separati

La seguente policy di esempio mostra le istruzioni per utilizzare SSE-KMS con bucket di destinazione separati.

{ "Action": ["kms:Decrypt"], "Effect": "Allow", "Condition": { "StringLike": { "kms:ViaService": "s3.source-bucket-region.amazonaws.com", "kms:EncryptionContext:arn:aws:arn": [ "arn:aws:s3:::source-bucket-name/key-prefix1*", ] } }, "Resource": [ "List of AWS KMS key ARNs used to encrypt source objects.", ] }, { "Action": ["kms:Encrypt"], "Effect": "Allow", "Condition": { "StringLike": { "kms:ViaService": "s3.destination-bucket-1-region.amazonaws.com", "kms:EncryptionContext:aws:s3:arn": [ "arn:aws:s3:::destination-bucket-name-1/key-prefix1*", ] } }, "Resource": [ "AWS KMS key ARNs (for the Regione AWS of the destination bucket 1). Used to encrypt object replicas created in destination bucket 1.", ] }, { "Action": ["kms:Encrypt"], "Effect": "Allow", "Condition": { "StringLike": { "kms:ViaService": "s3.destination-bucket-2-region.amazonaws.com", "kms:EncryptionContext:aws:s3:arn": [ "arn:aws:s3:::destination-bucket-2-name/key-prefix1*", ] } }, "Resource": [ "AWS KMS key ARNs (for the Regione AWS of destination bucket 2). Used to encrypt object replicas created in destination bucket 2.", ] }
Esempio - Replica di oggetti creati con SSE-S3 e SSE-KMS

Di seguito è riportata una policy IAM completa che concede le autorizzazioni necessarie per la replica di oggetti non crittografati, oggetti creati con SSE-S3 e oggetti creati con SSE-KMS.

{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "s3:GetReplicationConfiguration", "s3:ListBucket" ], "Resource":[ "arn:aws:s3:::source-bucket" ] }, { "Effect":"Allow", "Action":[ "s3:GetObjectVersionForReplication", "s3:GetObjectVersionAcl" ], "Resource":[ "arn:aws:s3:::source-bucket/key-prefix1*" ] }, { "Effect":"Allow", "Action":[ "s3:ReplicateObject", "s3:ReplicateDelete" ], "Resource":"arn:aws:s3:::destination-bucket/key-prefix1*" }, { "Action":[ "kms:Decrypt" ], "Effect":"Allow", "Condition":{ "StringLike":{ "kms:ViaService":"s3.source-bucket-region.amazonaws.com", "kms:EncryptionContext:aws:s3:arn":[ "arn:aws:s3:::source-bucket-name/key-prefix1*" ] } }, "Resource":[ "List of AWS KMS key ARNs used to encrypt source objects." ] }, { "Action":[ "kms:Encrypt" ], "Effect":"Allow", "Condition":{ "StringLike":{ "kms:ViaService":"s3.destination-bucket-region.amazonaws.com", "kms:EncryptionContext:aws:s3:arn":[ "arn:aws:s3:::destination-bucket-name/prefix1*" ] } }, "Resource":[ "AWS KMS key ARNs (for the Regione AWS of the destination buckets) to use for encrypting object replicas" ] } ] }

Concessione di autorizzazioni aggiuntive per scenari multi-account

In uno scenario con più account, dove i bucket di origine e di destinazione appartengono ad Account AWS diversi, puoi utilizzare una chiave KMS per crittografare le repliche degli oggetti. Tuttavia, il proprietario della chiave KMS deve concedere al proprietario del bucket di origine l'autorizzazione per utilizzare la chiave KMS.

Per concedere al proprietario del bucket di origine l'autorizzazione per l'utilizzo della chiave KMS (console AWS KMS)
  1. Accedi alla AWS Management Console e apri la console AWS KMS all'indirizzo https://console.aws.amazon.com/kms.

  2. Per modificare la Regione AWS, utilizza il selettore della regione nell'angolo superiore destro della pagina.

  3. Per visualizzare le chiavi nell'account creato e gestito dall'utente, nel riquadro di navigazione, seleziona Chiavi gestite dal cliente.

  4. Scegli la chiave KMS.

  5. In Configurazione generale, seleziona la scheda Policy delle chiavi.

  6. Scorri fino a Other Account AWS (Altri account AWS).

  7. Scegli Add other Account AWS (Aggiungi altri account AWS).

  8. arn:aws:iam::, inserisci l'ID account del bucket di origine.

  9. Selezionare Salva.

Per concedere al proprietario del bucket di origine l'autorizzazione per l'utilizzo della chiave KMS (AWS CLI)
  • Per informazioni sul comando AWS CLI, consulta put-key-policy in AWS CLI Command Reference (Guida di riferimento per i comandi AWS CLI). Per ulteriori informazioni sull'operazione dell'API sottostante, consulta PutKeyPolicy in AWS Key Management Service API Reference (Guida di riferimento per l'API di AWS Key Management Service).

Considerazioni sulle quote di transazione di AWS KMS

Quando si aggiungono molti nuovi oggetti con la crittografia AWS KMS dopo aver abilitato la replica tra Regioni (CRR), è possibile che si verifichi la (limitazione (della larghezza di banda della rete) (errori di servizio non disponibile HTTP 503). La limitazione (della larghezza di banda della rete) si verifica quando il numero di transazioni AWS KMS al secondo supera la quota corrente. Per ulteriori informazioni, consulta Quote nella Guida per gli sviluppatori di AWS Key Management Service.

Per richiedere un aumento della quota, è possibile utilizzare Service Quotas. Per ulteriori informazioni, consulta Amazon Web Services Quotas. Se Service Quotas non è supportato nella tua regione, apri un caso in AWS Support.