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.
Schlüssel, die mit der Schutzstufe HSM erstellt wurden, können derzeit nicht für BYOK verwendet werden – weder als Transportschlüssel noch als umschlossenes Schlüsselmaterial.
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 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, setzen Sie extractable auf true 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 vor (und nach) dem Export 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.
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(SchutzstufeSOFTWARE). Dieser Schlüssel ist die beim Export verwendetewrappingKeyId. - Setzen Sie auf OVHcloud KMS
extractableunmittelbar vor dem Export auf dem Serviceschlüssel auftrue, und exportieren Sie ihn anschließend umschlossen durch diesen Transportschlüssel. Setzen Sieextractabledanach nach Möglichkeit wieder 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 SOFTWARE-RSA-Schlüssel in derselben OKMS-Domain mit der Verwendung wrapKey sein. 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. Setzen Sie extractable idealerweise nur für den Exportvorgang auf true (via PATCH) und danach wieder auf false. Lassen Sie Schlüssel bei der Erstellung nach Möglichkeit nicht extrahierbar: Wenn Sie einen Schlüssel extrahierbar machen, wird never_extractable dauerhaft auf false gesetzt.
Das Aktivieren der Extraktion verringert die Schutzgrenze des Schlüssels. Setzen Sie extractable nur dann auf true, wenn Sie den Schlüssel migrieren müssen, und setzen Sie es danach nach Möglichkeit wieder auf false.
IAM-Aktion: okms:apikms:serviceKey/update.
Deaktivieren Sie die Extraktion nach einem erfolgreichen umschlossenen Export (siehe Den mit dem Transportschlüssel umschlossenen Schlüssel exportieren) erneut:
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.
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.