Identität und Sicherheit mit OIDC einrichten

Diese Seite richtet sich an Infrastrukturbetreiber.

Auf dieser Seite wird beschrieben, wie Sie die Authentifizierung bei Anthos Management Center über den OIDC-Anbieter (OpenID Connect) aktivieren. OIDC ist eine Authentifizierungsebene, die auf OAuth 2.0 basiert und eine RESTful HTTP API angibt. Sie verwendet JSON als Datenformat.

Mit OIDC können Sie Ihren vorhandenen Identitätsanbieter zum Verwalten von Nutzer- und Gruppenauthentifizierung verwenden. Mit OIDC können Sie den Zugriff auf einen Cluster verwalten und die Standardverfahren in Ihrer Organisation zum Erstellen, Aktivieren und Deaktivieren von Konten verwenden.

Hinweis

Zum Einrichten von OIDC benötigen Sie Folgendes:

  1. Den Domainnamen für den Zugriff auf Management Center, der vom Infrastrukturbetreiber bereitgestellt wird, z. B. anthos.example.com.
  2. Einen OIDC-Anbieter wie Microsoft Active Directory Federation Services (ADFS), Google SSO oder Keycloak. Sowohl der Cluster als auch Ihr Browser müssen eine Verbindung zum OIDC-Anbieter herstellen können. Der OIDC-Anbieter muss keine direkte Verbindung zurück zum Cluster herstellen. Wenn Sie keinen OIDC-Anbieter haben, erfahren Sie unter Mit Keycloak authentifizieren, wie Sie einen installieren. Keycloak dient nur zu Demonstrationszwecken und wird für eine Produktionsumgebung nicht empfohlen.

Identitätsprofile erstellen

Identitätsprofile enthalten die erforderliche Konfiguration für die Verwendung eines Identitätsanbieters für die Authentifizierung. Um ein Identitätsprofil zu erstellen, führen Sie die folgenden Schritte aus:

  1. Öffnen Sie in der Management Center Console das Menü Identität und Zugriff.

  2. Klicken Sie auf dem Tab Identität auf Anthos Identity Service (OIDC) einrichten.

  3. Weisen Sie im Feld Profilname einen nutzerfreundlichen Profilnamen zu. Dies ist der Name, auf den das Profil verweist.

  4. Geben Sie die URL des OIDC-Anbieters, die Client-ID und den Clientschlüssel Ihres OIDC-Anbieters ein.

  5. Geben Sie im Feld Nutzernamenanforderung einen Nutzernamen ein. Die Nutzernamenanforderung ist die Anforderung im OIDC-Token, die den Nutzernamen enthält. Wenn die Nutzernamenanforderung beispielsweise email lautet, werden die Nutzer durch das Nutzerfeld im OIDC-Token identifiziert.

    Achten Sie beim Festlegen dieser Anforderung darauf, dass die Anforderung in den angeforderten Bereichen vorhanden ist.

  6. Geben Sie im Feld Nutzernamenpräfix einen Wert ein. Das Nutzernamenpräfix wird verwendet, um zwischen Nutzern verschiedener Identitätsanbieter zu unterscheiden. Das Nutzerpräfix muss auch enthalten sein, wenn Sie Nutzern RBAC-Berechtigungen zuweisen.

    Beispiel: Wenn der Nutzername email und das Nutzerpräfix prefix- ist, werden Nutzer als prefix-sally@example.com identifiziert. Der Nutzer ist sally@example.com und das Präfix prefix- wird dem Nutzer vorangestellt, um zwischen verschiedenen Identitätsanbietern zu unterscheiden.

  7. Geben Sie im Feld Gruppenanforderung einen Wert ein. Im Anthos-Wartemodus lautet die Standardeinstellung groups. Weitere Informationen zu Rollen-Bindungsgruppen finden Sie unter Rollenbindungen.

  8. Geben Sie im Feld Gruppenpräfix einen Wert ein. Mit dem Gruppenpräfix wird zwischen Gruppen verschiedener Identitätsanbieter unterschieden. Das Gruppenpräfix muss auch enthalten sein, wenn Sie Gruppen RBAC-Berechtigungen zuweisen.

    Wenn die Gruppenanforderung beispielsweise groups und das Gruppenpräfix groupprefix- lautet, werden Gruppen als groupprefix-group identifiziert. Die Gruppe ist group und das Präfix groupprefix- wird der Gruppe vorangestellt. Wir empfehlen, am Ende des Präfixes ein Trennzeichen einzufügen, wie in Schritt 6 beschrieben.

  9. (Optional) Geben Sie in das Feld Bereiche einen Wert ein, wenn die Bereiche nicht openid email profile lauten.

    Bereiche sind die Kennzeichnungen, die angeben, welche Zugriffsberechtigungen im ID-Token angefordert werden sollten:

    • openid ist für OIDC erforderlich.
    • profile enthält die standardmäßigen profile-Anforderungen des Nutzers.
    • email enthält im Allgemeinen die Anforderungen email und email_verified.
  10. Wenn der OIDC-Anbieter (z. B. Google SSO) zusätzliche Parameter benötigt, legen Sie das Feld Zusätzliche Parameter fest.

    Für das Feld Zusätzliche Parameter kann beispielsweise prompt=consent,access_type=offline festgelegt werden, um vor jedem Autorisieren der Zugriffsbereiche einen Zustimmungsbildschirm einzublenden.

  11. Wenn die HTTPS-Verbindung zur Seite /.well-known/openid-configuration und/oder die JWKS-Seite Ihres OIDC-Anbieters durch ein nicht vertrauenswürdiges Zertifikat (z. B. durch ein selbst signiertes Zertifikat) geschützt sind, müssen Sie in das Feld OIDC-Anbieterzertifikat das HTTPS-Zertifikat Ihres OIDC-Anbieters eingeben.

    • Codieren Sie das PEM-codierte Zertifikat für den OIDC-Anbieter in base64. Codieren Sie das Zertifikat, einschließlich der Header, in base64, um den String zu erstellen. Fügen Sie den resultierenden String als eine Zeile ein.

    • Beispiel: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tC...k1JSUN2RENDQWFT==

    • Ein Beispiel für die Festlegung dieses Felds finden Sie unter Mit Keycloak authentifizieren.

  12. Klicken Sie auf Senden und wechseln Sie zum Tab Identität und Zugriff zurück.

  13. Registrieren Sie die Callback-URL beim OIDC-Anbieter.

Erstellen Sie zusätzliche Identitätsprofile. Dazu klicken Sie auf dem Tab Identitätsprofil auf Hinzufügen.

Identitätsprofile auf den Administratorcluster anwenden

Identitätsprofile müssen nach dem Erstellen auf Cluster angewendet werden.

  1. Klicken Sie im Tab Identitätsprofil auf Auf Cluster anwenden.

    Profil auf Administratorcluster anwenden

  2. Klicken Sie auf den Tab Administratorcluster. Wählen Sie in der Drop-down-Liste Profile den Profilnamen für das zuvor erstellte Profil aus. Sie können mehrere Profile auf den Cluster anwenden.

    OIDC-Profilseite

  3. Prüfen Sie den Domainnamen für das Profil. Dies ist der Domainname, der dem Profil des Identitätsanbieters zugeordnet ist. Nicht authentifizierte Nutzer, die auf Pfade in der Domain zugreifen möchten, werden zur Anmeldung mit diesem Identitätsanbieter weitergeleitet. Dieser Domainname wird vom Infrastrukturbetreiber zugewiesen.

    Jedem Profil muss ein anderer Domainname zugewiesen werden, wenn mehrere Profile gleichzeitig angewendet werden sollen.

    Informationen zum Konfigurieren eines Domainnamens finden Sie unter Domainnamen für den Zugriff auf Management Center konfigurieren.

  4. Geben Sie einen anfänglichen Nutzernamen ein, dem Zugriffsrechte des Plattformadministrators erteilt werden (z. B. alice@example.com, bob@example.com). Dem Nutzernamen muss das im Profil festgelegte Nutzerpräfix vorangestellt werden. Wenn das Präfix beispielsweise prefix- lautet, muss der Nutzername im Feld Anfänglicher Plattformadministrator so aussehen: prefix-alice@example.com. Weitere Informationen zu Plattformadministratoren und zur Autorisierung finden Sie unter Autorisierungsrollen.

  5. Wenden Sie die Einstellungen an und warten Sie einige Minuten, bis die Konfigurationen angewendet wurden und die Dienste neu gestartet wurden.

Sie können jetzt mit Ihrem Domainnamen auf Management Center zugreifen. Wenn Sie nicht angemeldet sind, werden Sie zur Anmeldung an Ihren OIDC-Anbieter weitergeleitet.

OIDC über API konfigurieren

Anstatt OIDC über das Managementcenter zu konfigurieren, können Sie es auch über die API einrichten. Zum Konfigurieren der OIDC-Authentifizierung müssen Sie die ClientConfig-CRD Ihres Administratorclusters mit Authentifizierungsdetails konfigurieren. Erstellen Sie dazu eine Datei mit folgendem Inhalt (z. B. admin-cluster-oidc-config.yaml):

spec:
  authentication:
  - name: CONFIGURATION_NAME
    oidc:
      clientID: CLIENT_ID
      clientSecret: CLIENT_SECRET
      # The URI to redirect users going through the OAuth flow using cloud
      # console.
      # This is a required parameter not supported by Anthos private mode, so
      # a dummy value is required.
      cloudConsoleRedirectURI: http://cloud.console.not.enabled
      extraParams: EXTRA_PARAMS
      issuerURI: ISSUER_URI
      # The redirect URL that kubectl uses for authorization.
      kubectlRedirectURI: http://localhost:9879/callback
      scopes: SCOPES
      userClaim: USER_CLAIM
      groupsClaim: GROUPS_CLAIM
      certificateAuthorityData: CERT_AUTHORITY_DATA

Ersetzen Sie Folgendes:

  • CONFIGURATION_NAME: Der Name der zu erstellenden OIDC-Konfiguration.
  • CLIENT_ID: Die ID für die Clientanwendung, die Authentifizierungsanfragen an den OpenID-Anbieter sendet.
  • CLIENT_SECRET: Secret für die Clientanwendung.
  • EXTRA_PARAMS: zusätzliche Schlüssel/Wert-Parameter (durch Kommas getrennt), die an den OpenID-Anbieter gesendet werden sollen.
  • ISSUER_URI: URL, wo Autorisierungsanfragen an Ihre OpenID gesendet werden.
  • SCOPES: zusätzliche Bereiche (durch Kommas getrennt), die an den OpenID-Anbieter gesendet werden sollen.
  • USER_CLAIM: JWT-Anspruch zur Verwendung als Nutzername. Je nach OpenID-Anbieter können Sie andere Anforderungen auswählen, beispielsweise E-Mail-Adresse oder Name. Allerdings wird anderen Anforderungen als der E-Mail-Adresse die Aussteller-URL vorangestellt, um Namenskonflikte zu vermeiden.
  • GROUPS_CLAIM: Name des Anspruchs im OIDC-ID-Token, das die Informationen der Nutzergruppe enthält.
  • CERT_AUTHORITY_DATA: Ein optionales base64- und PEM-codiertes Zertifikat für den OIDC-Anbieter. Entfernen Sie es, wenn es nicht erforderlich ist. Codieren Sie das Zertifikat, einschließlich der Header, in base64, um den String zu erstellen. Fügen Sie den erstellten String in certificateAuthorityData als eine Zeile ein.

Nachdem Sie die Datei mit der gewünschten Konfiguration bearbeitet haben, führen Sie den folgenden Befehl aus:

kubectl patch --kubeconfig=ADMIN_KUBECONFIG clientconfig default -n kube-public \
  --type=merge --patch "$(cat OIDC_CONFIG)"

Ersetzen Sie Folgendes:

  • ADMIN_KUBECONFIG: der Pfad zur kubeconfig-Datei des Administratorclusters.
  • OIDC_CONFIG: Pfad zur erstellten Konfigurationsdatei.

Mit OIDC beim Kubernetes API-Server des Administratorclusters anmelden

Nutzer können admin-actl-auth-login-config.yaml von der Seite Identität und Zugriff herunterladen, nachdem OIDC eingerichtet wurde.

  1. Klicken Sie auf der Seite „Identität und Zugriff“ auf den Tab Identität und dann auf den Tab Cluster.

  2. Suchen Sie den Cluster Admin und klicken Sie auf Konfigurationsdetails ansehen.

  3. Klicken Sie auf Anmeldekonfiguration herunterladen, um die Konfiguration herunterzuladen, die für die Anmeldung mit Identität beim Kubernetes API-Server des Administratorclusters benötigt wird.

    Schaltfläche zum Herunterladen der IIS-Konfiguration

  4. Die Ausgabedatei admin-actl-auth-login-config.yaml enthält die Konfiguration, die Nutzer für die Authentifizierung beim Administratorcluster benötigen. Geben Sie admin-actl-auth-login-config.yaml für vertrauenswürdige Nutzer frei, die Zugriff auf den Cluster benötigen.

  5. Nach Erhalt von admin-actl-auth-login-config.yaml können sich Nutzer mit dem Befehl actl auth login anmelden. Bei erfolgreicher Anmeldung über einen Browser wird eine kubeconfig-Datei generiert. Nutzer können diese neue Datei mit ihren föderierten Anmeldedaten für den Cluster verwenden:

    # Where to store the new kubeconfig
    export ADMIN_OIDC_KUBECONFIG=$(pwd)/admin-oidc-kubeconfig
    
    actl auth login --login-config=admin-actl-auth-login-config.yaml --cluster=admin \
      --kubeconfig=${ADMIN_OIDC_KUBECONFIG} \
      --preferred-auth="CONFIGURATION_NAME"
    

    Ersetzen Sie CONFIGURATION_NAME durch den Namen des Identitätsprofils, das zur Authentifizierung dient.

  6. Nutzer können jetzt ${ADMIN_OIDC_KUBECONFIG} für den Zugriff auf Ressourcen im Administrator-Cluster verwenden. Beispiel:

    kubectl get pods -n anthos-management-center --kubeconfig=${ADMIN_OIDC_KUBECONFIG}
    
  7. ${ADMIN_OIDC_KUBECONFIG} kann auch verwendet werden, um actl-CLI-Befehle zu authentifizieren. Beispiel:

    actl platform management-center describe --kubeconfig=${ADMIN_OIDC_KUBECONFIG}
    

Authentifizierungskonfiguration zurücksetzen

Wenn ein Plattformadministrator aufgrund eines Fehlers in den Authentifizierungseinstellungen keinen Zugriff mehr auf Management Center hat, führen Sie den folgenden Befehl aus, um die OIDC-Authentifizierung auf die ursprüngliche Einrichtung zurückzusetzen und die neue Zugriffs-URL für Management Center abzurufen.

actl auth reset --kubeconfig=ADMIN_KUBECONFIG

# Get the new access URL to management center.
actl platform management-center describe --kubeconfig=ADMIN_KUBECONFIG

Weitere Informationen