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
Estratto da openkeel-barbican/README.md (in inglese).
API REST
57 operazioni dell'API REST originale (route e azioni nel corpo) e il loro stato in OpenKeel.
Barbican viene verificato tramite replay, con i suoi stessi test funzionali, inviando le stesse richieste a Python e a Go, ed eseguendo entrambi affiancati su un unico database e un unico bus.
Replay degli scambi registrati
Replay E2E degli scambi funzionali
Gli scambi funzionali registrati restituiscono le stesse risposte dal servizio Go.
Esecuzione
make e2e-strict sul motore integrato e su MariaDB 11.4.
Ultimo risultato 2 766 / 2 792 uguali, 26 differenze note (chiavi casuali, date registrate, database condiviso); tutti superati in esecuzione reale.
Fonte: openkeel-barbican/docs/CONFORMANCE.md
Contratto client
functionaltests di Barbican su Go
I functionaltests/ upstream di Barbican vengono superati dal servizio Go con un Keystone reale.
Esecuzione
test/functional/run_functional.py --target go tramite l'adattatore di conformità.
Python e Go condividono un unico MariaDB e un unico RabbitMQ: letture incrociate di ogni tipo di secret, ordini in entrambe le direzioni, barbicanclient, castellan e openstack secret.
Esecuzione
test/functional/interop.py; test/amqp/run.sh con oslo.messaging su RabbitMQ 3.13 e 4.4.
Ultimo risultato Interop 75 / 75; AMQP 3 / 3.
Fonte: openkeel-barbican/docs/CONFORMANCE.md
Concorrenza su Galera
Concorrenza su MariaDB Galera
Le scritture tramite un nodo e tramite tre nodi restano coerenti.
Esecuzione
make galera-test: TestOneWriteNode, TestThreeWriteNodes.
Ultimo risultato Superato, 3 esecuzioni ciascuno.
Fonte: openkeel-barbican/docs/CONFORMANCE.md
Escluso dal rewrite
Barbican mantiene la sua API completa e gli store simple_crypto, PKCS#11 e Vault, e tralascia il processo di retry inutilizzato, Dogtag e l'infrastruttura oslo.
Obsoleto o inutilizzato upstream
Processo barbican-retry
Perché è stato escluso
Su questo branch nessun percorso di codice pianifica un retry: il processo interroga soltanto una tabella sempre vuota.
Perché la soluzione non ne risente
Nessuno: gli ordini sono elaborati da barbican-worker come upstream.
Fonte: openkeel-barbican/docs/CONFORMANCE.md
Obsoleto o inutilizzato upstream
Secret store e CA Dogtag
Perché è stato escluso
Richiede un server Dogtag e il relativo client Python, e gli ordini di certificati sono disattivati upstream su questo branch.
Perché la soluzione non ne risente
I secret usano simple_crypto, un HSM tramite PKCS#11 o Vault. Le tabelle dei certificati esistono ma non vengono toccate.
Fonte: openkeel-barbican/docs/CONFORMANCE.md
Gestito dalla piattaforma Cloud Native
Log su file, middleware healthcheck, oslo_reports
Gestito da Kubernetes probes
Perché è stato escluso
I log vanno su stdout, lo stato di salute alle probes Kubernetes, la diagnostica a pprof sul listener di amministrazione.
Qui è elencato solo ciò che è stato escluso per scelta progettuale; il lavoro non ancora svolto si trova nei Known gaps del docs/CONFORMANCE.md del modulo. Tutti i moduli
Interazioni Barbican
Vista del servizio generata dalla skill dei diagrammi a partire dal modello OpenKeel.