Schlüssel auf OVHcloud KMS mit BYOK importieren und exportieren
Erfahren Sie, wie Sie verschlüsseltes Schlüsselmaterial sicher mit OVHcloud KMS mittels asymmetrischer RSA-Umschließung (BYOK) importieren und exportieren
Ziel
Bring Your Own Key (BYOK) ermöglicht Ihnen, kryptografisches Schlüsselmaterial mit dem OVHcloud Key Management Service (KMS) zu importieren und zu exportieren, ohne es im Klartext zu übertragen. Ein RSA-Transportschlüsselpaar schützt das Material während der Übertragung: Der öffentliche Schlüssel umschließt es, und nur der Inhaber des privaten Schlüssels kann die Umschließung wieder aufheben.
Diese Anleitung erklärt, wie Sie einen Schlüssel mit OVHcloud KMS mittels asymmetrischer RSA-Umschließung (BYOK) importieren und exportieren.
KMIP-BYOK ist noch nicht verfügbar. Diese Anleitung behandelt ausschließlich die regionale REST-API, die OKMS CLI und das Go SDK.
Für Schlüssel mit der Schutzstufe HSM gelten zusätzliche Regeln, sowohl als Transportschlüssel als auch als importierter oder exportierter Schlüssel. Siehe BYOK mit HSM-Schlüsseln verwenden.
Voraussetzungen
- Sie verfügen über einen OVHcloud Kunden-Account.
- Sie haben ein OVHcloud KMS bestellt.
- Sie haben für die OKMS-Datenebene eine Authentifizierungsmethode konfiguriert (Personal Access Token, Service-Account oder Zugriffszertifikat).
- Sie können eine IAM-Richtlinie auf Ihre OKMS-Domain anwenden; die erforderlichen BYOK-Aktionen sind unter IAM für BYOK konfigurieren aufgeführt.
- Optional: Sie haben die OKMS CLI (Version 0.6.0 oder höher) oder das Go SDK für die Beispiele in den Tabs installiert.
In der praktischen Anwendung
Die Zeremonie der RSA-Umschließung verstehen
An der Zeremonie sind zwei Umgebungen und ein Operator beteiligt:
- Ziel (Dst): Ihre OKMS-Domain, in der der importierte Schlüssel gespeichert wird.
- Quelle (Src): das System, das derzeit das Schlüsselmaterial hält (ein anderes KMS, eine Anwendung oder ein Werkzeug wie OpenSSL).
- Operator: die Entität mit den Berechtigungen, sowohl auf die OKMS-Domain als auch auf die Quelle des zu importierenden Schlüssels zuzugreifen. Dies kann eine Person sein, die die OKMS CLI verwendet, oder ein Dienst, der über die API arbeitet.
- Erzeugen Sie ein RSA-Transportschlüsselpaar auf dem OVHcloud KMS mit den Operationen
wrapKeyundunwrapKey. - Exportieren Sie den öffentlichen Transportschlüssel aus dem OVHcloud KMS.
- Importieren Sie den öffentlichen Transportschlüssel in die Quellumgebung.
- Exportieren Sie auf der Quelle das Schlüsselmaterial umschlossen (verschlüsselt) mit dem Transportschlüssel mittels
RSA-OAEPoderRSA-OAEP-256. - Importieren Sie auf dem Ziel den umschlossenen Schlüssel mit
POST /api/{okmsId}/v1/servicekeyund einerwrappedKeys-Nutzlast. Das KMS hebt die Umschließung des Ciphertexts mit dem privaten Transportschlüssel auf und speichert den resultierenden Serviceschlüssel.
Bei so importierten Schlüsseln ist never_extractable auf false gesetzt, weil das Material vor dem Import außerhalb des KMS existierte. Um einen Schlüssel später in umschlossener Form zu extrahieren, importieren Sie ihn mit extractable auf true (dies kann nachträglich nicht aktiviert werden) und folgen Sie Einen umschlossenen Schlüssel exportieren. Die vollständige Attributliste finden Sie unter Sensitivitätsattribute von Serviceschlüsseln.
Für diese Anleitung benötigen Sie zwei Werte Ihrer OKMS-Domain: ihren regionalen Endpoint und ihre okmsId. Die REST-API-Aufrufe enthalten beide in der URL, während die OKMS CLI und das Go SDK sie aus ihrer Konfiguration lesen. Beide werden vom folgenden API-Aufruf zurückgegeben:
Sie werden auch im Tab Allgemeine Informationen im angezeigt.
Bevorzugen Sie diese Zeremonie gegenüber dem Klartext-Schlüsselimport, wenn der Schlüssel während der Übertragung vertrauenswürdig bleiben muss.
IAM für BYOK konfigurieren
Wenden Sie eine Richtlinie auf die Ressource Ihrer OKMS-Domain an. Deren URN wird im Tab Allgemeine Informationen im angezeigt. Ersetzen Sie <identity_urn> und <okms_urn> durch Ihre Werte. Erstellen Sie Richtlinien über das OVHcloud Kundencenter oder die OVHcloud API.
BYOK-Import — Serviceschlüssel lesen, erstellen oder importieren und mit einem Transportschlüssel die Umschließung aufheben:
BYOK-Export — einen öffentlichen Transportschlüssel importieren, die Extrahierbarkeit aktualisieren und einen Schlüssel für den Export umschließen:
Für den Import muss serviceKey/unwrapKey auf dem RSA-Transportschlüssel erlaubt sein, der über wrappingKeyId referenziert wird. Für den Export importieren Sie zuerst den öffentlichen Ziel-Transportschlüssel (create / import) und erlauben Sie anschließend serviceKey/wrapKey auf diesem Transportschlüssel sowie serviceKey/get auf dem zu exportierenden Schlüssel. serviceKey/update ist erforderlich, um extractable nach dem Export auf false zu setzen.
Den RSA-Transportschlüssel auf dem Ziel-KMS erstellen
Erstellen Sie einen RSA-Schlüssel, der ausschließlich der Umschließung dient. Setzen Sie für die Import-Zeremonie auf diesem Schlüssel sowohl wrapKey als auch unwrapKey; sie schließen sich mit sign und verify gegenseitig aus.
Unterstützte RSA-Schlüsselgrößen: 2048, 3072 oder 4096 Bit.
SOFTWARE ist die Standard-Schutzstufe, Sie müssen sie daher nicht angeben.
Speichern Sie die zurückgegebene Schlüssel-id — Sie benötigen sie beim Import als wrappingKeyId.
Den öffentlichen Transportschlüssel abrufen
Exportieren Sie den öffentlichen Teil des Transportschlüssels und stellen Sie ihn der Quellumgebung zur Verfügung. Geben Sie den privaten Schlüssel niemals weiter — er verbleibt im Ziel-KMS.
Die Antwort enthält das öffentliche Schlüsselmaterial im Array keys (JWK).
Das Quell-Schlüsselmaterial umschließen
Verschlüsseln Sie in der Quellumgebung das Schlüsselmaterial mit dem öffentlichen RSA-Zielschlüssel.
Dieser Schritt erfolgt außerhalb von OVHcloud KMS: Verwenden Sie in der Quellumgebung eine JOSE-Bibliothek.
Unterstützte Algorithmen für die Umschließung (RFC 7518):
keyFormatType beschreibt das Format des Klartext-Schlüsselmaterials vor der Umschließung und nach dem Aufheben der Umschließung. Der Ciphertext ist stets eine JWE Compact Serialization-Zeichenkette (der Algorithmus der Umschließung steht im JWE-Header).
Nach dem Umschließen mit dem öffentlichen Zielschlüssel senden Sie den entstandenen JWE-Compact-Serialization-ciphertext in der Importanfrage. Ein Go-Beispiel für diesen Umschließungsschritt finden Sie unter End-to-End-Beispiel in Go.
Den umschlossenen Schlüssel importieren
Rufen Sie POST /api/{okmsId}/v1/servicekey mit einem wrappedKeys-Array anstelle von Klartext-keys auf.
Jeder wrappedKeys-Eintrag:
Sie können einen öffentlichen Schlüssel allein importieren (class wird zu PUBLIC_KEY) oder einen privaten Schlüssel (das KMS rekonstruiert den öffentlichen Teil; class wird zu KEY_PAIR). Symmetrisches Material wird als SECRET_KEY gespeichert.
IAM-Aktionen bei diesem Aufruf: okms:apikms:serviceKey/create, okms:apikms:serviceKey/import und okms:apikms:serviceKey/unwrapKey auf dem Transportschlüssel.
keyFormatType-Werte: RAW, JWK, PKCS1 oder PKCS8.
Den importierten Schlüssel prüfen
Bestätigen Sie, dass der Schlüssel existiert und dem erwarteten Typ sowie den erwarteten Operationen entspricht.
Prüfen Sie Folgendes:
- der
statedes Schlüssels istactive(oder aktivieren Sie ihn, falls Ihr Workflow dies erfordert). type,sizeundoperationsentsprechen Ihren Absichten.- die Sensitivitätsattribute unter
attributesspiegeln einen importierten Schlüssel wider (never_extractableistfalse).
Anschließend können Sie den Schlüssel für encrypt, decrypt, sign oder verify verwenden, wie in OVHcloud Key Management Service (KMS) verwenden beschrieben.
Einen umschlossenen Schlüssel exportieren
Der sichere Export ist die Umkehrung des Imports: OVHcloud KMS verschlüsselt das Schlüsselmaterial mit einem RSA-Transportschlüssel und liefert nur einen JWE-Ciphertext zurück. Der private Transportschlüssel muss in der Ziel-Umgebung liegen — hier das externe System, das den Schlüssel empfängt, nicht OVHcloud KMS —, damit nur diese Umgebung die Umschließung des Materials aufheben kann.
Die Export-Zeremonie verstehen
- Erzeugen Sie ein RSA-Transportschlüsselpaar in der Ziel-Umgebung (ein anderes KMS oder ein Werkzeug, das den Schlüssel empfängt).
- Importieren Sie den öffentlichen Ziel-Transportschlüssel in OVHcloud KMS mit der Operation
wrapKey. Dieser Schlüssel ist die beim Export verwendetewrappingKeyId. - Exportieren Sie auf OVHcloud KMS den Serviceschlüssel umschlossen durch diesen Transportschlüssel. Der Schlüssel muss mit
extractableauftrueerstellt oder importiert worden sein. Setzen Sieextractabledanach nach Möglichkeit auffalse. - Übertragen Sie den Ciphertext an das Ziel und heben Sie seine Umschließung mit dem privaten Ziel-Transportschlüssel auf.
Erzeugen Sie das Export-Transportschlüsselpaar nicht auf OVHcloud KMS. Bliebe der private Transportschlüssel in OVHcloud KMS, könnte das Ziel die Umschließung des Ciphertexts nicht aufheben. Nur der öffentliche Teil wird für die Umschließung in OVHcloud KMS importiert.
Der über wrappingKeyId referenzierte Transportschlüssel muss ein RSA-Schlüssel in derselben OKMS-Domain mit der Verwendung wrapKey sein. Informationen zum Export eines im HSM gespeicherten Schlüssels finden Sie unter BYOK mit HSM-Schlüsseln verwenden. Sensible Schlüssel (AES/oct sowie privates RSA/EC-Material) können nur nach der Umschließung extrahiert werden — die Extraktion im Klartext wird für diese Schlüssel nicht unterstützt.
Den öffentlichen Ziel-Transportschlüssel in OVHcloud KMS importieren
Registrieren Sie den öffentlichen Zielschlüssel, damit OVHcloud KMS den exportierten Schlüssel damit umschließen kann. Importieren Sie ihn als rein öffentlichen RSA-Schlüssel mit wrapKey (ohne privates Material).
Speichern Sie die zurückgegebene Schlüssel-id als wrappingKeyId.
Extraktion aktivieren
Der zu exportierende Schlüssel muss extrahierbar sein, und dies wird bei der Erstellung oder beim Import des Schlüssels festgelegt. Danach kann extractable nur noch von true auf false geändert werden: Einmal auf false gesetzt, kann es nie wieder auf true gesetzt werden. Ein Schlüssel, der ohne extractable auf true erstellt oder importiert wurde, kann daher nie exportiert werden. Diese Regel gilt für SOFTWARE- und HSM-Schlüssel gleichermaßen.
Das Aktivieren der Extraktion verringert die Schutzgrenze des Schlüssels, und bei einem mit extractable auf true erstellten Schlüssel ist never_extractable dauerhaft auf false gesetzt. Erstellen Sie einen extrahierbaren Schlüssel nur, wenn Sie ihn migrieren möchten.
Setzen Sie extractable bei der Erstellung des Schlüssels auf true:
Setzen Sie bei einem Import "extractable": true im Anfragetext (REST-API), fügen Sie --extractable hinzu (OKMS CLI) oder übergeben Sie okms.WithExtractable(true) (Go SDK).
Sobald der Schlüssel nicht mehr exportiert werden muss, zum Beispiel nach einem erfolgreichen umschlossenen Export (siehe Den mit dem Transportschlüssel umschlossenen Schlüssel exportieren), deaktivieren Sie die Extraktion. Dies kann nicht rückgängig gemacht werden. IAM-Aktion: okms:apikms:serviceKey/update.
Den mit dem Transportschlüssel umschlossenen Schlüssel exportieren
Rufen Sie GET /api/{okmsId}/v1/servicekey/{keyId} mit den unten stehenden Abfrageparametern für die Umschließung auf. Sind diese Parameter vorhanden, liefert die API wrappedKeys statt Klartext-keys.
IAM-Aktionen: okms:apikms:serviceKey/get auf dem exportierten Schlüssel und okms:apikms:serviceKey/wrapKey auf dem Transportschlüssel.
Beispiel einer Antwort:
Die Umschließung des Ciphertexts am Ziel aufheben
Übertragen Sie den ciphertext in die Zielumgebung. Heben Sie seine Umschließung mit dem privaten Ziel-Transportschlüssel auf (dem Gegenstück des öffentlichen Schlüssels, den Sie in OVHcloud KMS importiert haben).
- Ist das Ziel eine andere OKMS-Domain, importieren Sie das umschlossene Material dort mit
wrappedKeyswie unter Den umschlossenen Schlüssel importieren, und verwenden Sie die ID des Transportschlüssels dieser Domain alswrappingKeyId. - Ist das Ziel ein externes System, nutzen Sie dessen native API zum Aufheben der Umschließung bzw. zum Import mit dem privaten Transportschlüssel, demselben
keyFormatTypeund demselben Algorithmus für die Umschließung wie beim Export.
BYOK mit HSM-Schlüsseln verwenden
Mit der Schutzstufe HSM wird das Schlüsselmaterial innerhalb des HSM umschlossen und ausgepackt: Es erscheint in OVHcloud KMS nie im Klartext. Das JWE-Format ist dasselbe wie für SOFTWARE-Schlüssel (RSA-OAEP oder RSA-OAEP-256 mit A256GCM).
Die Schutzstufe HSM ist nicht in allen Regionen verfügbar. Um ihre Verfügbarkeit in der Region Ihrer OKMS-Domain zu prüfen, sehen Sie sich die Liste protectionLevel an, die der folgende API-Aufruf für diese Region zurückgibt:
Der Transportschlüssel muss im HSM gespeichert sein, sobald der importierte oder exportierte Schlüssel dort gespeichert ist, wie in der folgenden Tabelle zusammengefasst:
Die nachfolgend beschriebenen Importe in das HSM werden nur für die REST-API gezeigt.
Einen HSM-Transportschlüssel erstellen
Um einen Schlüssel in das HSM zu importieren, erstellen Sie den Transportschlüssel mit der Schutzstufe HSM:
Exportieren Sie anschließend seinen öffentlichen Schlüssel und umschließen Sie das Schlüsselmaterial an der Quelle, wie unter Den öffentlichen Transportschlüssel abrufen und Das Quell-Schlüsselmaterial umschließen beschrieben.
Einen Schlüssel in das HSM importieren
Da das HSM das ausgepackte Material nie preisgibt, kann OVHcloud KMS den Schlüsseltyp nicht ableiten. Die Importanfrage unterscheidet sich von einem SOFTWARE-Import:
- Setzen Sie
protectionLevelaufHSM. Der Transportschlüssel muss ebenfalls einHSM-Schlüssel sein. - Geben Sie
typean:oct,RSAoderEC. Setzen Sie fürRSAundECwedersizenochcurve: Das HSM liest sie aus dem Schlüssel. Füroctistsizeoptional (128,192oder256). - Setzen Sie in
wrappedKeyskeinkeyFormatType. Der im JWE umschlossene Klartext muss für einenoct-Schlüssel aus den Rohbytes des Schlüssels bestehen und für einenRSA- oderEC-Schlüssel aus dem privaten Schlüssel in PKCS#8 (DER). - Unterstützte Schlüssel: AES mit
128,192oder256Bit, RSA mit2048,3072oder4096Bit, ECP-256,P-384oderP-521. Ein öffentlicher Schlüssel allein kann nicht umschlossen in das HSM importiert werden; nur ein Klartext-Import ist möglich.
Ein HSM-Transportschlüssel kann auch die Umschließung eines SOFTWARE-Schlüssels aufheben: Folgen Sie in diesem Fall Den umschlossenen Schlüssel importieren mit keyFormatType.
Einen Schlüssel aus dem HSM exportieren
Nur symmetrische (oct) Schlüssel können aus dem HSM exportiert werden: Das HSM gibt private RSA- oder EC-Schlüssel nie heraus. Wie bei einem SOFTWARE-Schlüssel muss der Schlüssel mit extractable auf true erstellt oder importiert worden sein, was nachträglich nicht aktiviert werden kann (siehe Extraktion aktivieren).
Der Transportschlüssel muss im HSM gespeichert sein. Importieren Sie den öffentlichen Ziel-Transportschlüssel mit der Schutzstufe HSM:
Exportieren Sie anschließend den Schlüssel und setzen Sie dabei wrappedKeyFormat auf RAW: Das HSM umschließt immer die Rohbytes des Schlüssels, daher ist die entschlüsselte JWE-Nutzlast der AES-Schlüssel selbst (32 Bytes für einen 256-Bit-Schlüssel).
Entschlüsseln Sie am Ziel das JWE mit dem privaten Transportschlüssel, wie unter Die Umschließung des Ciphertexts am Ziel aufheben beschrieben.
End-to-End-Beispiel in Go
Die folgenden Beispiele führen beide Zeremonien mit einem RSA-Schlüsselpaar durch. Sie verwenden das Go SDK für die Aufrufe an OVHcloud KMS und go-jose für die JWE-Operationen außerhalb von OVHcloud KMS. Beide Beispiele kodieren das Schlüsselmaterial in PKCS#8 (DER), was dem keyFormatType-Wert PKCS8 entspricht.
Einen lokal erzeugten Schlüssel importieren
Das Programm erzeugt den Schlüssel mit der Go-Standardbibliothek, umschließt ihn lokal mit dem öffentlichen Transportschlüssel und importiert ihn anschließend. Der Schlüssel erreicht OVHcloud KMS nie im Klartext.
Der Algorithmus für die JWE-Inhaltsverschlüsselung (enc) muss A256GCM sein.
Einen Schlüssel exportieren und das JWE entschlüsseln
Das Ziel (hier das lokale Programm) erzeugt das Transportschlüsselpaar, importiert nur dessen öffentlichen Teil in OVHcloud KMS und entschlüsselt anschließend das exportierte JWE mit dem privaten Teil.
Weiterführende Informationen
OVHcloud Key Management Service (KMS) verwenden
OKMS-Authentifizierungsmethoden
Erste Schritte mit OVHcloud Key Management Service (KMS)
Treten Sie unserer User Community bei.