Object Storage-Datenverschlüsselung

Erfahren Sie, wie Object Storage Service alle Objekte mit dem 256-Bit Advanced Encryption Standard (AES-256) zum Verschlüsseln von Objektdaten auf dem Server verschlüsselt und entschlüsselt.

Jedes Objekt wird mit einem eigenen Datenverschlüsselungsschlüssel verschlüsselt. Datenverschlüsselungsschlüssel werden immer mit einem Master-Verschlüsselungsschlüssel verschlüsselt, der dem Bucket zugewiesen ist. Die Verschlüsselung ist standardmäßig aktiviert und kann nicht deaktiviert werden. Standardmäßig verwaltet Oracle den Masterverschlüsselungsschlüssel.

Neben dieser Standardverschlüsselung können Sie die folgenden Strategien verwenden, um Daten zu verschlüsseln:
  • Verwenden Sie die clientseitige Verschlüsselung, um Objekte mit ihren Verschlüsselungsschlüsseln zu verschlüsseln, bevor sie in Object Storage-Buckets gespeichert werden. Sie können auch die Amazon S3-Kompatibilitäts-API zusammen mit dem clientseitigen Objektverschlüsselung im AWS-SDK für Java verwenden. Weitere Einzelheiten zu diesem SDK finden Sie unter Amazon S3-Kompatibilitäts-API .

  • Verwenden Sie die serverseitige Verschlüsselung mit Ihren eigenen Schlüsseln. Weitere Informationen finden Sie unter Eigene Schlüssel für serverseitige Verschlüsselung verwenden.

  • Weisen Sie einen Oracle Cloud Infrastructure Vault-Masterverschlüsselungsschlüssel zu, den Sie nach Ihrem eigenen Zeitplan kontrollieren und rotieren können. Weitere Informationen finden Sie unter Eigene Schlüssel in Vault für serverseitige Verschlüsselung verwenden.

Eigene Schlüssel für serverseitige Verschlüsselung verwenden

Dieses Thema enthält Details zur Implementierung und Verwendung der serverseitigen Verschlüsselung mit benutzerdefinierten Schlüsseln (SSE-C).

SSE-C

Mit optionalen API-Headern können Sie einen eigenen 256-Bit-AES-Verschlüsselungsschlüssel angeben, mit dem Objekte verschlüsselt und entschlüsselt werden, die aus Object Storage hochgeladen und heruntergeladen werden:

  • Wenn Sie ein Objekt hochladen, geben Sie den Verschlüsselungsschlüssel an. Object Storage verschlüsselt das Objekt mit diesem Schlüssel und löscht den Schlüssel sofort.
  • Wenn Sie ein Objekt herunterladen möchten, geben Sie denselben Schlüssel an, mit dem das Objekt verschlüsselt wurde. Daraufhin entschlüsselt Object Storage das Objekt und gibt es an Sie zurück.

Sie verwalten die Verschlüsselungsschlüssel, und Object Storage verwaltet die Verschlüsselung und Entschlüsselung.

Wichtig

Object Storage speichert Ihre Verschlüsselungsschlüssel nicht. Sie sind für die Verfolgung und ggf. die Rotation des mit jedem Objekt verknüpften Schlüssels verantwortlich. Wenn Sie Ihren Verschlüsselungsschlüssel verlieren, können Sie Ihr Objekt nicht abrufen.

Geltungsbereich und Constraints

Machen Sie sich mit Geltungsbereich und Constraints in Bezug auf SSE-C vertraut:

  • Ein SSE-C-Schlüssel kann keinem Bucket zugeordnet und nur zur Verschlüsselung einzelner Objekte verwendet werden.
  • Sie können Objekte mit Ihrem eigenen Verschlüsselungsschlüssel mit vorab authentifizierten Anforderungen verschlüsseln. Um ein SSE-C-verschlüsseltes Objekt mit einer vorab authentifizierten Anforderung abzurufen, müssen Sie Ihren Verschlüsselungsschlüssel angeben.
  • Um ein SSE-C-verschlüsseltes Objekt zu löschen oder umzubenennen, müssen Sie Ihren Verschlüsselungsschlüssel nicht angeben.
  • Sie können nur kmsKeyId oder sseCustomerKey in der ReencryptObject-Anforderungs-Payload angeben, nicht beides. Wenn die Anforderungs-Payload leer ist, wird das Objekt mit dem Verschlüsselungsschlüssel verschlüsselt, der dem Bucket zugewiesen ist. Der Bucket-Verschlüsselungsmechanismus kann ein von Oracle verwalteter Masterverschlüsselungsschlüssel oder der Vault-Service sein.
  • Sie können SSE-C-Schlüssel nur über die Object Storage-APIs und die Befehlszeilenschnittstelle (CLI) bereitstellen. Sie können über die Konsole keine Objekte mit einem vom Kunden bereitgestellten Schlüssel hochladen oder abrufen.
  • Die Amazon S3-Kompatibilitäts-API unterstützt auch SSE-C.

REST-API für SSE-C verwenden

Wenn Sie Ihre eigenen Schlüssel für serverseitige Verschlüsselung verwenden möchten, geben Sie die folgenden drei Anforderungsheader mit den Verschlüsselungsschlüsselinformationen an:

Header Beschreibung Unterstützte APIs
opc-sse-customer-algorithm Gibt "AES256" als Verschlüsselungsalgorithmus an. CopyObject

GetObject

HeadObject

PutObject

CreateMultipartUpload

UploadPart

opc-sse-customer-key Gibt den base64-codierten 256-Bit-Verschlüsselungsschlüssel an, mit dem die Daten verschlüsselt oder entschlüsselt werden sollen.
opc-sse-customer-key-sha256 Gibt den base64-codierten SHA256-Hash des Verschlüsselungsschlüssels an.

Für CopyObject:

Wenn das Quellobjekt mit einem SSE-C-Schlüssel verschlüsselt ist, müssen Sie auch die folgenden drei Header angeben, damit Object Storage das Objekt entschlüsseln kann.

Header Beschreibung Unterstützte APIs
opc-source-sse-customer-algorithm Gibt "AES256" als Verschlüsselungsalgorithmus an, mit dem das Quellobjekt entschlüsselt werden soll. CopyObject
opc-source-sse-customer-key Gibt den von base64-codierten 256-Bit-Verschlüsselungsschlüssel an, mit dem das Quellobjekt entschlüsselt werden soll.
opc-source-sse-customer-key-sha256 Gibt den base64-codierten SHA256-Hash des Verschlüsselungsschlüssels an, mit dem das Quellobjekt entschlüsselt wird.

CLI für SSE-C verwenden

Sie können auch Objekte über die Befehlszeilenschnittstelle (CLI) mit eigenen Verschlüsselungsschlüsseln verschlüsseln.

Sie können Ihren eigenen Verschlüsselungsschlüssel mit dem optionalen Parameter --encryption-key-file filename für die folgenden Befehle angeben:

  • 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 verweist auf eine Datei, die die base64-codierte Zeichenfolge des AES-256-Verschlüsselungsschlüssels enthält. Es sind keine weiteren Parameter erforderlich. Object Storage decodiert den Schlüssel zur Berechnung des SHA256-Hashs des Verschlüsselungsschlüssels.

Wenn das Quellobjekt mit einem SSE-C-Schlüssel verschlüsselt ist, müssen Sie auch den optionalen Parameter --source-encryption-key-file filename für die folgenden Befehle angeben:

  • oci os object copy
  • oci os object reencrypt

filename verweist auf eine Datei, die die base64-codierte Zeichenfolge des AES-256-Quellverschlüsselungsschlüssels enthält. Es sind keine weiteren Parameter erforderlich. Object Storage decodiert den Schlüssel zur Berechnung des SHA256-Hashs des Quellverschlüsselungsschlüssels.

Informationen zur Verwendung der CLI finden Sie unter Befehlszeilenschnittstelle (CLI). Eine vollständige Liste der Flags und Optionen, die für CLI-Befehle verfügbar sind, finden Sie in der Befehlszeilenreferenz.

Eigene Schlüssel in Vault für serverseitige Verschlüsselung verwenden

Dieses Thema enthält die Details zur Implementierung der serverseitigen Verschlüsselung mit Ihren eigenen Schlüsseln in Vault.

Der Oracle Cloud Infrastructure Object Storage-Service verschlüsselt Ihre Daten und Metadaten (von Kunden bereitgestellte Schlüsselwertpaare) mit zufällig generierten Datenverschlüsselungsschlüsseln (Data Encryption Keys, DEKs). Mit Object Storage können Sie Ihren eigenen Masterverschlüsselungsschlüssel (Master Encryption Key, MEK) angeben, der vom Vault-Service für Buckets und einzelne Objekte verwaltet wird (siehe Konsole verwenden). Sie können den MEK angeben, der für ein bestimmtes Objekt verwendet werden soll, ohne Ihre eigenen Schlüssel verwalten zu müssen.

Sie benötigen die erforderlichen Berechtigungen in den IAM-Policys, um Ihren eigenen MEK angeben zu können. Siehe Erforderliche IAM-Policy und Delegieren der Schlüsselverwendung in einem Compartment durch eine Benutzergruppe zulassen.

CLI für SSE mit den Schlüsseln in Vault verwenden

Sie können Objekte über die CLI mit eigenen Verschlüsselungsschlüsseln in Vault verschlüsseln.

Sie können Ihren eigenen Verschlüsselungsschlüssel mit dem optionalen Parameter --opc-sse-kms-key-id target_key_id für die folgenden Befehle angeben:

  • oci os object put
  • oci os object copy

target_key_id ist die OCID eines vorhandenen Schlüssels im Vault, mit dem das Objekt verschlüsselt werden soll.

Beispiel zum Hochladen eines Objekts in den Bucket mit einem Schlüssel in 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=="
}

Beispiel für einen Multipart-Upload mit einem Schlüssel in 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"
}

Beispiel zum Kopieren eines Objekts mit einem Schlüssel in 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"
}
Hinweis

In den Beispielen in diesem Abschnitt wird die vollständige Syntax für Parameter verwendet. Beispiel: --namespace und --bucketname. In einigen Fällen können Sie verkürzte Parameterbegriffe anstelle der vollständigen verwenden. Beispiel: -ns für --namespace und -bn für --bucket-name. Die mit --help aufrufbare CLI-Onlinehilfe für einen bestimmten Befehl zeigt die verkürzten Parameter an, die Sie verwenden können.

Informationen zur Verwendung der CLI finden Sie unter Befehlszeilenschnittstelle (CLI). Eine vollständige Liste der Flags und Optionen, die für CLI-Befehle verfügbar sind, finden Sie in der Befehlszeilenreferenz.

REST-API für SSE mit Schlüsseln in Vault verwenden

Wenn Sie Ihre eigenen Schlüssel in Vault für serverseitige Verschlüsselung verwenden möchten, geben Sie den folgenden Anforderungsheader mit der OCID des Schlüssels in Vault an:

Header Beschreibung Unterstützte APIs
opc-sse-kms-key-id Gibt die OCID eines vorhandenen Schlüssels in Vault an, mit dem das Objekt verschlüsselt werden soll.

PutObject

CopyObject

CreateMultipartUpload

UploadPart

Informationen zur Verwendung der API und zu Signieranforderungen finden Sie unter REST-API-Dokumentation und Sicherheitszugangsdaten. Informationen zu SDKs finden Sie unter SDKs und die CLI.

Erneute Verschlüsselung des Buckets

Wenn Sie einen Masterverschlüsselungsschlüssel seit seiner Zuweisung zu einem Bucket rotiert haben, können Sie den Bucket erneut verschlüsseln. Die Schlüsselversion, die dem Bucket beim Hinzufügen eines Objekts zugeordnet war, entschlüsselt so lange alle Datenverschlüsselungsschlüssel, bis Sie den Bucket explizit neu verschlüsseln.

Sie müssen den Bucket erneut verschlüsseln, um alle Datenverschlüsselungsschlüssel mit derselben aktuellen Version des zugewiesenen Masterverschlüsselungsschlüssels zu ver- und entschlüsseln. Weitere Informationen finden Sie unter Datenverschlüsselung eines Buckets erneut verschlüsseln.

Erneute Objektverschlüsselung

Um die Datenverschlüsselungsschlüssel eines Objekts mit einem anderen Masterverschlüsselungsschlüssel zu verschlüsseln und zu entschlüsseln, können Sie das Objekt erneut verschlüsseln. Wenn Sie ein Objekt erneut verschlüsseln, können Sie entweder einen anderen Schlüssel als den Schlüssel, der dem Bucket zugewiesen ist, oder die letzte Version des dem Bucket zugewiesenen Schlüssels auswählen. Die Schlüsselversion, die dem Bucket beim Hinzufügen eines Objekts zugeordnet war, entschlüsselt so lange alle Datenverschlüsselungsschlüssel, bis Sie ein Objekt explizit neu verschlüsseln.

Sie können die Datenverschlüsselungsschlüssel eines Objekts mit einem von Oracle verwalteten Schlüssel, einem von Ihnen erstellten und über einen von Ihnen verwalteten Vault kontrollierten Schlüssel oder einen vom Kunden bereitgestellten Verschlüsselungsschlüssel (SSE-C) erneut verschlüsseln.

Hinweis

Wenn Sie serverseitige Verschlüsselung mit kundenspezifischen Schlüsseln (SSE-C) verwenden, müssen Sie die Befehlszeilenschnittstelle (CLI) verwenden, um den SSE-C-Schlüssel während des Verschlüsselungs- oder erneuten Verschlüsselungsprozesses bereitzustellen. Mit der Befehlszeile "CLI" können Sie ein Objekt mit einem anderen SSE-C-Schlüssel, einem von Oracle verwalteten Schlüssel oder einem Schlüssel, den Sie über den Vault-Service verwalten, erneut verschlüsseln. In der Konsole können Sie ein Objekt nur erneut verschlüsseln, um die neueste Version des von Oracle verwalteten Schlüssels zu verwenden, der dem Bucket oder der neuesten Version eines Vault-Schlüssels zugewiesen ist. Es ist egal, ob die gewählte Schlüsselversion diejenige ist, die dem Bucket zugewiesen ist.

Weitere Informationen finden Sie unter Objekt erneut verschlüsseln.