Zum Inhalt springen

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.

Diese Anleitung führt Sie durch das Erstellen, Verwalten und Löschen von Benutzern, Projekten und deren Rollen in unserem Zitadel-IAM.

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

Zitadel-Dashboard

Klicken Sie auf den Tab „Users”, um zu einer Übersicht aller Benutzerkonten zu gelangen:

Benutzer-Dashboard

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

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

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.

Klicken Sie im Dashboard auf den Tab „Projects”, um eine Übersicht aller Projekte in der Organisation zu sehen:

Projekt-Dashboard

Sie werden feststellen, dass die nSC bereits ein Standardprojekt (example-org) für Sie erstellt hat.

Um ein neues Projekt hinzuzufügen, klicken Sie auf „Create New Project”:

Neues Projekt erstellen

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.

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.

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:

Standard-Rollenzuweisung

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:

Assistent zum Hinzufügen einer Rollenzuweisung

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.

Sie können Benutzern in Ihren Projekten unterschiedliche Rollen zuweisen, was eine feingranulare Steuerung ihrer Berechtigungen ermöglicht:

Rollenauswahl

Folgende Rollen stehen zur Auswahl:

RolleDienstBerechtigungen
ga-adminGardener Kuberneteserstellen, lesen, aktualisieren und löschen
ga-viewerGardener Kuberneteslesen
os-creatorBarbicanerstellen, lesen, aktualisieren und löschen
os-heat_stack_ownerHeaterstellen, lesen, aktualisieren und löschen
os-load-balancer_memberOctaviaerstellen, lesen, aktualisieren und löschen
os-memberOpenStack (alle)erstellen, lesen, aktualisieren und löschen
os-readerOpenStack (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.

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.

Klicken Sie auf „Projects” und wählen Sie dann das gewünschte Projekt aus:

Projekt auswählen

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

Projekteinstellungen

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

Neue Anwendung erstellen

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

Anwendungstyp WEB

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

Authentifizierungsmethode PKCE

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”:

Redirect-URIs

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

OIDC-Client-Erstellung bestätigen

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:

Client-ID

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:

Token-Einstellungen

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

Roles-Tab

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”:

Rolle erstellen

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

Authorizations

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

Benutzer auswählen

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

Rollen zuweisen

Sie haben nun erfolgreich einen OIDC-Client in Zitadel eingerichtet.

Klicken Sie auf „Actions” und dann auf „New”:

Actions

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

Aktionsname

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”:

Trigger hinzufügen

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”:

Trigger-Konfiguration

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

Endergebnis