Mitarbeiteridentitätsföderation mit PingOne AIC konfigurieren

In diesem Dokument erfahren Sie, wie Sie die Mitarbeiteridentitätsföderation mit PingOne Advanced Identity Cloud (AIC) als Identitätsanbieter (IdP) konfigurieren und den Zugriff aufGoogle Cloudverwalten. Nachdem Sie den PingOne AIC-Identitätsanbieter konfiguriert haben, können föderierte Nutzer mit dem SAML 2.0-Protokoll auf Google Cloud -Dienste zugreifen, die Mitarbeiteridentitätsföderation unterstützen.

Hinweis

  1. Sie müssen eine Google Cloud Organisation einrichten.
  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. Gehosteten IdP erstellen

    1. Rufen Sie unter Native Consoles > Access Management (Native Konsolen > Zugriffsverwaltung) Realms > REALM_NAME > Dashboard auf und klicken Sie auf SAML Applications (SAML-Anwendungen).
    2. Klicken Sie auf Entitätsanbieter hinzufügen > Gehostet.
    3. Geben Sie eine Entitäts-ID ein. Notieren Sie sich diesen Wert für die spätere Verwendung.

      1. Prüfen Sie, ob der Wert für Entity Provider Base URL korrekt ist. Advanced Identity Cloud verwendet diesen Wert für alle SAML 2.0-bezogenen Endpunkte.
      2. Geben Sie im Abschnitt Meta Aliases (Meta-Aliasse) einen URL-freundlichen Wert für die Property Identity Provider Meta Alias (Meta-Alias des Identitätsanbieters) an. Dieser Alias muss im Vertrauenskreis eindeutig sein.
      3. Klicken Sie auf Erstellen.
      4. Ordnen Sie auf dem Tab Assertion Processing (Assertion-Verarbeitung) im Abschnitt Attribute Mapper (Attributzuordnung) SAML-Attributnamen lokalen Attributnamen zu. Die SAML-Attributnamen sind die Namen, die in einer Assertion verwendet werden.
      5. Klicken Sie für jede Zuordnung auf Hinzufügen oder Aktualisieren.
      6. Klicken Sie auf Änderungen speichern.

    Attribute verwenden

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

    In den folgenden Beispielen werden Attribute in der SAML-Assertion lokalen Attributen zugeordnet:

    SAML-Attribut Lokales Attribut
    IDPEmail mail
    FirstName givenName
    groups groups

    Richten Sie die erforderlichen Attribute im Abschnitt zur Attributzuordnung ein. Sie ordnen diese Attribute zu, wenn Sie den Anbieter des Mitarbeiteridentitätspools später in dieser Anleitung erstellen.

    Anbietermetadaten exportieren

    Sie haben folgende Möglichkeiten, auf die SAML 2.0-Metadaten für Ihren gehosteten Anbieter zuzugreifen:

    • Über REST

      Führen Sie dazu diesen Befehl aus:

      curl --output METADATA_XML \
          "https://TENANT_ENV_FQDN/am/ExportSamlMetadata?entityid=ENTITY_ID&realm=/REALM"
      
    • In einem Browser

      Öffnen Sie die Metadaten-URL Ihrer Mandantenumgebung in einem Browser, um die XML-Datei herunterzuladen: https://TENANT_ENV_FQDN/am/ExportSamlMetadata?entityid=ENTITY_ID&realm=/REALM

    1. Speichern Sie die XML-Datei auf Ihrem lokalen Computer.

    Google als Remote-SP importieren

    1. Bereiten Sie die Google Cloud SP-Metadaten-XML vor. Verwenden Sie die folgende Vorlage und ersetzen Sie die Platzhalterwerte:

      <?xml version="1.0" encoding="UTF-8"?>
      <md:EntityDescriptor xmlns:md="urn:oasis:names:tc:SAML:2.0:metadata" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" entityID="https://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_ID">
         <md:SPSSODescriptor AuthnRequestsSigned="false" WantAssertionsSigned="true" protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol">
            <md:NameIDFormat>urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified</md:NameIDFormat>
            <md:NameIDFormat>urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress</md:NameIDFormat>
            <md:AssertionConsumerService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="https://auth.cloud.google/signin-callback/locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_ID" index="0" isDefault="true"/>
         </md:SPSSODescriptor>
      </md:EntityDescriptor>
      
    2. Importieren Sie die Metadaten auf eine der folgenden Arten:

      • In der Console

        1. Rufen Sie in der Admin-Konsole von PingOne AIC SAML Applications (SAML-Anwendungen) auf.
        2. Klicken Sie auf Entitätsanbieter hinzufügen > „Remote“.
        3. Laden Sie die gerade erstellte XML-Datei mit den Metadaten des Dienstanbieters Google Cloud hoch.
        4. Klicken Sie auf Erstellen.
      • Über REST

        1. Konvertieren Sie die XML-Metadaten in einen base64url-codierten String.
        2. Zugriffstoken anfordern
        3. Führen Sie dazu diesen Befehl aus:

          curl --request POST \
              --header 'authorization: Bearer ACCESS_TOKEN' \
              --header 'Content-Type: application/json' \
              --header 'Accept-API-Version: resource=1.0' \
              --data-raw '{"standardMetadata": "BASE64URL_ENCODED_METADATA"}' \
              'https://TENANT_ENV_FQDN/am/json/realms/root/realms/alpha/realm-config/saml2/remote?_action=importEntity'
          

    Vertrauenskreis erstellen

    1. Gehen Sie zu Realms > REALM_NAME > Applications > Federation > Circles of Trust.
    2. Klicken Sie auf Vertrauenskreis hinzufügen.
    3. Geben Sie einen Namen ein und klicken Sie auf Erstellen.
    4. Wählen Sie auf der Seite Circle of Trust (Vertrauenskreis) in der Property Entity Providers (Entitätsanbieter) Ihren gehosteten IdP und den Google Cloud Remote-SP aus.
    5. Klicken Sie auf Änderungen speichern.

    PingOne AIC-Mitarbeiteridentitätspool-Anbieter erstellen

    In diesem Abschnitt wird beschrieben, wie Sie einen Anbieter von Workforce-Identitätspools 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.

    SAML-Workforce Identity-Pool-Anbieter erstellen

    1. Wenn Sie einen Anbieter für den SAML-Mitarbeiteridentitätspool erstellen möchten, müssen die Metadaten Ihres Identitätsanbieters mindestens die SAML-Entitäts-ID, die URL für die Einmalanmeldung und einen öffentlichen Signaturschlüssel enthalten. Gehen Sie hierzu folgendermaßen vor:

      gcloud

      1. Speichern Sie die SAML-Metadaten aus Ihrer PingOne AIC-App.

      2. Führen Sie den folgenden Befehl aus, um den SAML-Workforce-Identitätspool-Anbieter zu erstellen:

        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, die Sie aus PingOne AIC exportiert haben.
        • 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, können Sie die Bedingung assertion.ipaddr.startsWith('98.11.12.') festlegen.

        Weitere Informationen finden Sie unter Attributzuordnung.

        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 Mitarbeiteridentitätspools auf: Zu Mitarbeiteridentitätspools
      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 Select a Provider vendor (Anbieteranbieter auswählen) die Option Generic Identity Provider (Allgemeiner Identitätsanbieter) aus.
      5. Wählen Sie unter Authentifizierungsprotokoll auswählen die Option SAML aus.
      6. Führen Sie im Abschnitt Anbieter erstellen die folgenden Schritte aus:
        1. Geben Sie unter Name einen Namen für den Anbieter ein.
        2. Optional: Geben Sie unter Beschreibung eine Beschreibung für den Anbieter ein.
        3. Wählen Sie in der IdP-Metadatendatei (XML) die XML-Metadatendatei aus, die Sie aus PingOne AIC exportiert haben.
        4. Prüfen Sie, ob Aktivierter Anbieter aktiviert ist.
        5. Klicken Sie auf Weiter.
      7. Klicken Sie im Abschnitt Informationen zum Dienstanbieter freigeben auf Weiter.
      8. Führen Sie im Abschnitt 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]
          
        3. Optional: Klicken Sie auf Bedingung hinzufügen und geben Sie einen CEL-Ausdruck ein, der eine Attributbedingung darstellt, um eine Attributbedingung hinzuzufügen. Wenn Sie beispielsweise das Attribut ipaddr auf einen bestimmten IP-Bereich beschränken möchten, können Sie die Bedingung assertion.attributes.ipaddr.startsWith('98.11.12.') festlegen. Durch diese Beispielbedingung wird gewährleistet, dass sich nur Nutzer mit einer IP-Adresse, die mit 98.11.12. beginnt, über diesen Workforce-anbieter anmelden können.

      9. Wenn Sie die detaillierte Audit-Protokollierung aktivieren möchten, klicken Sie unter Detaillierte Protokollierung auf den Schieberegler Audit-Protokollierung 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 PingOne AIC-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: 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 in 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: Projekt-ID.
    • WORKFORCE_POOL_ID: die ID des Mitarbeiteridentitätspools.
    • GROUP_ID: eine Gruppe im zugeordneten google.groups-Anspruch.

    Anmelden und Zugriff testen

    In diesem Abschnitt melden Sie sich als Workforce Identity-Pool-Nutzer 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 PingOne AIC-Anmeldedaten ein, wenn Sie dazu aufgefordert werden.

    Browserbasierte Anmeldung bei der Google Cloud 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. Sie können die Datei optional als Standarddatei für die gcloud CLI aktivieren, indem Sie das Flag --activate hinzufügen. Anschließend können Sie gcloud auth login ausführen, ohne den Pfad der Konfigurationsdatei jedes Mal angeben zu müssen.

    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: ein 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 Informationen.

    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 sie mit dem Befehl gcloud config unset auth/login_config_file deaktivieren.

    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 über das SAML-Protokoll in PingOne AIC an:

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

      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: Projekt-ID.
    4. Die generierte Konfigurationsdatei sieht in etwa 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 PingOne AIC-Anmeldedaten transparent gegen temporäre Google Cloud Zugriffstokens aus, sodass Sie andere gcloud-Aufrufe an Google Cloudsenden können. 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 den folgenden Befehl aus, um die Konten mit Anmeldedaten und das aktive Konto aufzulisten:

      gcloud auth list
      

    Zugriff testen

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

    (Föderierte) Anmeldung bei der Console

    So überprü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