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.
-
Utilizza la cifratura lato client per cifrare gli oggetti con le relative chiavi di cifratura prima di memorizzarli nei bucket di storage degli oggetti. Un'opzione disponibile è quella di utilizzare l'API di compatibilità Amazon S3, insieme al supporto di cifratura degli oggetti lato client disponibile nell'SDK AWS per Java. Per ulteriori informazioni su questo SDK, vedere API di compatibilità Amazon S3.
-
Utilizza la crittografia lato server con le tue chiavi. Per ulteriori informazioni, vedere Uso delle chiavi personalizzate per la cifratura lato server.
-
Assegna una chiave di cifratura master di Oracle Cloud Infrastructure Vault che controlli e ruoti secondo la tua pianificazione. Per ulteriori informazioni, vedere Utilizzo delle chiavi personali nel vault per la cifratura lato server.
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.
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 |
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"
}
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. | CopyObject |
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).
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.