|
Dieses Dokument wurde mithilfe automatisierter maschineller Übersetzungstechnologie übersetzt. Wir bemühen uns um korrekte Übersetzungen, übernehmen jedoch keine Gewähr für die Vollständigkeit, Richtigkeit oder Zuverlässigkeit der übersetzten Inhalte. Im Falle von Abweichungen ist die englische Originalversion maßgebend und stellt den verbindlichen Text dar. |
Open ID Connect (OIDC)
Übersicht
SUSE Observability kann sich mit einem OIDC-Authentifizierungsanbieter authentifizieren. Um dies zu ermöglichen, müssen Sie sowohl SUSE Observability als auch den OIDC-Anbieter so konfigurieren, dass sie miteinander kommunizieren können. Die folgenden Abschnitte beschreiben die jeweiligen Setups.
Konfigurieren Sie den OIDC-Anbieter
Bevor Sie SUSE Observability so konfigurieren können, dass es sich mit OIDC authentifiziert, müssen Sie einen Client für SUSE Observability bei Ihrem OIDC-Anbieter erstellen.
Rancher
| Dies funktioniert nur mit Rancher 2.12 oder später. Sie müssen Rancher als OIDC-Anbieter konfigurieren. |
Erstellen Sie eine OIDCClient-Ressource im lokalen Cluster von Rancher:
apiVersion: management.cattle.io/v3
kind: OIDCClient
metadata:
name: oidc-observability
spec:
tokenExpirationSeconds: 600
refreshTokenExpirationSeconds: 3600
redirectURIs:
- "https://<observability-base-url>/loginCallback?client_name=StsOidcClient"
Rancher stellt die Client-ID und das Geheimnis im Statusfeld zur Verfügung:
apiVersion: management.cattle.io/v3
kind: OIDCClient
metadata:
name: oidc-observability
spec:
tokenExpirationSeconds: 600
refreshTokenExpirationSeconds: 3600
redirectURIs:
- "https://<observability-base-url>/loginCallback?client_name=StsOidcClient"
status:
clientID: <oidc-client-id>
clientSecrets:
client-secret-1:
createdAt: "xxx"
lastFiveCharacters: xxx
Und Sie können den Wert des Geheimnisses mit
kubectl get secret <oidc-client-id> -n cattle-oidc-client-secrets -o jsonpath="{.data.client-secret-1}" | base64 -d
Andere OIDC-Anbieter
Verwenden Sie die folgenden Einstellungen für den Client (falls vom OIDC-Anbieter benötigt):
-
Verwenden Sie den OIDC-Authorization Flow, er wird auch oft als Authorization Code Flow bezeichnet. SUSE Observability unterstützt die Implicit Grant- und Hybridflüsse nicht, daher ist es nicht erforderlich, die Unterstützung dafür zu aktivieren.
-
Setzen Sie die Redirect URI auf die Basis-URL von SUSE Observability, gefolgt von
/loginCallback?client_name=StsOidcClient. Zum Beispielhttps://stackstate.acme.com/loginCallback?client_name=StsOidcClient. Für einige OIDC-Anbieter, wie Google und Azure Entra ID, muss die Redirect URI genau übereinstimmen, einschließlich aller Abfrageparameter. In diesem Fall sollten Sie die URI wie folgt konfigurierenhttps://stackstate.acme.com/loginCallback?client_name=StsOidcClient. -
Geben Sie SUSE Observability Zugriff auf mindestens die Scopes
openidundemailoder das Äquivalent davon für Ihren OIDC-Anbieter. Je nach Anbieter können weitere Scopes erforderlich sein; wenn ein separatesprofilevorhanden ist, fügen Sie es ebenfalls hinzu. -
SUSE Observability benötigt OIDC-Offlinezugriff. Für einige Identitätsanbieter ist dies ein zusätzlicher Scope erforderlich, der normalerweise
offline_accessgenannt wird.
Das Ergebnis dieser Konfiguration sollte eine clientId und ein secret erzeugen. Kopieren Sie diese und bewahren Sie sie für die Konfiguration von SUSE Observability auf. Notieren Sie sich auch die discoveryUri des Anbieters. Normalerweise befindet sich dies entweder auf demselben Bildschirm oder ist in der Dokumentation zu finden.
Konfigurieren Sie SUSE Observability für OIDC.
Rancher
| Dies funktioniert nur mit Rancher 2.12 oder später. Sie müssen Rancher als OIDC-Anbieter konfigurieren. |
Um Rancher als OIDC-Anbieter für SUSE Observability zu konfigurieren, müssen Sie die OIDC-Details zu den Authentifizierungswerten hinzufügen:
stackstate:
authentication:
rancher:
clientId: "<oidc-client-id>"
secret: "<oidc-secret>"
baseUrl: "<rancher-url>"
Sie können die OIDC-Konfiguration für Rancher mit den folgenden Feldern überschreiben und erweitern:
-
discoveryUri - URI, die Sie verwenden können, um den OIDC-Anbieter zu entdecken. Normalerweise auch dokumentiert oder zurückgegeben, wenn der Client im OIDC-Anbieter erstellt wird.
-
redirectUri - Optional (nicht im Beispiel): Die URI, unter der der Login-Callback-Endpunkt von SUSE Observability erreichbar ist. Standardmäßig mit dem
stackstate.baseUrlbefüllt, kann aber überschrieben werden. Dies muss eine vollständig qualifizierte URL sein, die auf den/loginCallbackPfad verweist. -
customParameters - Optionale Zuordnung von Schlüssel/Wert-Paaren, die Sie als benutzerdefinierte Anforderungsparameter an den OIDC-Anbieter senden. Bestimmte OIDC-Anbieter erfordern zusätzliche Anforderungsparameter, die standardmäßig nicht gesendet werden.
Wenn Sie die TLS-Überprüfung aufgrund einer Konfiguration, die keine verifizierbaren SSL-Zertifikate verwendet, deaktivieren müssen, können Sie die SSL-Prüfungen mit der Anwendungskonfiguration deaktivieren (nicht in der Produktion verwenden):
Für Non-HA Setup:
stackstate:
components:
server:
extraEnv:
open:
CONFIG_FORCE_stackstate_misc_sslCertificateChecking: false
Für HA (High Availability) Setup:
stackstate:
components:
api:
extraEnv:
open:
CONFIG_FORCE_stackstate_misc_sslCertificateChecking: false
In HA-Bereitstellungen behandelt die API-Komponente die Konfiguration anders. Verwenden Sie Folgendes: === Kubernetes
Um SUSE Observability so zu konfigurieren, dass es einen OIDC-Authentifizierungsanbieter auf Kubernetes verwendet, müssen Sie OIDC-Details und die Zuordnung der Benutzerrollen in die Datei authentication.yaml hinzufügen. Beispiel:
stackstate:
authentication:
oidc:
clientId: "<client-id-from-oidc-provider>"
secret: "<secret-from-oidc-provider>"
discoveryUri: "https://oidc.acme.com/.well-known/openid-configuration"
jwsAlgorithm: RS256
scope: ["openid", "email"]
jwtClaims:
usernameField: email
displayNameField: name
groupsField: groups
customParameters:
access_type: offline
# map the groups from OIDC provider
# to the 4 standard roles in SUSE Observability (guest, powerUser, k8sTroubleshooter and admin)
roles:
guest: ["guest-group-in-oidc-provider"]
powerUser: ["powerUser-group-in-oidc-provider"]
admin: ["admin-group-in-oidc-provider"]
k8sTroubleshooter: ["troubleshooter-group-in-oidc-provider"]
Befolgen Sie die folgenden Schritte, um SUSE Observability so zu konfigurieren, dass es sich über OIDC authentifiziert:
-
In
authentication.yaml- fügen Sie die Details des OIDC-Authentifizierungsanbieters hinzu (siehe das obige Beispiel):-
clientId - Die ID des OIDC-Clients, den Sie für SUSE Observability erstellt haben.
-
secret - Das Geheimnis für den OIDC-Client, den Sie für SUSE Observability erstellt haben.
-
discoveryUri - URI, die verwendet werden kann, um den OIDC-Anbieter zu entdecken. Normalerweise auch dokumentiert oder zurückgegeben, wenn der Client im OIDC-Anbieter erstellt wird.
-
jwsAlgorithm - Der Standard für OIDC ist
RS256. Wenn Ihr OIDC-Anbieter einen anderen verwendet, kann er hier festgelegt werden. -
scope - Sollte mit dem in der OIDC-Anbieter-Konfiguration angegebenen Scope übereinstimmen oder eine Teilmenge davon sein. SUSE Observability verwendet dies, um Zugriff auf diese Teile eines Benutzerprofils im OIDC-Anbieter anzufordern.
-
redirectUri - Optional (nicht im Beispiel): Die URI, unter der der Login-Callback-Endpunkt von SUSE Observability erreichbar ist. Standardmäßig mit dem
stackstate.baseUrlbefüllt, kann aber überschrieben werden. Dies muss eine vollständig qualifizierte URL sein, die auf den/loginCallbackPfad verweist. -
customParameters - Optionale Zuordnung von Schlüssel/Wert-Paaren, die als benutzerdefinierte Anforderungsparameter an den OIDC-Anbieter gesendet werden. Einige OIDC-Anbieter erfordern zusätzliche Anforderungsparameter, die standardmäßig nicht gesendet werden.
-
jwtClaims -
-
usernameField - Das Feld im OIDC-Benutzerprofil, das als Benutzername verwendet werden soll. Standardmäßig wird dies
preferred_usernamesein, jedoch lassen viele Anbieter dieses Feld weg. Eine gute Alternative istemail. -
displayNameField - Das Feld im OIDC-Benutzerprofil, das als Anzeigename verwendet werden soll. Standardmäßig wird dies
namesein. -
groupsField - Das Feld, aus dem SUSE Observability die Rolle/Gruppe für einen Benutzer lesen wird.
-
-
-
In
authentication.yaml- ordnen Sie Benutzerrollen von OIDC den richtigen SUSE Observability-Subjekten mithilfe der Einstellungenroles.guest,roles.powerUser,roles.adminoderroles.platformAdminzu (siehe das obige Beispiel). Für Details siehe die Standardrollen für SUSE Observability. Es können auch weitere SUSE Observability-Rollen erstellt werden, siehe die RBAC-Dokumentation. -
Speichern Sie die Datei
authentication.yamlzusammen mit dervalues.yaml-Datei aus den Installationsanweisungen für SUSE Observability. -
Führen Sie ein Helm-Upgrade aus, um die Änderungen anzuwenden:
helm upgrade \ --install \ --namespace suse-observability \ --values values.yaml \ --values authentication.yaml \ suse-observability \ suse-observability/suse-observability
|
Hinweis:
|
Verwendung eines externen Secrets
Wenn die OIDC-Geheimnisse aus einem externen Geheimnis stammen sollen, folgen Sie diesen Schritten, füllen Sie jedoch die folgenden Daten aus:
kind: Secret
metadata:
name: "<custom-secret-name>"
type: Opaque
data:
oidc_client_id: <base64 of client id>
oidc_secret: <base64 of secret>