OpenKeel: la soluzione Cloud sovrana, francese e di portata europea, del gruppo inherent Scopri inherent

Componenti · Identità e sicurezza

Barbican

Secret, container di secret e chiavi.

Go MariaDB, PKCS#11openkeel-barbican

Il modulo

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.

  • 57Implementato

Come viene testata la compatibilità

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à.

Ultimo risultato 563 ok, 0 fallimenti, 69 saltati.

Fonte: openkeel-barbican/docs/CONFORMANCE.md

Test differenziale

Sonda differenziale Python vs Go

Le stesse richieste inviate a Barbican Python e Go, che condividono un unico Keystone, ottengono le stesse risposte.

Esecuzione

test/functional/diff_probe.py, e --new-defaults per i valori predefiniti RBAC.

Ultimo risultato Policy legacy 804 / 833, 29 differenze deliberate; enforce_new_defaults 378 / 378.

Fonte: openkeel-barbican/docs/CONFORMANCE.md

Test unitari e golden test

Vettori di policy e di cifratura a riposo

Ogni decisione di policy di oslo.policy e il formato di archiviazione cifrato di Barbican Python vengono riprodotti.

Esecuzione

make test su policy-vectors.json.gz e sui vettori simple_crypto e p11_crypto.

Ultimo risultato Policy 40 704 / 40 704; simple_crypto 25 / 25; p11_crypto 8 / 8 emulati, 4 / 8 su SoftHSM 2. Nessun HSM reale testato.

Fonte: openkeel-barbican/docs/CONFORMANCE.md

Test differenziale

Python e Go affiancati

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.

Perché la soluzione non ne risente

L'API del key manager resta invariata.

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

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.

Diagramma openkeel-barbican.svg Schermo intero
Le 2 interazioni del modello
DaAProtocolloCosa
Nova APIBarbicanAPI RESTencryption keys
GlanceBarbicanAPI RESTimage signatures

Specifiche