Fleet-Mitgliedscluster für die SAML-Authentifizierung einrichten

In diesem Dokument wird beschrieben, wie Clusteradministratoren oder Anwendungsoperatoren Kubernetes-Cluster so konfigurieren können, dass die Authentifizierung über einen SAML-Anbieter (Security Assertion Markup Language) eines Drittanbieters unterstützt wird. Weitere Informationen finden Sie unter Authentifizierung mit Identitäten von Drittanbietern.

Beschränkungen

Sie müssen einen Clustertyp verwenden, der SAML unterstützt.

Hinweise

  1. Install the Google Cloud CLI.

  2. Wenn Sie einen externen Identitätsanbieter (IdP) verwenden, müssen Sie sich zuerst mit Ihrer föderierten Identität in der gcloud CLI anmelden.

  3. Führen Sie den folgenden Befehl aus, um die gcloud CLI zu initialisieren:

    gcloud init
  4. Aktualisieren Sie die gcloud CLI nach der Initialisierung und installieren Sie die erforderlichen Komponenten:

    gcloud components update
    gcloud components install kubectl
  5. Achten Sie darauf, dass Ihr Plattformadministrator Ihnen alle erforderlichen Anbieterinformationen zur Verfügung gestellt hat. Weitere Informationen finden Sie unter Anbieterdetails freigeben.

Cluster konfigurieren

Wenn Sie einen Cluster für die Authentifizierung mit SAML konfigurieren möchten, konfigurieren Sie eine benutzerdefinierte Kubernetes-Ressource (Custom Resource) mit dem Namen ClientConfig mit Informationen zum Identitätsanbieter und den Parametern, die der Anbieter zum Zurückgeben von Nutzerinformationen benötigt.

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

kubectl --kubeconfig USER_CLUSTER_KUBECONFIG -n kube-public edit clientconfig default

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 spec.authentication.saml-Objekt wie im folgenden Beispiel hinzu. Ändern Sie keine bereits geschriebenen Standarddaten.

apiVersion: authentication.gke.io/v2alpha1
kind: ClientConfig
metadata:
  name: default
  namespace: kube-public
spec:
  authentication:
  - name: NAME
    saml:
      attributeMapping:
        ATTRIBUTE_KEY_1: ATTRIBUTE_CEL_EXPRESSION_1
        ATTRIBUTE_KEY_2: ATTRIBUTE_CEL_EXPRESSION_2
      groupsAttribute: GROUPS_ATTRIBUTE
      groupPrefix: GROUP_PREFIX
      idpEntityID: ENTITY_ID
      idpSingleSignOnURI: SIGN_ON_URI
      idpCertificateDataList: IDP_CA_CERT
      userAttribute: USER_ATTRIBUTE
      userPrefix: USER_PREFIX
    certificateAuthorityData: CERTIFICATE_AUTHORITY_DATA
    preferredAuthentication: PREFERRED_AUTHENTICATION
    server: <>
# Rest of the resource is managed by Google. DO NOT MODIFY.
...

Sie können derselben ClientConfig mehrere OIDC-, LDAP- und SAML-Identitätsanbieterkonfigurationen hinzufügen. Der Cluster versucht, sich mit jeder Konfiguration in der Reihenfolge zu authentifizieren, in der sie definiert sind. Der Vorgang wird nach der ersten erfolgreichen Authentifizierung beendet. Im folgenden Beispiel für ClientConfig werden mehrere Identitätsanbieter in einer bestimmten Reihenfolge definiert:

apiVersion: authentication.gke.io/v2alpha1
kind: ClientConfig
metadata:
  name: default
  namespace: kube-public
spec:
  authentication:
  - aws:
      region: us-west-2
    name: AWS Login
  - ldap:
  # Multiple lines are omitted here.
  - saml:
  # Multiple lines are omitted here.
  - azureAD:
  # Multiple lines are omitted here.
  - oidc:
    name: Okta OIDC
  # Multiple lines are omitted here.
  - oidc:
    name: Google OIDC
  # Multiple lines are omitted here.

ClientConfig-SAML-Felder

In der folgenden Tabelle sind die Felder des ClientConfig-saml-Objekts beschrieben. Welche Felder Sie hinzufügen müssen, hängt von Ihren Identitätsanbieter-Tokens und der Konfiguration des Anbieters durch Ihren Plattformadministrator ab.

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.