OpenKeel : la solution Cloud souveraine, française à portée européenne du groupe inherent Découvrir inherent

Composants · Identité et sécurité

Barbican

Secrets, conteneurs de secrets et clés.

Go MariaDB, PKCS#11openkeel-barbican

Le module

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

Extrait de openkeel-barbican/README.md (en anglais).

API REST

57 opérations de l'API REST d'origine (routes et actions de corps), et leur état dans OpenKeel.

  • 57Implémenté

Comment la compatibilité est testée

Barbican est vérifié par rejeu, par ses propres tests fonctionnels, par l'envoi des mêmes requêtes à Python et à Go, et en faisant tourner les deux côte à côte sur une même base de données et un même bus.

Rejeu des échanges enregistrés

Rejeu E2E des échanges fonctionnels

Les échanges fonctionnels enregistrés donnent les mêmes réponses depuis le service Go.

Exécution

make e2e-strict sur le moteur embarqué et sur MariaDB 11.4.

Dernier résultat 2 766 / 2 792 égaux, 26 différences connues (clés aléatoires, dates enregistrées, base de données partagée) ; tous réussissent en direct.

Source : openkeel-barbican/docs/CONFORMANCE.md

Contrat client

functionaltests de Barbican sur Go

Les functionaltests/ amont de Barbican réussissent contre le service Go avec un vrai Keystone.

Exécution

test/functional/run_functional.py --target go via l'adaptateur de conformité.

Dernier résultat 563 ok, 0 échec, 69 ignorés.

Source : openkeel-barbican/docs/CONFORMANCE.md

Test différentiel

Sonde différentielle Python vs Go

Les mêmes requêtes envoyées à Barbican Python et Go, partageant un même Keystone, obtiennent les mêmes réponses.

Exécution

test/functional/diff_probe.py, et --new-defaults pour les valeurs par défaut RBAC.

Dernier résultat Politiques historiques 804 / 833, 29 différences volontaires ; enforce_new_defaults 378 / 378.

Source : openkeel-barbican/docs/CONFORMANCE.md

Tests unitaires et golden tests

Vecteurs de politique et de chiffrement au repos

Chaque décision de politique d'oslo.policy et le format de stockage chiffré de Barbican Python sont reproduits.

Exécution

make test sur policy-vectors.json.gz et les vecteurs simple_crypto et p11_crypto.

Dernier résultat Politique 40 704 / 40 704 ; simple_crypto 25 / 25 ; p11_crypto 8 / 8 émulés, 4 / 8 sur SoftHSM 2. Aucun vrai HSM testé.

Source : openkeel-barbican/docs/CONFORMANCE.md

Test différentiel

Python et Go côte à côte

Python et Go partagent une même MariaDB et un même RabbitMQ : lectures croisées de chaque type de secret, commandes dans les deux sens, barbicanclient, castellan et openstack secret.

Exécution

test/functional/interop.py ; test/amqp/run.sh avec oslo.messaging sur RabbitMQ 3.13 et 4.4.

Dernier résultat Interop 75 / 75 ; AMQP 3 / 3.

Source : openkeel-barbican/docs/CONFORMANCE.md

Concurrence sur Galera

Concurrence sur MariaDB Galera

Les écritures par un nœud et par trois nœuds restent cohérentes.

Exécution

make galera-test : TestOneWriteNode, TestThreeWriteNodes.

Dernier résultat Réussi, 3 exécutions chacun.

Source : openkeel-barbican/docs/CONFORMANCE.md

Écarté de la réécriture

Barbican conserve toute son API et les stores simple_crypto, PKCS#11 et Vault, et laisse de côté le processus de retry inutilisé, Dogtag et la plomberie oslo.

Obsolète ou inutilisé en amont

Processus barbican-retry

Pourquoi c'est écarté

Sur cette branche, aucun chemin de code ne planifie de retry : le processus ne fait qu'interroger une table toujours vide.

Pourquoi la solution n'est pas affectée

Aucun : les commandes sont traitées par barbican-worker comme en amont.

Source : openkeel-barbican/docs/CONFORMANCE.md

Obsolète ou inutilisé en amont

Store de secrets et CA Dogtag

Pourquoi c'est écarté

Il nécessite un serveur Dogtag et son client Python, et les commandes de certificats sont désactivées en amont sur cette branche.

Pourquoi la solution n'est pas affectée

Les secrets utilisent simple_crypto, un HSM via PKCS#11 ou Vault. Les tables de certificats existent mais ne sont pas modifiées.

Source : openkeel-barbican/docs/CONFORMANCE.md

Assuré par la plateforme Cloud Native

Logs dans des fichiers, middleware healthcheck, oslo_reports

Repris par Kubernetes probes

Pourquoi c'est écarté

Les logs partent sur stdout, la santé vers les probes Kubernetes, les diagnostics vers pprof sur le listener d'administration.

Pourquoi la solution n'est pas affectée

L'API du gestionnaire de clés est inchangée.

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

Seul ce qui a été écarté par choix de conception figure ici ; le travail pas encore fait se trouve dans les Known gaps du docs/CONFORMANCE.md du module. Tous les modules

Interactions de Barbican

Vue « service » générée par la skill diagramme depuis le modèle d'OpenKeel.

Diagramme openkeel-barbican.svg Plein écran
Les 2 interactions du modèle
DeVersProtocoleQuoi
Nova APIBarbicanAPI RESTencryption keys
GlanceBarbicanAPI RESTimage signatures

Spécifications