OpenKeel: die souveräne französische Cloud-Lösung mit europäischer Reichweite der inherent-Gruppe inherent entdecken

Komponenten · Identität und Sicherheit

Barbican

Secrets, Secret-Container und Schlüssel.

Go MariaDB, PKCS#11openkeel-barbican

Das Modul

OpenKeel implementation in Go of OpenStack Barbican (key manager), generated from the reverse-specification of branch stable/2026.2 by the generate-go-from-spec skill. It replaces the Python service without its clients noticing: same routes, status codes, error bodies, microversions and policies. What is reproduced and what differs is in docs/CONFORMANCE.md; the security checklist is in docs/SECURITY.md.

  • Go module: github.com/openkeel/openkeel-barbican
  • Binaries (one image holds all four): | Binary | Replaces | Role | |---|---|---| | barbican-api | barbican-wsgi-api | REST API on port 9311, health and metrics on 9090; -migrate applies the schema | | barbican-worker | barbican-worker | processes orders (key and asymmetric generation) from RabbitMQ, oslo.messaging wire format | | barbican-keystone-listener | barbican-keystone-listener | deletes a project's resources on Keystone's identity.project.deleted notification | | barbican-manage | barbican-manage | db upgrade/clean/sync_secret_stores, simple_crypto rewrap_pkek/new_pkek/rewrap_secrets, hsm gen_mkek/check_mkek/gen_hmac/check_hmac/rewrap_pkek | barbican-retry is not ported (no retry is ever scheduled on this branch, CONFORMANCE.md).
  • Secret stores: simple_crypto (Fernet, master KEK file), p11_crypto (PKCS#11 HSM, cgo build only, below), vault_plugin (Vault or OpenBao KV v1/v2). The database is shareable with Python Barbican (Alembic head 8c74e2d7f1ff).
  • Configuration: YAML, see config/config.example.yaml
  • Setting up a development environment, the database and the tests: docs/GETTING-STARTED.md
  • Database schema, migrations and upgrades: docs/DATABASE.md

Auszug aus openkeel-barbican/README.md (auf Englisch).

REST-API

57 Operationen der Original-REST-API (Routen und Body-Aktionen) und ihr Status in OpenKeel.

  • 57Implementiert

Wie die Kompatibilität getestet wird

Barbican wird per Replay geprüft, mit Barbicans eigenen Funktionstests, durch Senden derselben Anfragen an Python und Go und durch den Parallelbetrieb beider auf derselben Datenbank und demselben Bus.

Replay aufgezeichneter Austausche

E2E-Replay der funktionalen Austausche

Die aufgezeichneten funktionalen Austausche liefern vom Go-Dienst dieselben Antworten.

Ausführung

make e2e-strict auf der eingebetteten Engine und auf MariaDB 11.4.

Letztes Ergebnis 2 766 / 2 792 gleich, 26 bekannte Unterschiede (Zufallsschlüssel, aufgezeichnete Datumsangaben, gemeinsame Datenbank); alle bestehen im Live-Betrieb.

Quelle: openkeel-barbican/docs/CONFORMANCE.md

Client-Vertrag

Barbican-functionaltests auf Go

Barbicans Upstream-functionaltests/ bestehen gegen den Go-Dienst mit einem echten Keystone.

Ausführung

test/functional/run_functional.py --target go über den Konformitätsadapter.

Letztes Ergebnis 563 ok, 0 Fehlschläge, 69 übersprungen.

Quelle: openkeel-barbican/docs/CONFORMANCE.md

Differenzieller Test

Differenzielle Sonde Python vs. Go

Dieselben Anfragen an Python- und Go-Barbican, die sich ein Keystone teilen, erhalten dieselben Antworten.

Ausführung

test/functional/diff_probe.py, und --new-defaults für die RBAC-Standardwerte.

Letztes Ergebnis Legacy-Policies 804 / 833, 29 bewusste Unterschiede; enforce_new_defaults 378 / 378.

Quelle: openkeel-barbican/docs/CONFORMANCE.md

Unit- und Golden Tests

Policy- und At-Rest-Vektoren

Jede Policy-Entscheidung von oslo.policy und das verschlüsselte Speicherformat von Python-Barbican werden nachgebildet.

Ausführung

make test auf policy-vectors.json.gz und den simple_crypto- und p11_crypto-Vektoren.

Letztes Ergebnis Policy 40 704 / 40 704; simple_crypto 25 / 25; p11_crypto 8 / 8 emuliert, 4 / 8 auf SoftHSM 2. Kein echtes HSM getestet.

Quelle: openkeel-barbican/docs/CONFORMANCE.md

Differenzieller Test

Python und Go nebeneinander

Python und Go teilen sich eine MariaDB und ein RabbitMQ: gegenseitiges Lesen jedes Secret-Typs, Orders in beide Richtungen, barbicanclient, castellan und openstack secret.

Ausführung

test/functional/interop.py; test/amqp/run.sh mit oslo.messaging auf RabbitMQ 3.13 und 4.4.

Letztes Ergebnis Interop 75 / 75; AMQP 3 / 3.

Quelle: openkeel-barbican/docs/CONFORMANCE.md

Nebenläufigkeit auf Galera

Nebenläufigkeit auf MariaDB Galera

Schreibvorgänge über einen Knoten und über drei Knoten bleiben konsistent.

Ausführung

make galera-test: TestOneWriteNode, TestThreeWriteNodes.

Letztes Ergebnis Bestanden, je 3 Durchläufe.

Quelle: openkeel-barbican/docs/CONFORMANCE.md

Im Rewrite ausgelassen

Barbican behält seine vollständige API und die Stores simple_crypto, PKCS#11 und Vault und verzichtet auf den nicht genutzten Retry-Prozess, Dogtag und die oslo-Infrastruktur.

Upstream veraltet oder ungenutzt

barbican-retry-Prozess

Warum es ausgelassen wurde

Auf diesem Branch plant kein Codepfad einen Retry: Der Prozess fragt nur eine stets leere Tabelle ab.

Warum die Lösung nicht beeinträchtigt ist

Keine: Aufträge werden wie upstream von barbican-worker verarbeitet.

Quelle: openkeel-barbican/docs/CONFORMANCE.md

Upstream veraltet oder ungenutzt

Dogtag-Secret-Store und CA

Warum es ausgelassen wurde

Es erfordert einen Dogtag-Server und dessen Python-Client, und Zertifikatsaufträge sind upstream auf diesem Branch deaktiviert.

Warum die Lösung nicht beeinträchtigt ist

Secrets nutzen simple_crypto, ein HSM über PKCS#11 oder Vault. Die Zertifikatstabellen existieren, bleiben aber unberührt.

Quelle: openkeel-barbican/docs/CONFORMANCE.md

Von der Cloud-Native-Plattform übernommen

Logging in Dateien, Healthcheck-Middleware, oslo_reports

Übernommen von Kubernetes probes

Warum es ausgelassen wurde

Logs gehen auf stdout, der Zustand an Kubernetes-Probes, Diagnosedaten an pprof auf dem Admin-Listener.

Warum die Lösung nicht beeinträchtigt ist

Die Key-Manager-API bleibt unverändert.

Quelle: openkeel-barbican/config/dropped-options.md

Hier ist nur aufgeführt, was bewusst ausgelassen wurde; noch nicht erledigte Arbeit steht in den Known gaps der docs/CONFORMANCE.md des Moduls. Alle Module

Barbican-Interaktionen

Dienstansicht, vom Diagramm-Skill aus dem OpenKeel-Modell generiert.

Diagramm openkeel-barbican.svg Vollbild
Die 2 Interaktionen des Modells
VonNachProtokollWas
Nova APIBarbicanREST-APIencryption keys
GlanceBarbicanREST-APIimage signatures

Spezifikationen