Zitadel IAM
Das Identity and Access Management (IAM) der noris Sovereign Cloud (nSC) ermöglicht die Selbstverwaltung von Benutzern, Projekten und deren gegenseitigem Zugriff. Es basiert auf Zitadel, weitere Informationen finden Sie in dessen Dokumentation.
Erste Schritte
Abschnitt betitelt „Erste Schritte“Diese Anleitung führt Sie durch das Erstellen, Verwalten und Löschen von Benutzern, Projekten und deren Rollen in unserem Zitadel-IAM.
Zugriff auf das Dashboard
Abschnitt betitelt „Zugriff auf das Dashboard“Sie können sich mit dem Ihnen zugesandten Benutzerkonto im Zitadel-Dashboard anmelden. Das Nürnberger IAM erreichen Sie unter: id.nbg.nsc.noris.cloud/ui/console

Benutzerverwaltung
Abschnitt betitelt „Benutzerverwaltung“Benutzer-Dashboard
Abschnitt betitelt „Benutzer-Dashboard“Klicken Sie auf den Tab „Users”, um zu einer Übersicht aller Benutzerkonten zu gelangen:

Benutzer erstellen
Abschnitt betitelt „Benutzer erstellen“Klicken Sie auf die blaue Schaltfläche New, um einen neuen Benutzer zu erstellen:

Pflichtfelder:
- E-mail address: die E-Mail-Adresse des Benutzers. An diese Adresse wird ein Registrierungscode gesendet, daher ist eine gültige Adresse wichtig.
- Username: der Benutzername des neuen Benutzers. Kann der Einfachheit halber wieder auf die E-Mail-Adresse gesetzt werden.
- Given Name: der Vorname des Benutzers.
- Family Name: der Nachname des Benutzers.
Optionale Felder:
- Nickname: wird, falls gesetzt, als Anzeigename verwendet.
- Email Verified: markiert die angegebene E-Mail-Adresse als bereits verifiziert. Wenn nicht gesetzt, erhält der Benutzer einen Verifizierungscode. Belassen Sie dies im Standardzustand (nicht gesetzt), damit Benutzer ihre E-Mail-Adresse verifizieren müssen.
- Set Initial Password: Sie können ein initiales Passwort für den Benutzer festlegen. Wenn nicht gesetzt, muss der Benutzer bei der Registrierung ein Passwort vergeben.
- Gender: das Geschlecht des Benutzers.
- Language: die bevorzugte Sprache des Benutzers.
- Phone Number: die Telefonnummer des Benutzers, wird für den Versand von SMS verwendet.
Klicken Sie auf die blaue Schaltfläche Create, um den Benutzer zu erstellen.
Service-Accounts
Abschnitt betitelt „Service-Accounts“Service-Accounts werden für die nicht-menschliche Interaktion mit Zitadel selbst verwendet. Wenn Sie mit OpenStack interagieren möchten, lesen Sie unseren separaten Artikel zu OpenStack Application Credentials.
Projektverwaltung
Abschnitt betitelt „Projektverwaltung“Projekte können genutzt werden, um separate Arbeitsbereiche für Teams, Geschäftsbereiche, Technologien oder Subunternehmer einzurichten. Zitadel-Projekte werden mit OpenStack und Gardener synchronisiert.
Projekt-Dashboard
Abschnitt betitelt „Projekt-Dashboard“Klicken Sie im Dashboard auf den Tab „Projects”, um eine Übersicht aller Projekte in der Organisation zu sehen:

Sie werden feststellen, dass die nSC bereits ein Standardprojekt (example-org) für Sie erstellt hat.
Projekt erstellen
Abschnitt betitelt „Projekt erstellen“Um ein neues Projekt hinzuzufügen, klicken Sie auf „Create New Project”:

Nachdem Sie einen passenden Namen für Ihr neues Projekt eingegeben haben, klicken Sie auf die blaue Schaltfläche Continue, um es zu erstellen. Dieses Projekt ist in OpenStack und Gardener erst sichtbar, sobald im nächsten Schritt Rollen an Ihren Benutzer vergeben wurden.
Projekt löschen
Abschnitt betitelt „Projekt löschen“Das Löschen eines Projekts kann über eine Service-Anfrage ausgelöst werden, nutzen Sie dazu Ihren gewohnten Support-Kanal. Eine Selbstbedienungsfunktion zum Löschen von Projekten ist als Feature geplant.
Rollenverwaltung
Abschnitt betitelt „Rollenverwaltung“Klicken Sie im Dashboard auf den Tab Role Assignments, um eine Übersicht aller aktuell bestehenden Berechtigungen zu sehen.
Wenn Sie dies zum ersten Mal öffnen, werden Sie feststellen, dass die nSC bereits eine einzelne Standardberechtigung für Sie erstellt hat. Diese Berechtigung erlaubt Ihnen den Zugriff auf das Standardprojekt mit Ihrem initialen Benutzer:

Rollenzuweisung hinzufügen
Abschnitt betitelt „Rollenzuweisung hinzufügen“Um eine neue Berechtigung hinzuzufügen, klicken Sie auf die blaue Schaltfläche New. Dies öffnet einen Assistenten, mit dem Sie Benutzern Rollen in bestimmten Projekten zuweisen können. Achten Sie darauf, Ihr Project auszuwählen. Granted Projects ist nicht das, wonach Sie suchen:

Wählen Sie aus der Benutzerliste die Benutzer aus, die Sie autorisieren möchten, und wählen Sie das Projekt, in dem Sie Rollen vergeben möchten. Klicken Sie auf die blaue Schaltfläche Continue, um zur nächsten Seite zu gelangen.
Rollenauswahl
Abschnitt betitelt „Rollenauswahl“Sie können Benutzern in Ihren Projekten unterschiedliche Rollen zuweisen, was eine feingranulare Steuerung ihrer Berechtigungen ermöglicht:

Folgende Rollen stehen zur Auswahl:
| Rolle | Dienst | Berechtigungen |
|---|---|---|
ga-admin | Gardener Kubernetes | erstellen, lesen, aktualisieren und löschen |
ga-viewer | Gardener Kubernetes | lesen |
os-creator | Barbican | erstellen, lesen, aktualisieren und löschen |
os-heat_stack_owner | Heat | erstellen, lesen, aktualisieren und löschen |
os-load-balancer_member | Octavia | erstellen, lesen, aktualisieren und löschen |
os-member | OpenStack (alle) | erstellen, lesen, aktualisieren und löschen |
os-reader | OpenStack (alle) | lesen |
Sobald Ihre Auswahl passt, klicken Sie auf die blaue Schaltfläche Save. Innerhalb von 60 Sekunden sollten die Projekte in OpenStack und Gardener erscheinen.
OIDC-Authentifizierung
Abschnitt betitelt „OIDC-Authentifizierung“Zitadel kann auch als OIDC-Provider genutzt werden. Dies ist besonders im Zusammenhang mit der strukturierten Authentifizierung von Gardener nützlich, um Benutzer passenden Rollen zuzuordnen.
OIDC-Client erstellen
Abschnitt betitelt „OIDC-Client erstellen“Klicken Sie auf „Projects” und wählen Sie dann das gewünschte Projekt aus:

Wählen Sie die Einstellungen gemäß dem Bild unten:

Speichern Sie diese Einstellungen und klicken Sie dann auf „New”, um eine neue Anwendung zu erstellen:

Vergeben Sie einen Namen Ihrer Wahl und wählen Sie dann „WEB” als Anwendungstyp, wie im Bild unten gezeigt. Klicken Sie auf „Continue”.

Wählen Sie „PKCE” als Authentifizierungsmethode und klicken Sie dann auf „Continue”.

Aktivieren Sie „Development Mode”, da das kubectl-Plugin für oidc-login keinen lokalen TLS-Modus bietet (nur HTTP). Fügen Sie die Standard-Rückgabe-URLs (http://localhost:8000, http://localhost:18000) als Redirect-URIs hinzu und klicken Sie dann auf „Continue”:

Klicken Sie auf der Zusammenfassungsseite auf „Create”, um Ihre Angaben zu bestätigen und die OIDC-Client-Anwendung zu erstellen:

Abschließend wird Ihnen eine „ClientId” angezeigt, die Sie für einen späteren Schritt speichern müssen. Klicken Sie danach auf „Close”, um mit dem Setup fortzufahren:

Klicken Sie auf der Übersichtsseite der Anwendung auf „Token Settings” und passen Sie die Einstellungen gemäß dem Bild unten an, indem Sie die Kontrollkästchen
- „User roles inside ID Token”
- „Include user’s roles in the ID Token”
aktivieren und mit „Save” speichern:

Gehen Sie zurück zum Projekt, wechseln Sie zu „Roles” und klicken Sie auf „New”:

Tragen Sie unter „Key” den Namen der Rolle ein. Dieses Feld ist case-sensitive und muss mit dem Rollennamen im RoleBinding in Gardener übereinstimmen. Vergeben Sie einen Anzeigenamen, der nur zur besseren Lesbarkeit in Zitadel dient. Fügen Sie so viele Rollen hinzu, wie Sie möchten. Klicken Sie abschließend auf „Save”:

Klicken Sie auf der „Roles”-Übersicht auf „Authorizations”, um Ihren Benutzern Rollen zuzuweisen. Klicken Sie auf „New”:

Wählen Sie die Benutzer aus, denen Sie Rollen zuweisen möchten, und klicken Sie auf „Continue”:

Wählen Sie die Rollen aus, die Sie den ausgewählten Benutzern zuweisen möchten, und klicken Sie auf „Save”:

Sie haben nun erfolgreich einen OIDC-Client in Zitadel eingerichtet.
Zitadel für Flat Roles im ID-Token konfigurieren
Abschnitt betitelt „Zitadel für Flat Roles im ID-Token konfigurieren“Klicken Sie auf „Actions” und dann auf „New”:

Fügen Sie den Namen flatRoles hinzu, passend zum Funktionsnamen:

Fügen Sie folgenden Code-Ausschnitt als Body hinzu:
function flatRoles(ctx, api) { if ( ctx.v1.user.grants.grants === undefined || ctx.v1.user.grants.grants.count == 0 ) { return; } let grants = []; ctx.v1.user.grants.grants.forEach((claim) => { claim.roles.forEach((role, index, array) => { api.v1.claims.setClaim(role, role.slice(18)); grants.push(role); }); }); api.v1.claims.setClaim("roles", grants);}Klicken Sie dann auf „Add”.
Wählen Sie im Dropdown-Menü „Complement Token” und klicken Sie auf „Add trigger”:

Wählen Sie „Pre Userinfo creation” als Trigger-Typ. Wählen Sie „flatRoles”, das Sie im vorherigen Schritt erstellt haben, als Aktion. Klicken Sie auf „Save”:

Sie haben den letzten Schritt erreicht. Das Setup von Zitadel OIDC ist damit abgeschlossen. Das Ergebnis sollte wie folgt aussehen:

