Mitarbeiteridentitätsföderation mit PingFederate konfigurieren

In diesem Dokument wird beschrieben, wie Sie die Mitarbeiteridentitätsföderation mit dem Identitätsanbieter (IdP) PingFederate konfigurieren und den Zugriff auf Google Cloudverwalten. Nachdem Sie den PingFederate-IdP konfiguriert haben, können föderierte Nutzer mit dem SAML 2.0-Protokoll auf Google Cloud Dienste zugreifen, die die Mitarbeiteridentitätsföderationunterstützen.

Hinweis

  1. Achten Sie darauf, dass Sie eine Google Cloud Organisation eingerichtet haben.
  2. Installieren Sie die Google Cloud CLI. Initialisieren Sie die Google Cloud CLI nach der Installation mit dem folgenden Befehl:

    gcloud init

    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. So richten Sie eine PingFederate-Anwendung ein, die das SAML 2.0-Protokoll verwendet:

    1. Legen Sie die SAML 2.0-Entitäts-ID Ihres PingFederate-IdP fest. Weitere Informationen finden Sie unter Föderationsinformationen angeben.
    2. Erstellen Sie eine SAML 2.0-SP-Verbindung. Weitere Informationen finden Sie unter SP-Verbindungstyp auswählen. Führen Sie dann die folgenden Schritte aus:

      1. Wählen Sie unter Connection Type (Verbindungstyp) die Optionen Browser SSO Profiles (Browser-SSO-Profile) und SAML 2.0 protocol (SAML 2.0-Protokoll) aus.
      2. Wählen Sie unter Import Metadata (Metadaten importieren) die Option None (Keine) aus.
    3. Legen Sie unter General Info (Allgemeine Informationen) die Partner's Entity ID (Connection ID) (Entitäts-ID des Partners (Verbindungs-ID)) auf Folgendes fest:

      https://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_ID
      
    4. Aktivieren Sie unter SAML Profiles (SAML-Profile) die Option SP-initiated SSO (Vom Dienstanbieter initiierte SSO). Wenn Sie auch die vom IdP initiierte Einmalanmeldung (SSO) verwenden möchten, können Sie sie ebenfalls aktivieren.

    5. Definieren Sie unter Attribute Contract (Attributvertrag) benutzerdefinierte Attribute (z. B. E-Mail und Gruppen), die in der Assertion übergeben werden sollen. Diese Attribute können später zum Erstellen von Richtlinien zur Zugriffsverwaltung verwendet werden. Google Cloud

    6. Achten Sie unter Attribute Contract Fulfillment darauf, dass SAML_SUBJECT einem Feld zugeordnet ist, das für jeden Nutzer einen eindeutigen Wert hat. Eine E-Mail-Adresse ist beispielsweise in der Regel für jeden Nutzer eindeutig, ändert sich nicht und wird häufig verwendet, um in Google Cloud Richtlinien zur Zugriffsverwaltung auf einen bestimmten Nutzer zu verweisen.

    7. Wenn Sie die Anmeldung in der Console (föderiert) einrichten möchten, fügen Sie unter Assertion Consumer Service URL (ACS-URL) die folgende Endpunkt-URL hinzu:

      https://auth.cloud.google/signin-callback/locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_ID
      

      Ersetzen Sie Folgendes:

      • WORKFORCE_POOL_ID: die ID des Workforce-Pools, den Sie zuvor erstellt haben.
      • WORKFORCE_PROVIDER_ID: die ID des Workforce-Anbieters, den Sie später erstellen.
    8. Setzen Sie Binding (Bindung) für diesen Endpunkt auf POST.

    9. Wenn Sie die Anmeldung in der Console (föderiert) aktivieren möchten, wählen Sie unter Allowable SAML Bindings (Zulässige SAML-Bindungen) die Option Redirect (Weiterleitung) aus.

    10. Wählen Sie für Signature Policy (Signaturrichtlinie) die Option Sign Response As Required (Antwort bei Bedarf signieren) aus.

    11. Speichern und aktivieren Sie die Verbindung.

    Attribute verwenden

    In diesem Abschnitt wird beschrieben, wie Sie Attribute aus der SAML-Assertion verwenden.

    Verwenden Sie Attributverträge , um die benutzerdefinierten Attribute in den generierten SAML-Assertions anzugeben. Nachdem Sie Attribute konfiguriert haben, können Sie sie in Google Cloud zum Erstellen von Richtlinien zur Zugriffsverwaltung verwenden. Weitere Informationen zu Attributverträgen finden Sie in der PingFederate-Serverdokumentation unter Attribute contracts.

    In dieser Anleitung verwenden wir beispielsweise PingOne als Datenspeicher für PingFederate und ordnen die email, firstName, und groups Attributverträge den Nutzerattributen aus dem PingOne-Datenspeicher zu:

    Attributvertrag Wert
    email email
    firstName name.given
    groups memberOfGroupIDs

    Anbieter von Workforce Identity-Pools für PingFederate erstellen

    In diesem Abschnitt wird beschrieben, wie Sie einen Anbieter von Workforce Identity-Pools erstellen, um Ihren IdP-Nutzern den Zugriff auf Google Cloudzu ermöglichen. Sie können den Anbieter so konfigurieren, dass er das SAML-Protokoll verwendet.

    Anbieter von Workforce Identity-Pools für SAML 2.0 erstellen

    1. So konfigurieren Sie die SAML-Anwendung:

      gcloud

      Mit dem folgenden Befehl erstellen Sie den Anbieter des SAML-Mitarbeiteridentitätspools:

      gcloud iam workforce-pools providers create-saml WORKFORCE_PROVIDER_ID \
          --workforce-pool="WORKFORCE_POOL_ID" \
          --display-name="DISPLAY_NAME" \
          --description="DESCRIPTION" \
          --idp-metadata-path="XML_METADATA_PATH" \
          --attribute-mapping="ATTRIBUTE_MAPPING" \
          --attribute-condition="ATTRIBUTE_CONDITION" \
          --location=global
      

      Ersetzen Sie Folgendes:

      • WORKFORCE_PROVIDER_ID: eine Anbieter-ID.
      • WORKFORCE_POOL_ID: die ID des Mitarbeiteridentitätspools.
      • DISPLAY_NAME: ein Anzeigename.
      • DESCRIPTION: eine Beschreibung.
      • XML_METADATA_PATH: der Pfad zur XML-formatierten Metadatendatei von PingFederate.
      • ATTRIBUTE_MAPPING: die Attributzuordnung; Beispiel: google.subject=assertion.subject,google.groups=assertion.attributes.groups,attribute.department=assertion.attributes.department[0].
      • ATTRIBUTE_CONDITION: eine optionale Attributbedingung. Wenn Sie beispielsweise das Attribut ipaddr auf einen bestimmten IP-Bereich beschränken möchten, setzen Sie die Bedingung auf assertion.ipaddr.startsWith('98.11.12.').

      Mit diesem Befehl werden subject, groups und department in der SAML-Assertion den Attributen google.subject, google.groups und attribute.department zugewiesen. Durch die Attributbedingung wird außerdem sichergestellt, dass sich nur Nutzer innerhalb eines bestimmten IP-Bereichs über diesen Workforce-Anbieter anmelden können.

      Console

      So konfigurieren Sie den SAML-Anbieter mit der Google Cloud Console:

      1. Rufen Sie in der Google Cloud Console die Seite Workforce Identity-Pools auf: Zu Workforce Identity-Pools
      2. Wählen Sie in der Tabelle Workforce Identity-Pools den Pool aus, für den Sie den Anbieter erstellen möchten.
      3. Klicken Sie im Bereich Anbieter auf Anbieter hinzufügen.
      4. Wählen Sie in der Liste Anbieter auswählen die Option Generischer Identitätsanbieter aus.
      5. Wählen Sie unter Authentifizierungsprotokoll auswählen die Option SAML aus.
      6. Führen Sie im Bereich Anbieter erstellen folgende Schritte aus:
        1. Geben Sie unter Name einen Namen für den Anbieter ein.
        2. Wählen Sie unter IdP-Metadatendatei (XML) die XML-Metadatendatei von PingFederate aus.
        3. Klicken Sie auf Weiter.
      7. Klicken Sie im Bereich Anbieterinformationen freigeben auf Weiter.
      8. Führen Sie im Bereich Anbieter konfigurieren die folgenden Schritte aus:

        1. Geben Sie unter Attributzuordnung einen CEL-Ausdruck für google.subject ein (z. B. assertion.subject).
        2. Optional: Wenn Sie andere Zuordnungen eingeben möchten, klicken Sie auf Zuordnung hinzufügen und geben Sie andere Zuordnungen ein. Beispiel:

          google.subject=assertion.subject,
          google.groups=assertion.attributes['https://example.com/aliases'],
          attribute.costcenter=assertion.attributes.costcenter[0]
          
      9. Wenn Sie das detaillierte Audit-Logging aktivieren möchten, klicken Sie unter Detailliertes Logging auf den Schieberegler Audit-Logging für Attributwerte aktivieren.

      10. Klicken Sie auf Senden, um den Anbieter zu erstellen.

    Zugriff auf Google Cloud Ressourcen verwalten

    In diesem Abschnitt wird beschrieben, wie Sie den Zugriff auf Google Cloud Ressourcen für PingFederate-Nutzer verwalten.

    Das in dieser Anleitung verwendete Beispielprojekt kann sich von dem Projekt unterscheiden, das Sie zum Einrichten der Mitarbeiteridentitätsföderation verwendet haben.

    Sie können Rollen für einzelne Identitäten, Identitätsgruppen oder gesamte Pools verwalten. Weitere Informationen finden Sie unter Mitarbeiteridentitätspool-Nutzer in IAM-Richtlinien darstellen.

    Zugeordnete Abteilungsattribute verwenden

    Führen Sie den folgenden Befehl aus, um allen Identitäten innerhalb einer bestimmten Abteilung für das Projekt TEST_PROJECT_ID die Rolle „Storage-Administrator“ (roles/storage.admin) zuzuweisen:

    gcloud projects add-iam-policy-binding TEST_PROJECT_ID \
        --role="roles/storage.admin" \
        --member="principalSet://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/attribute.department/DEPARTMENT_VALUE"
    

    Ersetzen Sie Folgendes:

    • TEST_PROJECT_ID: die Projekt-ID.
    • WORKFORCE_POOL_ID: die ID des Mitarbeiteridentitätspools.
    • DEPARTMENT_VALUE: der zugeordnete Wert attribute.department.

    Zugeordnete Gruppen verwenden

    Führen Sie den folgenden Befehl aus, um allen Identitäten innerhalb der Gruppe GROUP_ID für das Projekt TEST_PROJECT_ID die Rolle „Storage-Administrator“ (roles/storage.admin) zuzuweisen:

    gcloud projects add-iam-policy-binding TEST_PROJECT_ID \
        --role="roles/storage.admin" \
        --member="principalSet://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/group/GROUP_ID"
    

    Ersetzen Sie Folgendes:

    • TEST_PROJECT_ID: die Projekt-ID.
    • WORKFORCE_POOL_ID: die ID des Mitarbeiteridentitätspools.
    • GROUP_ID: eine Gruppe im zugeordneten Anspruch google.groups.

    Anmelden und Zugriff testen

    In diesem Abschnitt melden Sie sich als Nutzer des Mitarbeiteridentitätspools an und testen Ihren Zugriff.

    Anmelden

    (Föderierte) Anmeldung bei der Console

    So melden Sie sich in der Google Cloud Console für die Mitarbeiteridentitätsföderation an, die auch als Console (föderiert) bezeichnet wird:

    1. Rufen Sie die (föderierte) Anmeldeseite der Konsole auf.

      Zur Konsole (föderiert)

    2. Geben Sie den Namen des Anbieters ein. Er muss so formatiert sein:
      locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_ID
    3. Geben Sie Ihre PingFederate-Anmeldedaten ein, wenn Sie dazu aufgefordert werden.

    Browserbasierte Anmeldung bei der gcloud CLI

    So melden Sie sich mit einem browserbasierten Anmeldevorgang in der gcloud CLI an:

    Mit dem folgenden Befehl erstellen Sie die Konfigurationsdatei für die Anmeldung. Optional können Sie die Datei als Standard für die gcloud CLI aktivieren, indem Sie das --activate Flag hinzufügen. Anschließend können Sie gcloud auth login ausführen, ohne jedes Mal den Pfad der Konfigurationsdatei anzugeben.

    gcloud iam workforce-pools create-login-config \
        locations/global/workforcePools/WORKFORCE_POOL_ID/providers/PROVIDER_ID \
        --output-file=LOGIN_CONFIG_FILE_PATH

    Ersetzen Sie Folgendes:

    • WORKFORCE_POOL_ID: die ID des Workforce-Pools
    • PROVIDER_ID: die Anbieter-ID
    • LOGIN_CONFIG_FILE_PATH: der Pfad zu einer von Ihnen angegebenen Konfigurationsdatei, z. B. login.json

    Die Datei enthält die Endpunkte, die von der gcloud CLI verwendet werden, um den browserbasierten Authentifizierungsvorgang zu aktivieren und die Zielgruppe auf den IdP festzulegen, der im Anbieter des Mitarbeiteridentitätspools konfiguriert wurde. Die Datei enthält keine vertraulichen Daten.

    Die Ausgabe sieht dann ungefähr so aus:

    {
      "type": "external_account_authorized_user_login_config",
      "audience": "//iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_ID",
      "auth_url": "https://auth.cloud.google/authorize",
      "token_url": "https://sts.googleapis.com/v1/oauthtoken",
      "token_info_url": "https://sts.googleapis.com/v1/introspect"
    }

    Wenn Sie verhindern möchten, dass gcloud auth login diese Konfigurationsdatei automatisch verwendet, können Sie die Festlegung aufheben, indem Sie gcloud config unset auth/login_config_file ausführen.

    Sie haben folgende Möglichkeiten, sich mit einer browserbasierten Anmeldung zu authentifizieren:

    • Wenn Sie das Flag --activate beim Erstellen der Konfigurationsdatei verwendet oder die Konfigurationsdatei mit gcloud config set auth/login_config_file aktiviert haben, verwendet die gcloud CLI Ihre Konfigurationsdatei automatisch:

      gcloud auth login
    • Mit dem folgenden Befehl melden Sie sich durch Angabe des Speicherorts der Konfigurationsdatei an:

      gcloud auth login --login-config=LOGIN_CONFIG_FILE_PATH
    • Wenn Sie den Speicherort der Konfigurationsdatei mit einer Umgebungsvariable angeben möchten, legen Sie für CLOUDSDK_AUTH_LOGIN_CONFIG_FILE den Konfigurationspfad fest.

    So beenden Sie die Verwendung der Konfigurationsdatei für die Anwendung:

    • Wenn Sie das Flag --activate beim Erstellen der Konfigurationsdatei verwendet oder die Konfigurationsdatei mit gcloud config set auth/login_config_file aktiviert haben, müssen Sie den folgenden Befehl ausführen, um die Festlegung aufzuheben:

      gcloud config unset auth/login_config_file
    • Löschen Sie die Umgebungsvariable CLOUDSDK_AUTH_LOGIN_CONFIG_FILE, falls sie festgelegt ist.

    Monitorlose Anmeldung bei der gcloud CLI

    So melden Sie sich mit der gcloud CLI und dem SAML-Protokoll in PingFederate an:

    1. Melden Sie einen Nutzer bei Ihrer PingFederate-Anwendung an und rufen Sie die SAML-Antwort ab.
    2. Speichern Sie die von PingFederate zurückgegebene SAML-Antwort an einem sicheren Ort auf Ihrem lokalen Computer. Speichern Sie den Pfad in einer Umgebungsvariablen, z. B. SAML_ASSERTION_PATH=/path/to/assertion.xml.
    3. Generieren Sie eine Konfigurationsdatei:

      gcloud iam workforce-pools create-cred-config \
          locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_ID \
          --subject-token-type=urn:ietf:params:oauth:token-type:saml2 \
          --credential-source-file=SAML_ASSERTION_PATH \
          --workforce-pool-user-project=PROJECT_ID \
          --output-file=config.json
      

      Ersetzen Sie Folgendes:

      • SAML_ASSERTION_PATH: der Pfad der SAML-Assertion-Datei.
      • PROJECT_ID: die Projekt-ID.
    4. Die generierte Konfigurationsdatei sieht dann ungefähr so aus:

      {
        "type": "external_account",
        "audience": "//iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_ID",
        "subject_token_type": "urn:ietf:params:oauth:token-type:saml2",
        "token_url": "https://sts.googleapis.com/v1/token",
        "credential_source": {
          "file": "SAML_ASSERTION_PATH"
        },
        "workforce_pool_user_project": "PROJECT_ID"
      }
      
    5. Führen Sie den folgenden Befehl aus, um sich mit Token-Austausch in der gcloud CLI anzumelden:

      gcloud auth login --cred-file=config.json
      

      gcloud tauscht dann Ihre PingFederate-Anmeldedaten transparent gegen temporäre Google Cloud Zugriffstokens aus, sodass Sie andere gcloud-Aufrufe an senden können Google Cloud. Die Ausgabe sieht etwa so aus:

      Authenticated with external account user credentials for: [principal://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/subject/USER_ID].

    6. Führen Sie folgenden Befehl aus, um die Konten mit Anmeldedaten und das aktive Konto aufzulisten:

      gcloud auth list
      

    Zugriff testen

    Sie haben Zugriff auf Google Cloud Dienste, die die Mitarbeiteridentitätsföderation unterstützen und auf die Sie Zugriff erhalten haben. Sie haben zuvor in dieser Anleitung allen Identitäten innerhalb einer bestimmten Abteilung oder Gruppe für das Projekt TEST_PROJECT_ID die Rolle „Storage-Administrator“ zugewiesen. Sie können testen, ob Sie Zugriff haben. Dazu listen Sie Cloud Storage-Buckets auf.

    (Föderierte) Anmeldung bei der Console

    So prüfen Sie Ihren Zugriff in der Console (föderiert):

    1. Gehen Sie zur Seite Cloud Storage
    2. Prüfen Sie, ob Sie die Liste der vorhandenen Buckets für das Projekt TEST_PROJECT_ID sehen.

    gcloud CLI

    Führen Sie folgenden Befehl aus, um Cloud Storage-Buckets und -Objekte für das Projekt aufzulisten, auf das Sie Zugriff haben:

    gcloud alpha storage ls --project="TEST_PROJECT_ID"
    

    Das Hauptkonto muss die Berechtigung serviceusage.services.use für das Projekt haben, das in der gcloud CLI-Sitzung festgelegt ist: PROJECT_ID.

    Nächste Schritte