Cluster für GKE Identity Service mit SAML einrichten

Dieses Dokument richtet sich an Clusteradministratoren oder Anwendungsoperatoren, die GKE Identity Service auf einzelnen Clustern einrichten möchten, sodass sich Entwickler und andere Nutzer mit ihren vorhandenen Identitätsdetails aus einer Security Assertion Markup Language (SAML) anmelden können. In der Anleitung wird davon ausgegangen, dass Sie die Übersicht über GKE Identity Service gelesen haben. Bei der Anleitung in diesem Dokument wird davon ausgegangen, dass GKE Identity Service bereits als Clientanwendung bei Ihrem Identitätsanbieter registriert ist.

Hinweise

  • Achten Sie darauf, dass Ihr Plattformadministrator alle erforderlichen Informationen aus der Registrierung von GKE Identity Service bei Ihrem Anbieter erhalten hat, bevor Sie mit der Einrichtung beginnen.
  • Prüfen Sie, ob die folgenden Befehlszeilentools installiert sind:

    • Verwenden Sie die Version 466.0.0 der Google Cloud CLI oder höher, die gcloud, oder die das Befehlszeilentool für die Interaktion mit Google Cloud, enthält. Informationen zur Installation des Google Cloud CLI finden Sie in der Installationsanleitung.
    • kubectl zum Ausführen von Befehlen für Kubernetes-Cluster. Falls Sie kubectl installieren müssen, folgen Sie dieser Anleitung.

    Wenn Sie Cloud Shell als Shell-Umgebung für die Interaktion mit Google Cloud verwenden, sind diese Tools für Sie installiert.

  • Achten Sie darauf, dass die gcloud CLI für die Verwendung mit dem Projekt initialisiert ist, in dem die Cluster registriert sind.

Cluster konfigurieren

GKE Identity Service verwendet einen speziellen benutzerdefinierten Ressourcentyp (CRD) für Kubernetes zum Konfigurieren Ihrer Cluster mit dem Namen ClientConfig, mit Feldern für Informationen zum Identitätsanbieter und den Parametern, die zum Zurückgeben von Nutzerinformationen erforderlich sind.

kubectl

Zum Bearbeiten der Standard-ClientConfig müssen Sie über kubectl eine Verbindung zu Ihrem Cluster herstellen und den folgenden Befehl ausführen:

kubectl --kubeconfig=KUBECONFIG_PATH edit ClientConfigs default -n kube-public

Ersetzen Sie KUBECONFIG_PATH durch den Pfad zur kubeconfig-Datei Ihres Clusters, z. B. $HOME/.kube/config.

Die ClientConfig-Ressource des Clusters wird in einem Texteditor geladen. Fügen Sie das saml-Objekt wie im Snippet angegeben hinzu.

apiVersion: authentication.gke.io/v2alpha1
kind: ClientConfig
metadata:
  name: default
  namespace: kube-public
spec:
  authentication:
  - name: NAME
   saml:
     idpEntityID: ENTITY_ID
     idpSingleSignOnURI: SIGN_ON_URI
     idpCertificateDataList: IDP_CA_CERT
     userAttribute: USER_ATTRIBUTE
     groupsAttribute: {'<var name="user attribute">GROUPS_ATTRIBUTE</var>'}}
     userPrefix: USER_PREFIX
     groupPrefix: GROUP_PREFIX
     attributeMapping:
       ATTRIBUTE_KEY_1 : ATTRIBUTE_CEL_EXPRESSION_1
       ATTRIBUTE_KEY_2 : ATTRIBUTE_CEL_EXPRESSION_2
  certificateAuthorityData: CERTIFICATE_STRING
  preferredAuthentication: PREFERRED_AUTHENTICATION
  server: <>

# Rest of the resource is managed by Google. DO NOT MODIFY.
...

In der folgenden Tabelle sind die Felder des ClientConfig-saml-Objekts beschrieben. Welche Felder Sie hinzufügen müssen, hängt von Ihrem Identitätsanbieter und den Einrichtungsoptionen ab, die von Ihrem Plattformadministrator ausgewählt wurden, wenn Sie den Anbieter für GKE Identity Service konfigurieren.

Feld Erforderlich Beschreibung Format
Name Ja Der Name, den Sie dieser Konfiguration zuweisen möchten, normalerweise der Name des Identitätsanbieters. Ein Konfigurationsname muss mit einem Buchstaben beginnen, gefolgt von bis zu 39 Kleinbuchstaben, Zahlen oder Bindestrichen. Das letzte Zeichen darf kein Bindestrich sein. String
idpEntityID Ja Die SAML-Entitäts-ID für den SAML-Anbieter im URI-Format. Beispiel: https://www.idp.com/saml. URL String
idpSingleSignOnURI Ja Der SSO-Endpunkt des SAML-Anbieters, angegeben im URI-Format. Beispiel: https://www.idp.com/saml/sso. URL String
idpCertificateDataList Ja Entspricht den Zertifikaten des Identitätsanbieters, die zur Überprüfung der SAML-Antwort verwendet werden. Diese Zertifikate müssen standardmäßig Base64-codiert und im PEM-Format vorliegen. Es werden nur maximal zwei Zertifikate unterstützt, um die Zertifikatsrotation des Identitätsanbieters zu ermöglichen. String
userAttribute Nein Name des Attributs in der SAML-Antwort, das den Nutzernamen enthält. String
groupsAttribute Nein Name des Attributs in der SAML-Antwort, das die Gruppeninformationen des Nutzers enthält. String
userPrefix Nein Das Präfix, das Sie den Nutzeranforderungen voranstellen möchten, um Konflikte mit vorhandenen Namen zu vermeiden. Sie können jedoch auch das Standardpräfix verwenden. String
groupPrefix Nein Das Präfix, das Sie Sicherheitsgruppennamen voranstellen möchten, um Konflikte mit vorhandenen Namen in Ihren Zugriffssteuerungsregeln zu vermeiden, wenn Sie Konfigurationen für mehrere Identitätsanbieter haben (normalerweise der Anbietername). String
attributeMapping Nein Die Zuordnung zusätzlicher Nutzerattribute. String
certificateAuthorityData Nein Ein eventuell von Ihrem Plattformadministrator bereitgestellter PEM-codierter Zertifikatstring für den Identitätsanbieter. Fügen Sie den resultierenden String in certificateAuthorityData als eine einzelne Zeile ein. String
preferredAuthentication Nein Name der bevorzugten Authentifizierungsmethode, die im Cluster konfiguriert ist. String

Nachdem Sie Ihre ClientConfig abgeschlossen haben, speichern Sie die Datei, wodurch die ClientConfig in Ihrem Cluster aktualisiert wird. Bei Syntaxfehlern werden Sie aufgefordert, die Konfiguration noch einmal zu bearbeiten, um sie zu beheben.

Nächste Schritte

Nachdem die Konfiguration angewendet wurde, richten Sie den Nutzerzugriff auf Cluster ein.