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
- Assicurati di aver configurato un' Google Cloud organizzazione.
-
Installa Google Cloud CLI. Dopo l'installazione, inizializza Google Cloud CLI eseguendo il comando seguente:
gcloud initSe utilizzi un provider di identità (IdP) esterno, devi prima accedere a gcloud CLI con la tua identità federata.
Per configurare un'applicazione PingFederate che utilizza il protocollo SAML 2.0, procedi nel seguente modo in PingFederate:
- Imposta l'ID entità SAML 2.0 del tuo IdP PingFederate. Per maggiori dettagli, consulta la sezione Specifica delle informazioni sulla federazione.
Crea una connessione SP SAML 2.0, consulta la sezione Scelta di un tipo di connessione SP ed esegui le seguenti operazioni:
- In Tipo di connessione, seleziona Profili SSO del browser e Protocollo SAML 2.0.
- In Importa metadati, seleziona Nessuno.
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_IDIn Profili SAML, attiva SSO avviato da SP. Se prevedi di utilizzare anche il servizio Single Sign-On (SSO) avviato dall'IdP, puoi anche attivarlo.
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.
In Completamento del contratto attributi, assicurati che
SAML_SUBJECTsia 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.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_IDSostituisci 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.
Imposta Binding per questo endpoint su POST.
Per attivare l'accesso alla console (federata), in Binding SAML consentiti, seleziona Reindirizza.
In Policy di firma, seleziona Firma la risposta come obbligatoria.
Salva e attiva la connessione.
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=globalSostituisci 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'attributoipaddra un determinato intervallo IP, imposta la condizione suassertion.ipaddr.startsWith('98.11.12.').
Questo comando assegna gli attributi
subject,groupsedepartmentnell'asserzione SAML agli attributigoogle.subject,google.groupseattribute.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:
- Nella Google Cloud console, vai alla pagina Pool di identità per la forza lavoro: Vai a Pool di identità per la forza lavoro
- Nella tabella Pool di identità per la forza lavoro, seleziona il pool per cui vuoi creare il provider.
- Nella sezione Provider, fai clic su Aggiungi provider.
- Nell'elenco Seleziona un fornitore di provider, seleziona Provider di identità generico.
- In Seleziona un protocollo di autenticazione, seleziona SAML.
- Nella sezione Crea un provider, segui questi passaggi:
- In Nome, inserisci un nome per il provider.
- In File di metadati IDP (XML), seleziona il file XML di metadati di PingFederate.
- Fai clic su Continua.
- Nella sezione Condividi le informazioni del provider, fai clic su Continua.
Nella sezione Configura provider, segui questi passaggi:
- In Mappatura attributi, inserisci un'espressione CEL per
google.subject(ad esempio,assertion.subject). (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]
- In Mappatura attributi, inserisci un'espressione CEL per
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.
Per creare il provider, fai clic su Invia.
TEST_PROJECT_ID: l'ID progetto.WORKFORCE_POOL_ID: l'ID del pool di identità per la forza lavoro.DEPARTMENT_VALUE: il valoreattribute.departmentmappato.TEST_PROJECT_ID: l'ID progetto.WORKFORCE_POOL_ID: l'ID del pool di identità per la forza lavoro.GROUP_ID: un gruppo nella rivendicazionegoogle.groupsmappata.-
Vai alla pagina di accesso alla console (federata).
-
Inserisci il nome del provider, formattato come segue:
locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_ID
Inserisci le tue credenziali PingFederate quando richiesto. WORKFORCE_POOL_ID: l'ID del pool di forza lavoroPROVIDER_ID: l'ID providerLOGIN_CONFIG_FILE_PATH: il percorso di un file di configurazione che specifichi, ad esempiologin.json-
Se hai utilizzato il flag
--activatequando hai creato il file di configurazione o se hai attivato il file di configurazione congcloud 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_FILEsul percorso di configurazione. -
Se hai utilizzato il flag
--activatequando hai creato il file di configurazione o se hai attivato il file di configurazione congcloud 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. - Accedi a un utente alla tua app PingFederate e recupera la risposta SAML.
- 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. 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.jsonSostituisci quanto segue:
SAML_ASSERTION_PATH: il percorso del file di asserzione SAML.PROJECT_ID: l'ID progetto.
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" }Per accedere a gcloud CLI utilizzando lo scambio di token, esegui il comando seguente:
gcloud auth login --cred-file=config.jsongcloudscambia in modo trasparente le tue credenziali PingFederate con token di accesso temporanei Google Cloud , consentendoti di effettuare altre chiamategclouda 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].Per elencare gli account con credenziali e l'account attivo, esegui il comando seguente:
gcloud auth list- Vai alla pagina Cloud Storage.
- Verifica di poter visualizzare l'elenco dei bucket esistenti per il progetto
TEST_PROJECT_ID.
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
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:
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:
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):
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:
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:
Per interrompere l'utilizzo del file di configurazione di accesso:
Accesso headless gcloud CLI
Per accedere a PingFederate con gcloud CLI utilizzando il protocollo SAML:
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):
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.