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

Componenti · Identità e sicurezza

Keystone

Identità multi-tenant: domini, progetti, ruoli; token, OIDC, JWT, application credential.

Go SQL, OIDC, JWTopenkeel-keystone

Il modulo

OpenKeel implementation in Go of OpenStack keystone (keystone-api), 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-keystone
  • Binaries: keystone-api (API on port 5000, health and metrics on 9090) and keystone-customers (the controller of the OpenKeelCustomer resources, below)
  • 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-keystone/README.md (in inglese).

API REST

259 operazioni dell'API REST originale (route e azioni nel corpo) e il loro stato in OpenKeel.

  • 163Implementato
  • 96Non implementato

Come viene testata la compatibilità

Gli scambi registrati dei test unitari di Keystone Python vengono riprodotti sul servizio Go; il Keystone Go è inoltre utilizzato da Skyline, dalle CLI e da tutti gli altri servizi del laboratorio.

Replay degli scambi registrati

Replay E2E degli scambi registrati

Gli scambi registrati dai test di Keystone Python restituiscono lo stesso stato e lo stesso corpo dal servizio Go.

Esecuzione

make e2e; report in test/e2e/report.json, differenze accettate in test/e2e/known-differences.txt.

Ultimo risultato 7345 / 8896 richieste identiche nell'ultimo report (1489 file).

Fonte: openkeel-keystone/test/e2e/report.json

Test unitari e golden test

Test unitari e vettori s3tokens portati

Test unitari, inclusi i vettori di firma EC2 e S3 di test_contrib_s3_core portati a mano.

Esecuzione

make test (vet e race detector); internal/keystone/ec2sign_test.go, internal/api/s3tokens_test.go.

Fonte: openkeel-keystone/docs/CONFORMANCE.md

Contratto client

Skyline con il Keystone Go

Accesso, profilo, policy, cambio di progetto, regioni, domini, endpoint, testo per password errata e logout funzionano come con Python.

Esecuzione

Esecuzione reale di openkeel-skyline su un Keystone Go popolato da MariaDB.

Ultimo risultato Policy di amministratore di sistema: 1 817 / 1 860 consentite, come Python con il suo simulatore.

Fonte: openkeel-skyline/docs/CONFORMANCE.md

End-to-end su un laboratorio

Smoke test del laboratorio

Token di amministratore con scope di progetto e di sistema e un catalogo con tutti i servizi attesi, utilizzati dalle verifiche degli altri servizi.

Esecuzione

make lab-smoke esegue labctl smoke nel cluster del laboratorio.

Fonte: openkeel-lab/README.md

Escluso dal rewrite

Keystone mantiene la sua API e tralascia l'infrastruttura di servizio oslo e il formato di notifica basic, effettuando invece l'audit con eventi CADF.

Meccanismi interni semplificati

Formato di notifica basic

Perché è stato escluso

È implementato solo CADF, il default upstream; gli eventi passano dall'emettitore di audit (JSON su stdout, oslo.messaging se abilitato).

Perché la soluzione non ne risente

Impostare basic registra un avviso e viene inviato CADF. Nessun servizio OpenKeel utilizza i payload basic di Keystone.

Fonte: openkeel-keystone/docs/CONFORMANCE.md

Gestito dalla piattaforma Cloud Native

Log su file, osprofiler, healthcheck, CORS

Gestito da Probes Kubernetes, OpenTelemetry, Ingress

Perché è stato escluso

I log vanno su stdout in JSON, le tracce a OpenTelemetry, lo stato di salute alle probes Kubernetes e CORS all'ingress.

Perché la soluzione non ne risente

Gli operatori usano gli strumenti del cluster; l'API di identità resta invariata.

Fonte: openkeel-keystone/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 Keystone

Vista del servizio generata dalla skill dei diagrammi a partire dal modello OpenKeel.

Diagramma openkeel-keystone.svg Schermo intero
Le 7 interazioni del modello
DaAProtocolloCosa
SkylineKeystoneAPI RESTlogin, catalog, system session
@apiKeystoneAPI RESTtoken validation
KeystoneOIDC identity providerOIDC / JWKSOIDC discovery, JWKS
Heat engineKeystoneAPI RESTtrusts, stack domain users
EC2 APIKeystoneAPI RESTec2tokens (SigV4)
Ceph RGWKeystoneAPI RESTtoken validation, /v3/s3tokens (user rgw)
OVN Octavia providerKeystoneAPI RESTservice token

Specifiche