Chiffrement des données du service de stockage d'objets

Découvrez comment le service de stockage d'objets chiffre et déchiffre tous les objets à l'aide d'AES-256-bit Advanced Encryption Standard (AES-256) pour chiffrer les données d'objet sur le serveur.

Chaque objet est chiffré avec sa propre clé de chiffrement des données. Les clés de chiffrement des données sont toujours chiffrées à l'aide d'une clé principale affectée au compartiment. Le chiffrement est activé par défaut et ne peut pas être désactivé. Par défaut, Oracle gère la clé principale de chiffrement.

En plus de ce chiffrement par défaut, vous pouvez utiliser ces stratégies pour chiffrer les données :

Utilisation de vos propres clés pour le chiffrement côté serveur

Cette rubrique fournit des détails pour mettre en œuvre et utiliser le chiffrement côté serveur avec des clés fournies par le client (SSE-C).

À propos de SSE-C

En utilisant des en-têtes d'API facultatifs, vous pouvez fournir votre propre clé de chiffrement AES 256 bits qui est utilisée pour chiffrer et déchiffrer des objets chargés et téléchargés à partir du stockage d'objets :

  • Lorsque vous chargez un objet, vous fournissez la clé de chiffrement. Le service Stockage d'objets chiffre l'objet à l'aide de cette clé et supprime immédiatement la clé.
  • Lorsque vous voulez télécharger un objet, vous fournissez la même clé qui a été utilisée pour chiffrer l'objet et le service de stockage d'objet déchiffre l'objet et vous le retourne.

Vous gérez les clés de chiffrement et le service Stockage d'objets gère le chiffrement et le déchiffrement.

Important

Le service Stockage d'objets ne stocke pas vos clés de chiffrement. Vous êtes responsable du suivi de la clé associée à chaque objet et de la rotation de la clé au besoin. Si vous perdez votre clé de chiffrement, vous ne pouvez pas récupérer votre objet.

Portée et contraintes

Tenez compte de la portée et des contraintes suivantes concernant SSE-C :

  • Une clé SSE-C ne peut pas être associée à un seau et ne peut être utilisée que pour chiffrer des objets individuels.
  • Vous pouvez chiffrer des objets à l'aide de votre propre clé de chiffrement à l'aide de demandes préauthentifiées. Pour extraire un objet chiffré par SSE-C à l'aide d'une demande préauthentifiée, vous devez spécifier votre clé de chiffrement.
  • Pour supprimer ou renommer un objet chiffré par SSE-C, vous n'avez pas besoin de spécifier votre clé de chiffrement.
  • Vous ne pouvez spécifier qu'un kmsKeyId ou qu'un sseCustomerKey dans les données utiles de la demande ReencryptObject, pas les deux. Si les données utiles de la demande sont vides, l'objet est chiffré à l'aide de la clé de chiffrement affectée au seau. Le mécanisme de chiffrement de seau peut être une clé de chiffrement principale gérée par Oracle ou le service Chambre forte.
  • Vous ne pouvez utiliser que les API du service de stockage d'objets et l'interface de ligne de commande pour fournir des clés SSE-C. Vous ne pouvez pas utiliser la console pour charger ou extraire des objets à l'aide d'une clé fournie par le client.
  • L'API de compatibilité Amazon S3 prend également en charge SSE-C.

Utilisation de l'API REST pour SSE-C

Si vous souhaitez utiliser vos propres clés pour le chiffrement côté serveur, spécifiez les trois en-têtes de demande suivants avec les informations sur la clé de chiffrement :

En-têtes Description API prises en charge
opc-sse-customer-algorithm Indique "AES256" comme algorithme de chiffrement. CopyObject

GetObject

HeadObject

PutObject

CreateMultipartUpload

UploadPart

opc-sse-customer-key Spécifie la clé de chiffrement de 256 bits encodée en base64 à utiliser pour chiffrer ou déchiffrer les données.
opc-sse-customer-key-sha256 Spécifie le hachage SHA256 encodé en base64 de la clé de chiffrement.

Pour CopyObject :

Si l'objet source est chiffré avec une clé SSE-C, vous devez également spécifier les trois en-têtes suivants afin que le stockage d'objets puisse déchiffrer l'objet.

En-têtes Description API prises en charge
opc-source-sse-customer-algorithm Indique "AES256" comme algorithme de chiffrement à utiliser pour déchiffrer l'objet source. CopyObject
opc-source-sse-customer-key Spécifie la clé de chiffrement de 256 bits encodée en base64 à utiliser pour déchiffrer l'objet source.
opc-source-sse-customer-key-sha256 Spécifie le hachage SHA256 encodé en base64 de la clé de chiffrement utilisée pour déchiffrer l'objet source.

Utilisation de l'interface de ligne de commande pour SSE-C

Vous pouvez également utiliser vos propres clés de chiffrement pour chiffrer des objets à l'aide de l'interface de ligne de commande.

Vous pouvez fournir votre propre clé de chiffrement à l'aide du paramètre facultatif --encryption-key-file filename pour les commandes suivantes :

  • 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 pointe vers un fichier contenant la chaîne encodée en base64 de la clé de chiffrement AES-256. Aucun autre paramètre n'est requis. Le service Stockage d'objets décode la clé pour calculer le hachage SHA256 de la clé de chiffrement.

Si l'objet source est chiffré avec une clé SSE-C, vous devez également spécifier le paramètre facultatif --source-encryption-key-file filename pour les commandes suivantes :

  • oci os object copy
  • oci os object reencrypt

filename pointe vers un fichier contenant la chaîne encodée en base64 de la clé de chiffrement source AES-256. Aucun autre paramètre n'est requis. Le service Stockage d'objets décode la clé pour calculer le hachage SHA256 de la clé de chiffrement source.

Pour des informations sur l'utilisation de l'interface de ligne de commande, voir Interface de ligne de commande. Pour une liste complète des indicateurs et les options disponibles pour les commandes de l'interface de ligne de commande, voir Informations de référence sur la ligne de commande.

Utilisation de vos propres clés dans le service de chambre forte pour le chiffrement côté serveur

Cette rubrique fournit des informations détaillées sur la mise en oeuvre du chiffrement côté serveur à l'aide de vos propres clés dans le service de chambre forte.

Le service Stockage d'objets pour Oracle Cloud Infrastructure chiffre vos données et métadonnées (paires clé-valeur fournies par le client) à l'aide de clés de chiffrement de données (DEK) générées aléatoirement. Le service de stockage d'objets vous permet de spécifier votre propre clé principale de chiffrement (MEK) gérée par le service de chambre forte pour les seaux (voir Utilisation de la console) et les objets individuels. Vous pouvez spécifier la clé principale à utiliser pour un objet indiqué sans avoir à tenir à jour et à gérer vos propres clés.

Vous devez disposer des autorisations requises dans les politiques GIA pour pouvoir spécifier votre propre clé de chiffrement principale. Voir Politique GIA requise et Permettre à un groupe d'utilisateurs d'utiliser des clés déléguées dans un compartiment.

Utilisation de l'interface de ligne de commande pour SSE avec vos clés dans le service de chambre forte

Vous pouvez utiliser vos propres clés de chiffrement dans le service de chambre forte pour chiffrer des objets à l'aide de l'interface de ligne de commande.

Vous pouvez fournir votre propre clé de chiffrement à l'aide du paramètre facultatif --opc-sse-kms-key-id target_key_id pour les commandes suivantes :

  • oci os object put
  • oci os object copy

target_key_id est l'OCID d'une clé existante dans le service de chambre forte à utiliser pour chiffrer l'objet.

Exemple pour charger un objet dans le seau à l'aide d'une clé dans le service de chambre forte :

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=="
}

Exemple pour effectuer un chargement en plusieurs parties à l'aide d'une clé dans le service de chambre forte :

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"
}

Exemple de copie d'un objet à l'aide d'une clé dans le service de chambre forte :

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"
}
Note

Les exemples de cette section utilisent la syntaxe complète pour les paramètres, par exemple --namespace et --bucket-name. Parfois, il existe des termes de paramètres abrégés que vous pouvez utiliser au lieu de termes complets, par exemple -ns pour --namespace et -bn pour --bucket-name. L'interface de ligne de commande en ligne --help pour une commande particulière affiche les paramètres abrégés que vous pouvez utiliser.

Pour des informations sur l'utilisation de l'interface de ligne de commande, voir Interface de ligne de commande. Pour une liste complète des indicateurs et les options disponibles pour les commandes de l'interface de ligne de commande, voir Informations de référence sur la ligne de commande.

Utilisation de l'API REST pour SSE avec des clés dans le service de chambre forte

Si vous souhaitez utiliser vos propres clés dans le service de chambre forte pour le chiffrement côté serveur, spécifiez l'en-tête de demande suivant avec l'OCID de la clé dans le service de chambre forte :

En-têtes Description API prises en charge
opc-sse-kms-key-id Spécifie l'OCID d'une clé existante dans le service de chambre forte à utiliser pour chiffrer l'objet.

PutObject

CopyObject

CreateMultipartUpload

UploadPart

Pour plus d'informations sur l'utilisation de l'API et sur les demandes de signature, voir la documentation de l'API REST et Données d'identification de sécurité. Pour plus d'informations sur les trousses SDK, voir Trousses SDK et interface de ligne de commande.

Rechargement de seau

Si vous avez modifié une clé de chiffrement principale depuis le moment où vous l'avez affectée à un seau, vous voudrez peut-être chiffrer de nouveau le seau. Tant que vous ne rechiffrez pas le seau de manière explicite, la version de clé associée au seau lorsqu'un objet a été inséré dans le seau continue de déchiffrer toutes les clés de chiffrement des données.

Pour chiffrer et déchiffrer toutes les clés de chiffrement des données avec la même version la plus récente de la clé principale affectée, rechiffrez le seau. Pour plus d'informations, voir Rechiffrement du chiffrement des données d'un seau.

Rechiffrement d'objet

Pour chiffrer et déchiffrer les clés de chiffrement de données d'un objet avec une clé de chiffrement principale différente, vous pouvez rechiffrer l'objet. Lorsque vous rechiffrez un objet, vous pouvez sélectionner une clé différente de celle affectée au compartiment ou la version la plus récente de la clé affectée au compartiment. Tant que vous ne rechiffrez pas un objet de manière explicite, la version de clé associée au seau (lorsque l'objet a été inséré dans le seau) continue de déchiffrer toutes les clés de chiffrement des données de l'objet.

Vous pouvez rechiffrer les clés de chiffrement de données d'un objet avec une clé gérée par Oracle, une clé que vous avez créée et que vous contrôlez au moyen d'une chambre forte que vous gérez ou une clé de chiffrement fournie par le client (SSE-C).

Note

Si vous utilisez le chiffrement côté serveur avec des clés fournies par le client (SSE-C), vous devez utiliser l'interface de ligne de commande pour fournir la clé SSE-C pendant le processus de chiffrement ou de rechiffrement. À l'aide de l'interface de ligne de commande, vous pouvez chiffrer de nouveau un objet avec une clé SSE-C différente, une clé gérée par Oracle ou une clé que vous gérez au moyen du service Chambre forte. Dans la console, vous pouvez uniquement crypter un objet pour utiliser la dernière version de la clé gérée par Oracle affectée au seau ou la dernière version d'une clé du chambre forte. Peu importe que la version de clé choisie soit celle affectée au seau.

Pour plus d'informations, voir Rechiffrement d'un objet.