DuoKey für KMIP — Überblick
DuoKey hostet einen OASIS-KMIP-Server, damit standardkonforme Clients — Datenbanken, Speicher-Arrays und Virtualisierungsplattformen — kryptografische Schlüssel über einen einzigen, auditierten Endpunkt verwalten können.
Was ist KMIP?
Das Key Management Interoperability Protocol (KMIP) ist ein OASIS-Standard, der festlegt, wie kryptografiefähige Anwendungen — Datenbanken, Speichersysteme, Backup-Appliances — mit einer zentralen Schlüsselverwaltung kommunizieren. Es standardisiert den vollständigen Schlüssellebenszyklus (Erstellen, Abrufen, Aktivieren, Widerrufen, Vernichten), sodass eine einzige Schlüsselverwaltung viele verschiedene Produkte ohne individuelle Integrationen bedienen kann.
Wie DuoKey KMIP umsetzt
DuoKey Cockpit v2 betreibt einen KMIP-Server-Endpunkt. Konforme Clients verbinden sich über TLS mit ihm und senden KMIP-Operationen; DuoKey erzeugt das Schlüsselmaterial, schützt es und gibt es zurück (oder führt Ver-/Entschlüsselung durch) gemäß der Endpunkt-Richtlinie.
Der KMIP-Server ist eine Fähigkeit von Cockpit v2 (Rust/React) und wird als PKI-Service-Endpunkt bereitgestellt. Er hat nichts mit dem Konfigurationsmodell von Cockpit v1 (.NET/Angular) zu tun.
Protokollunterstützung
| Capability | Details |
|---|---|
| KMIP-Versionen | Verhandelt 2.1, 2.0, 1.4, 1.3, 1.2, 1.1, 1.0. Das standardmäßig angebotene Profil ist KMIP 2.1. |
| Transporte | Binäres TTLV über TLS sowie ein JSON-über-HTTPS-Profil. |
| Standard-TLS-Port | 5696 (der von der IANA zugewiesene KMIP-Port). |
| Kodierung | Kanonische KMIP-2.x-Attribute; 1.x-TemplateAttribute-Anfragen werden beim Eingang normalisiert und für Clients vor 2.0 wieder angepasst ausgegeben. |
Unterstützte Operationen
Der Endpunkt verarbeitet die folgenden KMIP-Operationen:
| Operation | Purpose |
|---|---|
Create | Erzeugt einen neuen verwalteten Schlüssel. |
Register | Importiert vom Client bereitgestelltes Schlüsselmaterial. |
Get | Ruft ein Schlüsselobjekt ab. |
GetAttributes | Liest die Attribute eines Objekts. |
GetAttributeList | Listet die Attributnamen eines Objekts auf. |
Locate | Findet Objekte, die auf Attributfilter passen. |
Activate | Versetzt einen Schlüssel in den aktiven Zustand. |
Revoke | Widerruft einen Schlüssel (der standardmäßige Deaktivierungspfad). |
Destroy | Entfernt Schlüsselmaterial dauerhaft. |
| NaN | Serverseitige kryptografische Operationen. |
ReKey | Überführt einen Schlüssel in frisches Material unter einem neuen Bezeichner. |
Check | Prüft die Nutzungsbeschränkungen eines Objekts. |
Query | Ermittelt die Serverfähigkeiten. |
DiscoverVersions | Verhandelt die KMIP-Protokollversion. |
Operationen zur asymmetrischen Erzeugung und Signierung — CreateKeyPair, DeriveKey, Certify, Sign, MAC sowie die Operationen zur Attributänderung — werden nicht unterstützt und liefern ein OperationNotSupported-Ergebnis zurück. Die Endpunkt-Richtlinie kann die zulässigen Operationen pro Bereitstellung zusätzlich einschränken.
Objekte und Algorithmen
| Item | Support |
|---|---|
| Verwaltete Objekttypen | Symmetrische Schlüssel, öffentliche Schlüssel, private Schlüssel, Zertifikate und geheime Daten. |
| Schlüsselerzeugung | Nur symmetrisches Material: AES (128 / 192 / 256 Bit, standardmäßig 256) und HMAC (256 Bit oder mehr). |
| Serverseitige Kryptografie | AES-256-GCM für Encrypt / Decrypt, wobei ein eigenständiges nonce ‖ ciphertext ‖ tag-Blob zurückgegeben wird. |
DuoKey erzeugt und speichert symmetrisches Schlüsselmaterial (AES, HMAC). Asymmetrische Objekttypen und Zertifikate können als Objekte registriert und verwaltet werden, der Server erzeugt jedoch selbst keine RSA- oder EC-Schlüsselpaare.
Wie Schlüssel geschützt werden
Erzeugtes Schlüsselmaterial wird mit AES-256-GCM unter dem Plattform-Verschlüsselungsschlüssel im Ruhezustand verschlüsselt — derselbe Umschlag, der auch für Vault-Anmeldedaten und Identitätsanbieter-Geheimnisse verwendet wird — und in der DuoKey-Datenbank gespeichert. Schlüssel überstehen Neustarts und liegen niemals nur im Prozessspeicher. Destroy löscht das gespeicherte Material endgültig.
Bei KMIP werden Schlüssel durch Umschlagverschlüsselung unter dem Plattformschlüssel geschützt, nicht durch MPC. Der MPC-basierte Schlüsselschutz gilt für andere DuoKey-Schlüsselverwaltungsabläufe, nicht für das hier beschriebene KMIP-Server-Backend.
Client-Authentifizierung
Die Client-Authentifizierung ist optionales gegenseitiges TLS (mTLS): Der CommonName eines vorgelegten Client-Zertifikats wird zur auditierten Client-Identität. Die endpunktbezogene Richtlinie (allowed_auth_methods, require_client_cert) entscheidet, welche Methoden akzeptiert werden:
| Method | How it works |
|---|---|
| mTLS | Der Client legt ein X.509-Zertifikat vor; dessen CommonName ist die Identität. |
| Anmeldedaten in der Nachricht | Eine im Anfrage-Header übertragene KMIP-Benutzername/Passwort-Anmeldeinformation. |
| Anonym | Nur zulässig, wenn die Endpunkt-Richtlinie es ausdrücklich erlaubt. |
Um mTLS-Identitäten zu vertrauen, richten Sie den Listener auf ein PEM-Bündel vertrauenswürdiger Client-CAs aus:
# PEM bundle of trusted client-CA certificates
KMIP_CLIENT_CA_BUNDLE=/etc/duokey/kmip/client-ca-bundle.pemWenn kein Client-CA-Bündel konfiguriert ist, werden vorgelegte Client-Zertifikate ohne CA-Validierung akzeptiert und ihre Identität darf für die Autorisierung nicht als vertrauenswürdig gelten. In der Produktion verhält sich der Listener fail closed und verweigert den Start, bis ein Bündel gesetzt ist.
Client-Kompatibilität
Jeder OASIS-KMIP-1.x- oder -2.x-Client kann sich über den binären TLS-Transport auf Port 5696 verbinden. Die Interoperabilität wird durchgehend mit dem PyKMIP-Referenz-Client geprüft (Query → Create → Activate → Get → Encrypt/Decrypt → Locate → Revoke → Destroy).
Integrationsziele für KMIP-basierte Verschlüsselung umfassen:
Percona Server
Data-at-Rest-Verschlüsselung für MongoDB und MySQL.
VMware vSphere
Standard-Schlüsselanbieter für vSphere und vSAN.
NetApp ONTAP
Externe Schlüsselverwaltung für die Speicherverschlüsselung.
Bereitstellung
Ein KMIP-Server-Endpunkt wird im DuoKey Cockpit unter PKI → KMIP Server erstellt. Der Assistent erfasst den Endpunktnamen, den Key Vault, die zulässigen Authentifizierungsmethoden, den Transport (binäres TLS oder JSON/HTTPS) und den TLS-Port, den Standardalgorithmus und die Schlüsselgröße, die zulässigen Objekttypen und Operationen sowie die Audit-Einstellungen — und stellt den Endpunkt anschließend bereit und startet ihn.