Cifratura dei dati di storage degli oggetti

Scopri come il servizio di storage degli oggetti cifra e decifra tutti gli oggetti utilizzando lo standard AES-256 (Advanced Encryption Standard) a 256 bit per cifrare i dati degli oggetti sul server.

Ogni oggetto viene cifrato con la propria chiave di cifratura dei dati. Le chiavi di cifratura dei dati vengono sempre cifrate con una chiave di cifratura master assegnata al bucket. La cifratura è abilitata per impostazione predefinita e non può essere disattivata. Per impostazione predefinita, Oracle gestisce la chiave di cifratura principale.

Oltre a questa cifratura predefinita, è possibile utilizzare le seguenti strategie per la cifratura dei dati:

Utilizzo di chiavi personalizzate per la cifratura lato server

In questo argomento vengono forniti i dettagli per l'implementazione e l'utilizzo della cifratura lato server con chiavi fornite dal cliente (SSE-C).

Informazioni su SSE-C

Utilizzando intestazioni API opzionali, puoi fornire la tua chiave di cifratura AES a 256 bit utilizzata per cifrare e decifrare gli oggetti caricati e scaricati dallo storage degli oggetti:

  • Quando si carica un oggetto, fornire la chiave di cifratura. Lo storage degli oggetti esegue la cifratura dell'oggetto utilizzando tale chiave ed elimina immediatamente la chiave.
  • Quando desideri scaricare un oggetto, fornisci la stessa chiave utilizzata per cifrare gli oggetti e le decifrazioni dello storage degli oggetti e restituisci l'oggetto all'utente.

Puoi gestire le chiavi di cifratura e lo storage degli oggetti gestisce la cifratura e la decifrazione.

Importante

Lo storage degli oggetti non memorizza le chiavi di cifratura. L'utente è responsabile del tracciamento della chiave associata a ciascun oggetto e della rotazione della chiave, se necessario. Se si perde la chiave di cifratura, non è possibile recuperare l'oggetto.

Ambito e vincoli

Comprendere l'ambito e i vincoli relativi a SSE-C riportati di seguito.

  • Una chiave SSE-C non può essere associata a un bucket e può essere utilizzata solo per cifrare singoli oggetti.
  • Puoi cifrare gli oggetti utilizzando la tua chiave di cifratura utilizzando le richieste preautenticate. Per recuperare un oggetto cifrato SSE-C utilizzando una richiesta preautenticata, è necessario specificare la chiave di cifratura.
  • Per eliminare o rinominare un oggetto cifrato SSE-C, non è necessario specificare la chiave di cifratura.
  • È possibile specificare solo un valore kmsKeyId o un valore sseCustomerKey nel payload della richiesta ReencryptObject, non entrambi. Se il payload della richiesta è vuoto, l'oggetto viene cifrato utilizzando la chiave di cifratura assegnata al bucket. Il meccanismo di cifratura del bucket può essere una chiave di cifratura master gestita da Oracle o dal servizio Vault.
  • Per fornire le chiavi SSE-C, è possibile utilizzare solo le interfacce API di storage degli oggetti e l'interfaccia CLI. Non è possibile utilizzare la console per caricare o recuperare gli oggetti utilizzando una chiave fornita dal cliente.
  • Anche l'API di compatibilità Amazon S3 supporta SSE-C.

Utilizzo dell'API REST per SSE-C

Se si desidera utilizzare le proprie chiavi per la cifratura lato server, specificare le tre intestazioni di richiesta riportate di seguito con le informazioni relative alle chiavi di cifratura.

Intestazioni descrizione; API supportate
opc-sse-customer-algorithm Specifica "AES256" come algoritmo di cifratura. CopyObject

GetObject

HeadObject

PutObject

CreateMultipartUpload

UploadPart

opc-sse-customer-key Specifica la chiave di cifratura a 256 bit con codifica base64 da utilizzare per cifrare o decifrare i dati.
opc-sse-customer-key-sha256 Specifica l'hash SHA256 con codifica base64 della chiave di cifratura.

Per CopyObject:

Se l'oggetto di origine viene cifrato con una chiave SSE-C, è necessario specificare anche le tre intestazioni seguenti in modo che lo storage degli oggetti possa decifrare l'oggetto.

Intestazioni descrizione; API supportate
opc-source-sse-customer-algorithm Specifica "AES256" come algoritmo di cifratura da utilizzare per decifrare l'oggetto di origine. CopyObject
opc-source-sse-customer-key Specifica la chiave di cifratura a 256 bit con codifica base64 da utilizzare per decifrare l'oggetto di origine.
opc-source-sse-customer-key-sha256 Specifica l'hash SHA256 con codifica base64 della chiave di cifratura utilizzata per decifrare l'oggetto di origine.

Utilizzo dell'interfaccia CLI per SSE-C

È anche possibile utilizzare le proprie chiavi di cifratura per cifrare gli oggetti mediante l'interfaccia CLI.

È possibile fornire la propria chiave di cifratura utilizzando il parametro opzionale --encryption-key-file filename per i seguenti comandi:

  • oci os object put
  • oci os object get
  • oci os object head
  • oci os object resume-put
  • oci os object bulk-upload
  • oci os object bulk-download
  • oci os object copy
  • oci os object reencrypt

filename punta a un file contenente la stringa con codifica base64 della chiave di cifratura AES-256. Non sono richiesti altri parametri. Lo storage degli oggetti decodifica la chiave per calcolare l'hash SHA256 della chiave di cifratura.

Se l'oggetto di origine è cifrato con una chiave SSE-C, è necessario specificare anche il parametro facoltativo --source-encryption-key-file filename per i seguenti comandi:

  • oci os object copy
  • oci os object reencrypt

filename punta a un file contenente la stringa con codifica base64 della chiave di cifratura di origine AES-256. Non sono richiesti altri parametri. Lo storage degli oggetti decodifica la chiave per calcolare l'hash SHA256 della chiave di cifratura di origine.

Per informazioni sull'uso dell'interfaccia CLI, vedere Command Line Interface (CLI). Per un elenco completo dei flag e delle opzioni disponibili per i comandi CLI, vedere il documento Command Line Reference.

Utilizzo delle chiavi personali nel vault per la cifratura lato server

Questo argomento fornisce i dettagli per l'implementazione della cifratura lato server utilizzando le chiavi personali nel vault.

Il servizio Oracle Cloud Infrastructure Object Storage cifra i dati e i metadati (coppie di valori delle chiavi fornite dal cliente) utilizzando chiavi di cifratura dei dati (DEK) generate in modo casuale. Lo storage degli oggetti consente di specificare la propria chiave di cifratura master (MEK, Master Encryption Key) gestita dal servizio Vault per i bucket (vedere Using the Console) e i singoli oggetti. È possibile specificare la chiave MEK da utilizzare per un determinato oggetto senza dover gestire e gestire le proprie chiavi.

Per poter specificare la propria chiave MEK, è necessario disporre delle autorizzazioni necessarie nei criteri IAM. Vedere Criterio IAM obbligatorio e Consenti a un gruppo di utenti di delegare l'uso della chiave in un compartimento.

Utilizzo dell'interfaccia CLI per SSE con le chiavi nel vault

È possibile utilizzare le proprie chiavi di cifratura nel vault per cifrare gli oggetti mediante l'interfaccia CLI.

È possibile fornire la propria chiave di cifratura utilizzando il parametro opzionale --opc-sse-kms-key-id target_key_id per i seguenti comandi:

  • oci os object put
  • oci os object copy

target_key_id è l'OCID di una chiave esistente nel vault da utilizzare per cifrare l'oggetto.

Un esempio per caricare un oggetto nel bucket utilizzando una chiave nel vault:

oci os object put -bn "MyKeyBucket" --name "MyObjectName" --file "InputFile" --opc-sse-kms-key-id "ocid1.key.region1.sea..exampleuniqueID"

Uploading object  [####################################]  100%
{
  "etag": "cadb9f8a-3292-45e6-a1e8-f075699fb619",
  "last-modified": "Tue, 13 Jul 2021 05:52:47 GMT",
  "opc-content-md5": "9KJsgOK/X5C1sARb2tkhVA=="
}

Un esempio per eseguire un caricamento multiparte utilizzando una chiave nel vault:

oci os object put --bucket-name MyBucket --name MyObjectName --file  ~/path/to/file  --parallel-upload-count 10 --part-size 500 --opc-sse-kms-key-id ocid1.key.oc1.region1.sea..exampleuniqueID
Upload ID: 813bb394-377d-d5cf-cb3f-31b025346199
Split file into 1 parts for upload.
Uploading object  [####################################]  100%
{
"etag": "a55f1c69-1cf4-4134-9113-7a866bac712f",
"last-modified": "Wed, 29 May 2024 21:54:55 GMT",
"opc-multipart-md5": "sAVJt/6nEVizTbwRblZZSg==-1"
}

Esempio di copia di un oggetto mediante una chiave nel vault:

oci os object copy --bucket-name MyBucket1 --destination-bucket MyBucket2 --source-object-name MyObjectName --opc-sse-kms-key-id ocid1.key.oc1.region1.sea..exampleuniqueID
{
"opc-work-request-id": "115e230c-04b8-4dc6-89eb-7e1269b4ab47"
}
Nota

Gli esempi di questa sezione utilizzano la sintassi completa per i parametri, ad esempio --namespace e --bucket-name. A volte, sono disponibili termini di parametro abbreviati che è possibile utilizzare al posto di quelli completi, ad esempio -ns per --namespace e -bn per --bucket-name. Per un determinato comando, nella CLI --help in linea vengono visualizzati i parametri abbreviati che è possibile utilizzare.

Per informazioni sull'uso dell'interfaccia CLI, vedere Command Line Interface (CLI). Per un elenco completo dei flag e delle opzioni disponibili per i comandi CLI, vedere il documento Command Line Reference.

Utilizzo dell'API REST per SSE con chiavi nel vault

Se si desidera utilizzare le proprie chiavi nel vault per la cifratura lato server, specificare l'intestazione di richiesta seguente con l'OCID della chiave nel vault:

Intestazioni descrizione; API supportate
opc-sse-kms-key-id Specifica l'OCID di una chiave esistente nel vault da utilizzare per cifrare l'oggetto.

PutObject

CopyObject

CreateMultipartUpload

UploadPart

Per informazioni sull'uso dell'API e delle richieste di firma, consulta la documentazione dell'API REST e le credenziali di sicurezza. Per informazioni sugli SDK, vedere SDK e l'interfaccia CLI.

Nuova cifratura bucket

Se hai ruotato una chiave di cifratura master dal momento in cui è stata assegnata a un bucket, potresti voler cifrare di nuovo il bucket. Fino a quando non si esegue nuovamente la cifratura esplicita di un bucket, la versione della chiave associata al bucket quando un oggetto è stato inserito nel bucket continua a decifrare tutte le chiavi di cifratura dei dati.

Per cifrare e decifrare tutte le chiavi di cifratura dei dati con la stessa versione più recente della chiave di cifratura master assegnata, cifrare di nuovo il bucket. Per ulteriori informazioni, vedere Rifratura della cifratura dei dati di un bucket.

Nuova cifratura oggetto

Per cifrare e decifrare le chiavi di cifratura dei dati di un oggetto con una chiave di cifratura master diversa, è possibile cifrare di nuovo l'oggetto. Quando si esegue di nuovo la cifratura di un oggetto, è possibile selezionare una chiave diversa da quella assegnata al bucket o la versione più recente della chiave assegnata al bucket. Fino a quando non si esegue nuovamente la cifratura esplicita di un oggetto, la versione della chiave associata al bucket (quando l'oggetto è stato inserito nel bucket) continua a decifrare tutte le chiavi di cifratura dei dati dell'oggetto.

È possibile cifrare di nuovo le chiavi di cifratura dei dati di un oggetto con una chiave gestita da Oracle, una chiave creata e controllata tramite un vault gestito dall'utente o una chiave di cifratura fornita dall'utente (SSE-C).

Nota

Se si utilizza la cifratura lato server con le chiavi fornite dal cliente (SSE-C), è necessario utilizzare l'interfaccia CLI per fornire la chiave SSE-C durante il processo di cifratura o nuova cifratura. Utilizzando l'interfaccia CLI, è possibile cifrare di nuovo un oggetto con una chiave SSE-C diversa, una chiave gestita da Oracle o una chiave gestita tramite il servizio Vault. Nella console è possibile cifrare di nuovo un oggetto solo per utilizzare la versione più recente della chiave gestita da Oracle assegnata al bucket o la versione più recente di una chiave vault. Non importa se la versione chiave scelta è quella assegnata al bucket.

Per ulteriori informazioni, vedere Rieseguire la cifratura di un oggetto.