Configurare la federazione delle identità per la forza lavoro con PingOne AIC

Questo documento mostra come configurare la federazione delle identità per la forza lavoro con PingOne Advanced Identity Cloud (AIC) come provider di identità (IdP) e gestire l'accesso a Google Cloud. Dopo aver configurato l'IdP PingOne AIC, gli utenti federati possono accedere ai servizi Google Cloud che supportano la federazione delle identità per la forza lavoro utilizzando il protocollo SAML 2.0.

Prima di iniziare

  1. Assicurati di configurare un'organizzazione Google Cloud .
  2. Installa Google Cloud CLI. Dopo l'installazione, inizializza Google Cloud CLI eseguendo il comando seguente:

    gcloud init

    Se utilizzi un provider di identità (IdP) esterno, devi prima accedere a gcloud CLI con la tua identità federata.

  3. Crea un IdP ospitato

    1. In Native Consoles > Access Management (Gestione accessi), vai a Realms > REALM_NAME > Dashboard e fai clic su Applicazioni SAML.
    2. Fai clic su Aggiungi provider di entità > Ospitato.
    3. Inserisci un ID entità. Registra questo valore per utilizzarlo in un secondo momento.

      1. Verifica che il valore di URL di base del fornitore di entità sia corretto. Advanced Identity Cloud utilizza questo valore per tutti gli endpoint correlati a SAML 2.0.
      2. Nella sezione Alias meta, fornisci un valore compatibile con gli URL nella proprietà Alias meta del provider di identità. Questo alias deve essere univoco nel cerchio di attendibilità.
      3. Fai clic su Crea.
      4. Nella scheda Elaborazione asserzione, nella sezione Mappatore attributi, mappa i nomi degli attributi SAML ai nomi degli attributi locali. I nomi degli attributi SAML sono i nomi utilizzati in un'asserzione.
      5. Fai clic su Aggiungi o Aggiorna per ogni mappatura.
      6. Fai clic su Salva modifiche.

    Utilizzare gli attributi

    Questa sezione descrive come utilizzare gli attributi dell'asserzione SAML.

    Negli esempi seguenti, gli attributi nell'asserzione SAML vengono mappati agli attributi locali:

    Attributo SAML Attributo locale
    IDPEmail mail
    FirstName givenName
    groups groups

    Configura gli attributi richiesti nella sezione di mappatura degli attributi. Mapperai questi attributi quando creerai il provider di pool di identità per la forza lavoro più avanti in questa guida.

    Esportare i metadati del fornitore

    Puoi accedere ai metadati SAML 2.0 per il tuo provider ospitato in uno dei seguenti modi:

    • Over REST

      Esegui questo comando:

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

      Apri l'URL dei metadati dell'ambiente tenant in un browser per scaricare il file XML: https://TENANT_ENV_FQDN/am/ExportSamlMetadata?entityid=ENTITY_ID&realm=/REALM

    1. Salva il file XML nella macchina locale.

    Importare Google come SP remoto

    1. Prepara il file XML dei metadati del Google Cloud service provider. Utilizza il seguente modello, sostituendo i valori segnaposto:

      <?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. Importa i metadati in uno dei seguenti modi:

      • Nella console

        1. Nella console di amministrazione PingOne AIC, vai ad Applicazioni SAML.
        2. Fai clic su Aggiungi fornitore di entità > Telecomando.
        3. Carica il file XML dei metadati del Google Cloud SP che hai appena creato.
        4. Fai clic su Crea.
      • Over REST

        1. Converti i metadati XML in una stringa con codifica base64url.
        2. Ottenere un token di accesso.
        3. Esegui questo comando:

          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'
          

    Crea un cerchio di attendibilità (CoT)

    1. Vai a Regni > REALM_NAME > Applicazioni > Federazione > Cerchie di attendibilità.
    2. Fai clic su Aggiungi cerchia di persone fidate.
    3. Inserisci un nome e fai clic su Crea.
    4. Nella pagina Cerchia di attendibilità, nella proprietà Fornitori di entità, seleziona il tuo IdP ospitato e il Google Cloud service SP.
    5. Fai clic su Salva modifiche.

    Crea il provider del pool di identità per la forza lavoro PingOne AIC

    Questa sezione descrive come creare un provider del pool di identità per la forza lavoro per consentire agli utenti del tuo IdP di accedere a Google Cloud. Puoi configurare il provider in modo che utilizzi il protocollo SAML.

    Crea un provider di pool di identità per la forza lavoro SAML

    1. Per creare un provider di identità del pool di identità della forza lavoro SAML, devi assicurarti che i metadati del provider di identità includano almeno l'ID entità SAML, l'URL Single Sign-On e una chiave pubblica di firma. A questo scopo, procedi nel seguente modo:

      gcloud

      1. Salva i metadati SAML dall'app PingOne AIC.

      2. Per creare il fornitore del pool di identità della forza lavoro SAML, esegui questo comando:

        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
        

        Sostituisci quanto segue:

        • WORKFORCE_PROVIDER_ID: un ID fornitore.
        • WORKFORCE_POOL_ID: l'ID del pool di identità della forza lavoro.
        • DISPLAY_NAME: un nome visualizzato.
        • DESCRIPTION: una descrizione.
        • XML_METADATA_PATH: il percorso del file di metadati in formato XML che hai esportato da PingOne AIC.
        • ATTRIBUTE_MAPPING: la mappatura degli attributi, ad esempio google.subject=assertion.subject,google.groups=assertion.attributes.groups,attribute.department=assertion.attributes.department[0].
        • ATTRIBUTE_CONDITION: una condizione dell'attributo facoltativa; ad esempio, per limitare l'attributo ipaddr a un determinato intervallo IP, puoi impostare la condizione assertion.ipaddr.startsWith('98.11.12.').

        Per saperne di più, vedi Mappatura degli attributi.

        Questo comando assegna subject, groups e department nell'asserzione SAML agli attributi google.subject, google.groups e attribute.department, rispettivamente. La condizione dell'attributo garantisce inoltre che solo gli utenti all'interno di un determinato intervallo IP possano accedere utilizzando questo provider di forza lavoro.

      Console

      Per configurare il provider SAML utilizzando la console Google Cloud :

      1. Nella console Google Cloud , vai alla pagina Pool di identità per la forza lavoro: Vai a Pool di identità per la forza lavoro
      2. Nella tabella Pool di identità per la forza lavoro, seleziona il pool per cui vuoi creare il provider.
      3. Nella sezione Fornitori, fai clic su Aggiungi fornitore.
      4. Nell'elenco Seleziona un fornitore di provider, seleziona Provider di identità generico.
      5. In Select an authentication protocol (Seleziona un protocollo di autenticazione), seleziona SAML.
      6. Nella sezione Crea un fornitore, segui questi passaggi:
        1. In Nome, inserisci un nome per il provider.
        2. (Facoltativo) In Descrizione, inserisci una descrizione del fornitore.
        3. In File di metadati IDP (XML), seleziona il file XML dei metadati che hai esportato da PingOne AIC.
        4. Assicurati che Fornitore abilitato sia attivato.
        5. Fai clic su Continua.
      7. Nella sezione Condividi le informazioni del tuo fornitore, fai clic su Continua.
      8. Nella sezione Configura provider, segui questi passaggi:

        1. In Mappatura degli attributi, inserisci un'espressione CEL per google.subject (ad esempio, assertion.subject).
        2. (Facoltativo) Per inserire altre mappature, fai clic su Aggiungi mappatura e inserisci altre mappature, ad esempio:

          google.subject=assertion.subject,
          google.groups=assertion.attributes['https://example.com/aliases'],
          attribute.costcenter=assertion.attributes.costcenter[0]
          
        3. (Facoltativo) Per aggiungere una condizione per attributo, fai clic su Aggiungi condizione e inserisci un'espressione CEL che rappresenti una condizione per attributo. Ad esempio, per limitare l'attributo ipaddr a un determinato intervallo IP, puoi impostare la condizione assertion.attributes.ipaddr.startsWith('98.11.12.'). Questa condizione di esempio garantisce che solo gli utenti con un indirizzo IP che inizia con 98.11.12. possano accedere utilizzando questo provider di forza lavoro.

      9. Per attivare il logging dettagliato degli audit, in Logging dettagliato, fai clic sul pulsante di attivazione/disattivazione Abilita l'audit logging dei valori degli attributi.

      10. Per creare il fornitore, fai clic su Invia.

    Gestire l'accesso alle risorse Google Cloud

    Questa sezione mostra come gestire l'accesso alle risorse Google Cloud per gli utenti di PingOne AIC.

    Il progetto di esempio utilizzato in questa guida può essere diverso da quello che hai utilizzato per configurare la federazione delle identità per la forza lavoro.

    Puoi gestire i ruoli per singole identità, un gruppo di identità o un intero pool. Per ulteriori informazioni, consulta Rappresentare gli utenti del pool di identità della forza lavoro nelle policy IAM.

    Utilizzare gli attributi di reparto mappati

    Per concedere il ruolo Amministratore Storage (roles/storage.admin) a tutte le identità all'interno di un reparto specifico per il progetto TEST_PROJECT_ID, esegui questo comando:

    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"
    

    Sostituisci quanto segue:

    • TEST_PROJECT_ID: l'ID progetto
    • WORKFORCE_POOL_ID: l'ID del pool di identità della forza lavoro.
    • DEPARTMENT_VALUE: il valore attribute.department mappato.

    Utilizzare i gruppi mappati

    Per concedere il ruolo Storage Admin (roles/storage.admin) a tutte le identità all'interno del gruppo GROUP_ID per il progetto TEST_PROJECT_ID, esegui questo comando:

    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"
    

    Sostituisci quanto segue:

    • TEST_PROJECT_ID: l'ID progetto
    • WORKFORCE_POOL_ID: l'ID del pool di identità della forza lavoro.
    • GROUP_ID: un gruppo nell'attestazione google.groups mappata.

    Accedi e verifica l'accesso

    In questa sezione, accedi come utente del pool di identità per la forza lavoro e verifica il tuo accesso.

    Accedi

    accesso (federato) alla console

    Per accedere alla console Google Cloud federata di Workforce Identity Federation, segui questi passaggi:

    1. Vai alla pagina di accesso alla console (federata).

      Vai alla console (federata)

    2. Inserisci il nome del fornitore, formattato come segue:
      locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_ID
    3. Quando richiesto, inserisci le tue credenziali PingOne AIC.

    Accesso basato su browser di Google Cloud CLI

    Per accedere a gcloud CLI utilizzando un flusso di accesso basato sul browser:

    Per creare il file di configurazione di accesso, esegui questo comando. Se vuoi, puoi attivare il file come predefinito per gcloud CLI aggiungendo il flag --activate. Puoi quindi eseguire gcloud auth login senza specificare il percorso del file di configurazione ogni volta.

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

    Sostituisci quanto segue:

    • WORKFORCE_POOL_ID: l'ID pool di forza lavoro
    • PROVIDER_ID: l'ID fornitore
    • LOGIN_CONFIG_FILE_PATH: il percorso di un file di configurazione che specifichi, ad esempio login.json

    Il file contiene gli endpoint utilizzati da gcloud CLI per attivare il flusso di autenticazione basato su browser e impostare il pubblico sul provider di identità configurato nel provider del pool di identità della forza lavoro. Il file non contiene informazioni riservate.

    L'output è simile al seguente:

    {
      "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"
    }

    Per impedire a gcloud auth login di utilizzare automaticamente questo file di configurazione, puoi annullarne l'impostazione eseguendo gcloud config unset auth/login_config_file.

    Per eseguire l'autenticazione utilizzando l'autenticazione di accesso basata sul browser, puoi utilizzare uno dei seguenti metodi:

    • Se hai utilizzato il flag --activate quando hai creato il file di configurazione o se hai attivato il file di configurazione con gcloud config set auth/login_config_file, gcloud CLI utilizza automaticamente il file di configurazione:

      gcloud auth login
    • Per accedere specificando la posizione del file di configurazione, esegui il seguente comando:

      gcloud auth login --login-config=LOGIN_CONFIG_FILE_PATH
    • Per utilizzare una variabile di ambiente per specificare la posizione del file di configurazione, imposta CLOUDSDK_AUTH_LOGIN_CONFIG_FILE sul percorso di configurazione.

    Per interrompere l'utilizzo del file di configurazione dell'accesso:

    • Se hai utilizzato il flag --activate quando hai creato il file di configurazione o se hai attivato il file di configurazione con gcloud config set auth/login_config_file, devi eseguire il seguente comando per annullarne l'impostazione:

      gcloud config unset auth/login_config_file
    • Cancella la variabile di ambiente CLOUDSDK_AUTH_LOGIN_CONFIG_FILE, se è impostata.

    Accesso headless gcloud CLI

    Per accedere a PingOne AIC con gcloud CLI utilizzando il protocollo SAML, segui questi passaggi:

    1. Accedi a un utente all'applicazione PingOne AIC e ottieni la risposta SAML.
    2. Salva la risposta SAML restituita da PingOne AIC in una posizione sicura sulla tua macchina locale. Archivia il percorso in una variabile di ambiente, ad esempio SAML_ASSERTION_PATH=/tmp/saml_assertion.xml.
    3. Genera un file di configurazione:

      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
      

      Sostituisci quanto segue:

      • SAML_ASSERTION_PATH: il percorso del file di asserzione SAML.
      • PROJECT_ID: l'ID progetto
    4. Il file di configurazione generato è simile al seguente:

      {
        "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. Per accedere a gcloud CLI utilizzando lo scambio di token, esegui questo comando:

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

      gcloud quindi scambia in modo trasparente le tue credenziali PingOne AIC con token di accesso temporanei, consentendoti di effettuare altre chiamate gclouda Google Cloud. Google Cloud L'output è simile al seguente:

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

    6. Per elencare gli account con credenziali e l'account attivo, esegui questo comando:

      gcloud auth list
      

    Controlla l'accesso

    Puoi accedere ai servizi Google Cloud che supportano la federazione delle identità per la forza lavoro a cui ti è stato concesso l'accesso. In precedenza in questa guida, hai concesso il ruolo Amministratore spazio di archiviazione a tutte le identità all'interno di un reparto o gruppo specifico per il progetto TEST_PROJECT_ID. Puoi verificare di avere accesso elencando i bucket Cloud Storage.

    accesso (federato) alla console

    Per verificare l'accesso nella console (federata):

    1. Vai alla pagina Cloud Storage.
    2. Verifica di poter visualizzare l'elenco dei bucket esistenti per il progetto TEST_PROJECT_ID.

    gcloud CLI

    Per elencare i bucket e gli oggetti Cloud Storage per il progetto a cui hai accesso, esegui questo comando:

    gcloud alpha storage ls --project="TEST_PROJECT_ID"
    

    L'entità deve disporre dell'autorizzazione serviceusage.services.use per il progetto impostato nella sessione gcloud CLI: PROJECT_ID.

    Passaggi successivi