Configura la federazione delle identità per la forza lavoro con PingFederate

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

Prima di iniziare

  1. Assicurati di aver configurato un' Google Cloud organizzazione.
  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. Per configurare un'applicazione PingFederate che utilizza il protocollo SAML 2.0, procedi nel seguente modo in PingFederate:

    1. Imposta l'ID entità SAML 2.0 del tuo IdP PingFederate. Per maggiori dettagli, consulta la sezione Specifica delle informazioni sulla federazione.
    2. Crea una connessione SP SAML 2.0, consulta la sezione Scelta di un tipo di connessione SP ed esegui le seguenti operazioni:

      1. In Tipo di connessione, seleziona Profili SSO del browser e Protocollo SAML 2.0.
      2. In Importa metadati, seleziona Nessuno.
    3. In Informazioni generali, imposta l'ID entità del partner (ID connessione) su:

      https://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_ID
      
    4. In Profili SAML, attiva SSO avviato da SP. Se prevedi di utilizzare anche il servizio Single Sign-On (SSO) avviato dall'IdP, puoi anche attivarlo.

    5. In Contratto attributi, definisci gli attributi personalizzati (ad esempio email e gruppi) da passare nell'asserzione. Questi attributi possono essere utilizzati in Google Cloud per creare policy di gestione degli accessi in un secondo momento.

    6. In Completamento del contratto attributi, assicurati che SAML_SUBJECT sia mappato a un campo con un valore univoco per ogni utente. Ad esempio, in genere un indirizzo email è univoco per ogni utente, non cambia e viene spesso utilizzato per fare riferimento a un utente specifico nelle Google Cloud policy di gestione degli accessi.

    7. Per configurare l'accesso alla console (federata), in Assertion Consumer Service URL, aggiungi il seguente URL dell'endpoint:

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

      Sostituisci quanto segue:

      • WORKFORCE_POOL_ID: l'ID del pool di forza lavoro che hai creato in precedenza.
      • WORKFORCE_PROVIDER_ID: l'ID del provider di forza lavoro che creerai in un secondo momento.
    8. Imposta Binding per questo endpoint su POST.

    9. Per attivare l'accesso alla console (federata), in Binding SAML consentiti, seleziona Reindirizza.

    10. In Policy di firma, seleziona Firma la risposta come obbligatoria.

    11. Salva e attiva la connessione.

    Utilizzare gli attributi

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

    Utilizza i contratti attributi per specificare gli attributi personalizzati nelle asserzioni SAML generate. Dopo aver configurato gli attributi, puoi utilizzarli in Google Cloud per creare policy di gestione degli accessi. Per saperne di più sui contratti attributi, consulta la sezione Contratti attributi nella documentazione del server PingFederate.

    Ad esempio, in questa guida utilizziamo PingOne come datastore per PingFederate e mappiamo i contratti attributi email, firstName e groups utilizzando gli attributi utente del datastore PingOne, come segue:

    Contratto attributi Valore
    email email
    firstName name.given
    groups memberOfGroupIDs

    Creare il provider del pool di identità per la forza lavoro PingFederate

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

    Creare un provider del pool di identità per la forza lavoro SAML 2.0

    1. Per configurare l'applicazione SAML:

      gcloud

      Per creare il provider del pool di identità per la forza lavoro SAML, esegui il comando seguente:

      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 provider.
      • WORKFORCE_POOL_ID: l'ID del pool di identità per la forza lavoro.
      • DISPLAY_NAME: un nome visualizzato.
      • DESCRIPTION: una descrizione.
      • XML_METADATA_PATH: il percorso del file di metadati in formato XML di PingFederate.
      • 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 attributo facoltativa; ad esempio, per limitare l'attributo ipaddr a un determinato intervallo IP, imposta la condizione su assertion.ipaddr.startsWith('98.11.12.').

      Questo comando assegna gli attributi subject, groups e department nell'asserzione SAML agli attributi google.subject, google.groups e attribute.department, rispettivamente. La condizione 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 Google Cloud console:

      1. Nella Google Cloud console, 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 Provider, fai clic su Aggiungi provider.
      4. Nell'elenco Seleziona un fornitore di provider, seleziona Provider di identità generico.
      5. In Seleziona un protocollo di autenticazione, seleziona SAML.
      6. Nella sezione Crea un provider, segui questi passaggi:
        1. In Nome, inserisci un nome per il provider.
        2. In File di metadati IDP (XML), seleziona il file XML di metadati di PingFederate.
        3. Fai clic su Continua.
      7. Nella sezione Condividi le informazioni del provider, fai clic su Continua.
      8. Nella sezione Configura provider, segui questi passaggi:

        1. In Mappatura 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]
          
      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 provider, fai clic su Invia.

    Gestire l'accesso alle Google Cloud risorse

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

    Il progetto di esempio utilizzato in questa guida può essere diverso dal progetto 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 la sezione Rappresentare gli utenti del pool di identità per la 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 il comando seguente:

    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à per la forza lavoro.
    • DEPARTMENT_VALUE: il valore attribute.department mappato.

    Utilizzare i gruppi mappati

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

    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à per la forza lavoro.
    • GROUP_ID: un gruppo nella rivendicazione google.groups mappata.

    Accedere e testare l'accesso

    In questa sezione, accedi come utente del pool di identità per la forza lavoro e testi l'accesso.

    Accedere

    Accesso alla console (federata)

    Per accedere alla console della federazione delle identità per la forza lavoro Google Cloud , nota anche come console (federata):

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

      Vai alla console (federata)

    2. Inserisci il nome del provider, formattato come segue:
      locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_ID
    3. Inserisci le tue credenziali PingFederate quando richiesto.

    Accesso basato su browser gcloud CLI

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

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

    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 del pool di forza lavoro
    • PROVIDER_ID: l'ID provider
    • 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 abilitare il flusso di autenticazione basato su browser e impostare il pubblico sull' IdP configurato nel provider del pool di identità per la 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 su 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 comando seguente:

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

    Per interrompere l'utilizzo del file di configurazione di 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 comando seguente 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 PingFederate con gcloud CLI utilizzando il protocollo SAML:

    1. Accedi a un utente alla tua app PingFederate e recupera la risposta SAML.
    2. Salva la risposta SAML restituita da PingFederate in una posizione sicura sulla tua macchina locale. Archivia il percorso in una variabile di ambiente, ad esempio: SAML_ASSERTION_PATH=/path/to/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 il comando seguente:

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

      gcloud scambia in modo trasparente le tue credenziali PingFederate con token di accesso temporanei Google Cloud , consentendoti di effettuare altre chiamate gcloud a 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 il comando seguente:

      gcloud auth list
      

    Controllare l'accesso

    Hai accesso ai Google Cloud servizi che supportano la federazione delle identità per la forza lavoro e a cui ti è stato concesso l'accesso. In precedenza in questa guida, hai concesso il ruolo Amministratore Storage 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 alla console (federata)

    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 il comando seguente:

    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