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 aGoogle Cloud. Dopo aver configurato l'IdP PingFederate, gli utenti federati possono accedere Google Cloud ai servizi che supportano la federazione delle identità della forza lavoro utilizzando il protocollo SAML 2.0.

Prima di iniziare

  1. Assicurati di configurare 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, esegui le seguenti operazioni in PingFederate:

    1. Imposta l'ID entità SAML 2.0 del tuo IdP PingFederate. Per maggiori dettagli, vedi Specificare le informazioni sulla federazione.
    2. Crea una connessione SP SAML 2.0, consulta Scelta di un tipo di connessione SP e procedi nel seguente modo:

      1. In Connection Type (Tipo di connessione), seleziona Browser SSO Profiles (Profili SSO del browser) e SAML 2.0 protocol (Protocollo SAML 2.0).
      2. In Importa metadati, seleziona Nessuno.
    3. In Informazioni generali, imposta 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 avviata da SP. Se prevedi di utilizzare anche il servizio Single Sign-On (SSO) avviato dall'IdP, puoi anche attivarlo.

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

    6. In Attribute Contract Fulfillment (Adempimento del contratto di attributi), assicurati che SAML_SUBJECT sia mappato a un campo con un valore univoco per ogni utente. Ad esempio, un indirizzo email è in genere univoco per ogni utente, non cambia e viene spesso utilizzato per fare riferimento a un utente specifico nelle norme di gestione dell'accesso. Google Cloud

    7. Per configurare l'accesso alla console (federato), in Assertion Consumer Service URL (URL Assertion Consumer Service), aggiungi il seguente URL 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 fornitore di forza lavoro che crei in un secondo momento.
    8. Imposta Binding per questo endpoint su POST.

    9. Per attivare l'accesso alla console (federato), in Allowable SAML Bindings (Associazioni SAML consentite), seleziona Redirect (Reindirizzamento).

    10. Per Signature Policy (Policy di firma), seleziona Sign Response As Required (Firma la risposta come richiesto).

    11. Salva e attiva la connessione.

    Utilizzare gli attributi

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

    Utilizza i contratti degli 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 dell'accesso. Per saperne di più sui contratti di attributi, consulta la sezione Contratti di attributi nella documentazione del server PingFederate.

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

    Contratto di attribuzione Valore
    email email
    firstName name.given
    groups memberOfGroupIDs

    Crea 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 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 2.0

    1. Per configurare l'applicazione SAML:

      gcloud

      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 da 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 dell'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 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 , procedi nel seguente modo:

      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. In IDP metadata file (XML) (File di metadati IDP (XML)), seleziona il file XML di metadati da PingFederate.
        3. 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]
          
      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 PingFederate.

    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 Identificatori delle entità della forza lavoro per le policy di autorizzazione.

    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 alla console (federato)

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

    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 PingFederate.

    Accesso basato sul browser di gcloud CLI

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

    Esegui questo comando per creare un file di configurazione di accesso:

    Linux e macOS

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

    Windows (PowerShell)

    gcloud iam workforce-pools create-login-config `
        locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_ID `
        --output-file=LOGIN_CONFIG_PATH

    Sostituisci quanto segue:

    • WORKFORCE_POOL_ID: l'ID del pool di Federazione delle identità della forza lavoro.
    • WORKFORCE_PROVIDER_ID: l'ID del provider di Federazione delle identità della forza lavoro.
    • LOGIN_CONFIG_PATH: il percorso in cui scrivere il file di configurazione di accesso. Ad esempio, login-config.json.

    Il file di configurazione dell'accesso contiene gli endpoint utilizzati da gcloud CLI per attivare 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.

    Il contenuto del file di configurazione di accesso è simile al seguente:

    {
      "universe_domain": "googleapis.com",
      "universe_cloud_web_domain": "cloud.google",
      "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"
    }

    Indica il file di configurazione di accesso con una variabile di ambiente, una proprietà nella configurazione gcloud CLI attiva oppure utilizzalo direttamente con il comando gcloud auth login:

    Variabile di ambiente

    Per utilizzare il file di configurazione dell'accesso con una variabile di ambiente, completa le seguenti istruzioni:

    1. Imposta la variabile di ambiente CLOUDSDK_AUTH_LOGIN_CONFIG_FILE sul percorso del file di configurazione di accesso.
    2. Esegui questo comando:

      gcloud auth login
    3. gcloud CLI fa riferimento alla variabile di ambiente per trovare il file di configurazione di accesso, quindi avvia il processo di autenticazione. Segui il flusso basato sul browser per autenticare e autorizzare gcloud CLI ad accedere alle risorse per tuo conto per i comandi futuri.

    Per interrompere l'utilizzo del file di configurazione di accesso per i comandi gcloud auth login, cancella la variabile di ambiente CLOUDSDK_AUTH_LOGIN_CONFIG_FILE.

    Configurazione di gcloud CLI

    Per utilizzare il file di configurazione dell'accesso con una proprietà di configurazione gcloud CLI, completa le seguenti istruzioni:

    1. Imposta la proprietà auth/login_config_file della configurazione gcloud CLI attiva sul percorso del file di configurazione di accesso con il seguente comando:

      gcloud config set auth/login_config_file LOGIN_CONFIG_PATH
    2. Esegui questo comando:

      gcloud auth login
    3. gcloud CLI fa riferimento alla proprietà di configurazione per trovare il file di configurazione di accesso e poi avvia il processo di autenticazione. Segui il flusso basato sul browser per autenticare e autorizzare gcloud CLI ad accedere alle risorse per tuo conto per i comandi futuri.

    Per interrompere l'utilizzo del file di configurazione di accesso per i comandi gcloud auth login, annulla l'impostazione della proprietà con il seguente comando:

    gcloud config unset auth/login_config_file

    gcloud auth login

    Per utilizzare il file di configurazione di accesso direttamente con il comando gcloud auth login, segui queste istruzioni:

    • Se hai utilizzato il flag --activate durante la creazione del file di configurazione di accesso, esegui questo comando:

      gcloud auth login
    • Se non hai utilizzato il flag --activate durante la creazione del file di configurazione di accesso, esegui il seguente comando:

      Linux e macOS

      gcloud auth login \
          --login-config=LOGIN_CONFIG_PATH

      Windows (PowerShell)

      gcloud auth login `
          --login-config=LOGIN_CONFIG_PATH

      Sostituisci LOGIN_CONFIG_PATH con il percorso del file di configurazione di accesso.

    Il comando gcloud auth login memorizza le credenziali di accesso nella tua home directory. L'entità autenticata diventa l'entità attiva nella configurazione dell'interfaccia allagcloud CLId attiva. Se non vengono sostituite, gcloud CLI utilizza queste credenziali archiviate per accedere a Google Cloud.

    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 ottieni 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 questo comando:

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

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

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

    Per verificare l'accesso nella console (federato):

    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