OpenKeel: die souveräne französische Cloud-Lösung mit europäischer Reichweite der inherent-Gruppe inherent entdecken

Komponenten · Identität und Sicherheit

Keystone

Mandantenfähige Identität: Domains, Projekte, Rollen; Tokens, OIDC, JWT, Application Credentials.

Go SQL, OIDC, JWTopenkeel-keystone

Das Modul

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

Auszug aus openkeel-keystone/README.md (auf Englisch).

REST-API

259 Operationen der Original-REST-API (Routen und Body-Aktionen) und ihr Status in OpenKeel.

  • 163Implementiert
  • 96Nicht implementiert

Wie die Kompatibilität getestet wird

Die aufgezeichneten Unit-Test-Austausche von Python-Keystone werden gegen den Go-Dienst wiedergegeben; das Go-Keystone wird zudem von Skyline, den CLIs und allen anderen Diensten im Lab genutzt.

Replay aufgezeichneter Austausche

E2E-Replay der aufgezeichneten Austausche

Die aus den Tests von Python-Keystone aufgezeichneten Austausche liefern vom Go-Dienst denselben Status und Body.

Ausführung

make e2e; Bericht in test/e2e/report.json, akzeptierte Unterschiede in test/e2e/known-differences.txt.

Letztes Ergebnis 7345 / 8896 Anfragen identisch im letzten Bericht (1489 Dateien).

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

Unit- und Golden Tests

Unit-Tests und portierte s3tokens-Vektoren

Unit-Tests, einschließlich der von Hand portierten EC2- und S3-Signaturvektoren aus test_contrib_s3_core.

Ausführung

make test (vet und Race-Detektor); internal/keystone/ec2sign_test.go, internal/api/s3tokens_test.go.

Quelle: openkeel-keystone/docs/CONFORMANCE.md

Client-Vertrag

Skyline gegen das Go-Keystone

Anmeldung, Profil, Policies, Projektwechsel, Regionen, Domänen, Endpoints, Text bei falschem Passwort und Abmeldung funktionieren wie gegen Python.

Ausführung

Live-Durchlauf von openkeel-skyline gegen ein mit MariaDB befülltes Go-Keystone.

Letztes Ergebnis System-Admin-Policies: 1 817 / 1 860 erlaubt, wie Python gegen seinen Fake.

Quelle: openkeel-skyline/docs/CONFORMANCE.md

End-to-End in einem Lab

Smoke Test des Labs

Admin-Tokens mit Projekt- und System-Scope und ein Katalog mit allen erwarteten Diensten, genutzt von den Prüfungen der anderen Dienste.

Ausführung

make lab-smoke führt labctl smoke im Lab-Cluster aus.

Quelle: openkeel-lab/README.md

Im Rewrite ausgelassen

Keystone behält seine API und verzichtet auf die oslo-Service-Infrastruktur und das Benachrichtigungsformat basic; das Auditing erfolgt stattdessen mit CADF-Ereignissen.

Vereinfachte interne Mechanik

Benachrichtigungsformat basic

Warum es ausgelassen wurde

Nur CADF, der Upstream-Standard, ist implementiert; Ereignisse laufen über den Audit-Emitter (JSON auf stdout, oslo.messaging, wenn aktiviert).

Warum die Lösung nicht beeinträchtigt ist

Die Einstellung basic protokolliert eine Warnung, und CADF wird gesendet. Kein OpenKeel-Dienst nutzt die basic-Payloads von Keystone.

Quelle: openkeel-keystone/docs/CONFORMANCE.md

Von der Cloud-Native-Plattform übernommen

Logging in Dateien, osprofiler, Healthcheck, CORS

Übernommen von Kubernetes-Probes, OpenTelemetry, Ingress

Warum es ausgelassen wurde

Logs gehen als JSON auf stdout, Traces an OpenTelemetry, der Zustand an Kubernetes-Probes und CORS an den Ingress.

Warum die Lösung nicht beeinträchtigt ist

Betreiber nutzen die Werkzeuge des Clusters; die Identity-API bleibt unverändert.

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

Hier ist nur aufgeführt, was bewusst ausgelassen wurde; noch nicht erledigte Arbeit steht in den Known gaps der docs/CONFORMANCE.md des Moduls. Alle Module

Keystone-Interaktionen

Dienstansicht, vom Diagramm-Skill aus dem OpenKeel-Modell generiert.

Diagramm openkeel-keystone.svg Vollbild
Die 7 Interaktionen des Modells
VonNachProtokollWas
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

Spezifikationen