OpenKeel: the sovereign French Cloud solution of the inherent group, with a European reach Discover inherent

Components · Identity and security

Keystone

Multi-tenant identity: domains, projects, roles; tokens, OIDC, JWT, application credentials.

Go SQL, OIDC, JWTopenkeel-keystone

The module

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

Excerpt from openkeel-keystone/README.md (in English).

REST API

259 operations of the original REST API (routes and body actions), and their state in OpenKeel.

  • 163Implemented
  • 96Not implemented

How compatibility is tested

Python Keystone's recorded unit-test exchanges are replayed against the Go service; the Go Keystone is also used by Skyline, the CLIs and every other service on the lab.

Replay of recorded exchanges

E2E replay of recorded exchanges

The exchanges recorded from Python Keystone's tests give the same status and body from the Go service.

How it runs

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

Latest result 7345 / 8896 requests identical in the last report (1489 files).

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

Unit and golden tests

Unit tests and ported s3tokens vectors

Unit tests, including the EC2 and S3 signature vectors of test_contrib_s3_core ported by hand.

How it runs

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

Source: openkeel-keystone/docs/CONFORMANCE.md

Client contract

Skyline against the Go Keystone

Login, profile, policies, project switch, regions, domains, endpoints, wrong-password text and logout work as against Python.

How it runs

Live run of openkeel-skyline against a MariaDB-seeded Go Keystone.

Latest result System admin policies: 1 817 / 1 860 allowed, as Python against its fake.

Source: openkeel-skyline/docs/CONFORMANCE.md

End to end on a lab

Lab smoke test

Project- and system-scoped admin tokens and a catalog listing every expected service, used by the other services' checks.

How it runs

make lab-smoke runs labctl smoke in the lab cluster.

Source: openkeel-lab/README.md

Left out of the rewrite

Keystone keeps its API and leaves out the oslo service plumbing and the basic notification format, auditing with CADF events instead.

Internal machinery simplified

basic notification format

Why it was left out

Only CADF, the upstream default, is implemented; events go through the audit emitter (JSON on stdout, oslo.messaging when enabled).

Why the solution is not affected

Setting basic logs a warning and CADF is sent. No OpenKeel service consumes Keystone's basic payloads.

Source: openkeel-keystone/docs/CONFORMANCE.md

Done by the Cloud Native platform

File logging, osprofiler, healthcheck, CORS

Taken over by Kubernetes probes, OpenTelemetry, Ingress

Why it was left out

Logs go to stdout as JSON, traces to OpenTelemetry, health to Kubernetes probes and CORS to the ingress.

Why the solution is not affected

Operators use the cluster's tooling; the identity API is unchanged.

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

Only what was left out by design is listed here; the work not done yet is in the Known gaps of the module's docs/CONFORMANCE.md. Every module

Keystone interactions

Service view generated by the diagram skill from the OpenKeel model.

Diagram openkeel-keystone.svg Full screen
The 7 interactions of the model
FromToProtocolWhat
SkylineKeystoneREST APIlogin, catalog, system session
@apiKeystoneREST APItoken validation
KeystoneOIDC identity providerOIDC / JWKSOIDC discovery, JWKS
Heat engineKeystoneREST APItrusts, stack domain users
EC2 APIKeystoneREST APIec2tokens (SigV4)
Ceph RGWKeystoneREST APItoken validation, /v3/s3tokens (user rgw)
OVN Octavia providerKeystoneREST APIservice token

Specifications