Questa pagina mostra come configurare Identity-Aware Proxy (IAP) per utilizzare la federazione delle identità per la forza lavoro.
Quando configuri la federazione delle identità per la forza lavoro con IAP, puoi utilizzare un provider di identità (IdP) esterno per autenticare e autorizzare una forza lavoro (un gruppo di utenti, come dipendenti, partner e collaboratori) utilizzando Identity and Access Management (IAM), in modo che gli utenti possano accedere in modo sicuro ai servizi di cui è stato eseguito il deployment on-premise o su Google Cloud.Google Cloud
La configurazione di IAP con la federazione delle identità per la forza lavoro ti consente di eseguire le seguenti operazioni per le applicazioni protette da IAP:
- Reindirizzare un utente finale a un IdP esterno, come Okta, per accedere.
- Configurare una sessione di accesso tra 15 minuti e 12 ore.
- Consentire l'accesso all'applicazione solo a utenti finali o set di utenti finali specifici in un IdP.
- Specificare il contesto in cui un utente finale può accedere a un'applicazione. Ad esempio, consentire l'accesso solo durante un'ora specifica del giorno.
Puoi utilizzare IAP con la federazione delle identità per la forza lavoro su tutte le risorse e i bilanciatori del carico esistenti supportati da IAP.
Configurare IAP con la federazione delle identità per la forza lavoro per un'applicazione
La configurazione di IAP con la federazione delle identità per la forza lavoro comprende le seguenti attività principali:
- Configurare un provider e un pool di forza lavoro.
- Creare un ID client OAuth e un client secret.
- Abilitare IAP e configurarlo per utilizzare la federazione delle identità per la forza lavoro.
Configurare un provider e un pool di forza lavoro
Per configurare un provider e un pool di forza lavoro, segui le istruzioni per uno dei seguenti provider:
Quando imposti la durata della sessione, consulta Gestire le sessioni IAP con la federazione delle identità per la forza lavoro.
Se vuoi mappare un indirizzo email da un IdP di terze parti a Google Cloud,
devi aggiungere un mapping degli attributi nel provider del pool di forza lavoro per google.email.
Esempio: google.email=assertion.email.
Creare un ID client OAuth e un client secret
Segui le istruzioni per creare un ID client OAuth e un client secret in un progetto nella stessa organizzazione del pool di forza lavoro che utilizzerai per questa configurazione. Il progetto non deve essere lo stesso in cui si trova la risorsa protetta da IAP. Quando crei l'ID client OAuth e il client secret:
Utilizza un segnaposto per l'URI di reindirizzamento quando crei l'ID client. Dopo aver creato l'ID client, esegui
describeun client OAuth per ottenere ilclientIDgenerato.Quando hai il
clientID, eseguiupdateun client OAuth per aggiornareallowed-redirect-urisa quanto segue:https://iap.googleapis.com/v1/oauth/clientIds/$CLIENT_ID:handleRedirect.Dove
CLIENT_IDè ilclientIDrecuperato nel passaggio precedente.Dopo aver creato il client secret, esegui
describele credenziali del client OAuth per ottenere ilclientSecretgenerato.
Salva
clientIdeclientSecretperché ti serviranno nei passaggi successivi.
Abilitare IAP per utilizzare la federazione delle identità per la forza lavoro
Per abilitare IAP con la federazione delle identità per la forza lavoro, completa i seguenti passaggi.
Abilitare IAP
Abilita IAP sulla risorsa.
console
- Nellaconsole, apri la pagina IAP. Google Cloud
Vai alla pagina IAP - Seleziona un progetto. Il progetto deve appartenere alla stessa organizzazione del pool di forza lavoro che hai creato in precedenza. Il progetto non deve essere quello in cui hai creato l'ID client OAuth e il client secret.
- Fai clic sulla scheda Applicazioni e individua l'applicazione a cui vuoi limitare l'accesso utilizzando IAP.
- Nella colonna IAP, attiva l'opzione On.
gcloud
Per utilizzare gcloud CLI per abilitare IAP, segui le procedure per il servizio applicabile:
API
Crea un file
settings.json.cat << EOF > settings.json { "iap": { "enabled":true, } } EOFAbilita IAP su App Engine.
curl -X PATCH \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Accept: application/json" \ -H "Content-Type: application/json" \ -d @settings.json \ "https://appengine.googleapis.com/v1/apps/PROJECT_ID?updateMask=iap.enabled"Per abilitare IAP su Compute Engine, utilizza il seguente URL:
https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/REGION/backendServices/BACKEND_SERVICE_NAME?updateMask=iap.enabled.
Aggiornare le impostazioni di IAP
Per configurare IAP in modo che utilizzi la federazione delle identità per la forza lavoro, devi configurare le seguenti impostazioni:
WorkforceIdentitySettings: l'ID client OAuth e il client secret creati in precedenza.IdentitySources: l'origine identità.
Per ulteriori informazioni, consulta le API IAP.
gcloud
Utilizzando il seguente esempio come riferimento, crea un file
iap_settings.yaml.CLIENT_ID=clientId CLIENT_SECRET=clientSecret WORKFORCE_POOL_NAME=locations/global/workforcePools/test-pool cat <<EOF > iap_settings.yaml access_settings: identity_sources: ["WORKFORCE_IDENTITY_FEDERATION"] workforce_identity_settings: workforce_pools: ["$WORKFORCE_POOL_NAME"] oauth2: client_id: "$CLIENT_ID" client_secret: "$CLIENT_SECRET" EOFEsegui il seguente comando per aggiornare le impostazioni di IAP per la risorsa.
gcloud iap settings set iap_settings.yaml --project=PROJECT --resource-type=RESOURCE_TYPE --service=SERVICESostituisci quanto segue:
- PROJECT: l'ID progetto.
RESOURCE_TYPE: il tipo di risorsa IAP. Il tipo di risorsa deve essere
cloud-run(anteprima),app-engine,iap_web,compute,organization, ofolder.Per il tipo di risorsa
cloud-run, utilizza il flag--regionper indicare la regione in cui è stato eseguito il deployment del servizio Cloud Run.SERVICE: il nome del servizio. Questo parametro è facoltativo sia per
app-enginesia percompute.
Per informazioni dettagliate sul comando, consulta gcloud iap settings set.
API
Utilizzando il seguente esempio come riferimento, crea un file di impostazioni
iap_settings.json.CLIENT_ID=clientId CLIENT_SECRET=clientSecret WORKFORCE_POOL_NAME=locations/global/workforcePools/test-pool cat <<EOF > iap_settings.json { "access_settings": { "identity_sources": ["WORKFORCE_IDENTITY_FEDERATION"], "workforce_identity_settings": { "workforce_pools": ["$WORKFORCE_POOL_NAME"], "oauth2": { "client_id": "$CLIENT_ID", "client_secret": "$CLIENT_SECRET", } } } } EOFUtilizza gcloud CLI per ottenere il nome della risorsa, quindi copia
RESOURCE_NAMEdall'output perché ti servirà nel passaggio successivo.gcloud iap settings get \ --project=PROJECT \ --resource-type=RESOURCE_TYPE \ --service=SERVICESostituisci quanto segue:
- PROJECT: l'ID progetto.
- RESOURCE_TYPE: il tipo di risorsa IAP. Il
tipo di risorsa deve essere
appengine,iap_web,compute,organization,folder, ocloud_run-$REGION(anteprima), dove $REGION è la regione in cui è stato eseguito il deployment del servizio Cloud Run. - SERVICE: il nome del servizio. Questo parametro è facoltativo sia per
app-enginesia percompute.
Sostituisci
RESOURCE_NAMEnel seguente comando conRESOURCE_NAMEdel passaggio precedente.curl -X PATCH \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Accept: application/json" \ -H "Content-Type: application/json" \ -d @iap_settings.json \ "https://iap.googleapis.com/v1/RESOURCE_NAME:iapSettings?updateMask=iapSettings.accessSettings.identitySources,iapSettings.accessSettings.workforceIdentitySettings.workforcePools,iapSettings.accessSettings.workforceIdentitySettings.oauth2.clientId,iapSettings.accessSettings.workforceIdentitySettings.oauth2.clientSecret"
Concedere l'accesso alle risorse protette da IAP
Per accedere a una risorsa protetta da IAP, gli utenti finali devono avere il ruolo Utente app web protetta da IAP sulla risorsa. Puoi concedere il ruolo Utente app web protetta da IAP a un singolo utente (entità) o a un insieme di utenti (insieme di entità, che esegue il mapping a un gruppo, a un attributo specifico o a un intero pool di utenti).
L'accesso senza restrizioni alle risorse protette da IAP non è supportato.
console
- Nellaconsole, apri la pagina IAP. Google Cloud
Vai alla pagina IAP - Seleziona la risorsa che vuoi proteggere con IAP.
- Fai clic su Aggiungi entità, quindi aggiungi gli identificatori di entità dei gruppi o delle persone a cui vuoi concedere un ruolo IAM per la risorsa.
- In Assegna ruoli , seleziona Utente app web protetta da IAP.
- Fai clic su Aggiungi.
gcloud
Esegui questo comando.
gcloud iap web add-iam-policy-binding \
--member=PRINCIPAL_IDENTIFIER \
--role='roles/iap.httpsResourceAccessor' \
--project=PROJECT_ID \
--resource-type=RESOURCE_TYPE \
--service=SERVICE \
--condition=CONDITION
Sostituisci quanto segue :
- PRINCIPAL_IDENTIFIER: gli identificatori di entità.
- PROJECT_ID: l'ID progetto.
- RESOURCE_TYPE: il tipo di risorsa IAP, che può
essere
app-engineobackend-services. - SERVICE: (facoltativo) il nome del servizio.
- CONDITION: (facoltativo) le condizioni IAM. Di seguito è riportato un esempio di condizione configurata con i livelli di accesso:
expression="accessPolicies/12345678/accessLevels/iap_test_access_level" in request.auth.access_levels,title=iap-test-access-level,description=only access in weekdays
API
Questo metodo non è consigliato perché riguarda l'intero criterio IAM di una risorsa. Un errore potrebbe rimuovere il criterio da una risorsa.
Ottieni le associazioni di criteri IAM esistenti.
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Accept: application/json" \ -H "Content-Type: application/json" \ -d {} \ "https://iap.googleapis.com/v1/RESOURCE_NAME:getIamPolicy" -o iam_policy_bindings.jsonSostituisci RESOURCE_NAME con RESOURCE_NAME che hai ottenuto in un passaggio precedente.
Nel file
iam_policy_bindings.jsonche hai ottenuto nel passaggio precedente, rimuovi le righe della versione e dell'etag e aggiungi l'associazione che vuoi aggiungere per l'identificatore di entità. Per ulteriori informazioni, consulta la sezione Informazioni sui criteri di autorizzazione.{ "bindings": [ { // existing bindings }, { "role": "roles/iap.httpsResourceAccessor", "members": [ "principal://iam.googleapis.com/locations/global/workforcePools/iap-test-pool/subject/iap-test-subject" ], "condition": { "expression": "\"accessPolicies/12345678/accessLevels/iap_test_access_level\" in request.auth.access_levels", "title": "iap-test-access-level", "description": "only access in week days" } } ] }Aggiorna le associazioni di criteri IAM.
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Accept: application/json" \ -H "Content-Type: application/json" \ -d "{"policy":$(cat iam_policy_bindings.json)}" \ "https://iap.googleapis.com/v1/RESOURCE_NAME:setIamPolicy"Sostituisci RESOURCE_NAME con RESOURCE_NAME che hai ottenuto in un passaggio precedente.
Per ulteriori informazioni, consulta GetIamPolicy e SetIamPolicy.
(Facoltativo) Configurare l'accesso sensibile al contesto
Facoltativamente, puoi configurare le regole di accesso sensibile al contesto per l'autorizzazione avanzata.
Per configurare i livelli di accesso, consulta Creare e applicare i livelli di accesso. I livelli di accesso basati sulle informazioni del dispositivo non sono disponibili quando utilizzi la federazione delle identità per la forza lavoro. Puoi comunque utilizzare i livelli di accesso basati sul contesto della richiesta con condizioni su indirizzo IP, ora e data.
Autenticazione programmatica
IAP supporta l'autenticazione JWT dell'account di servizio per le applicazioni configurate con la federazione delle identità per la forza lavoro. Per istruzioni, consulta Autenticarsi con un JWT di un account di servizio.
Limitazioni quando si utilizzano i pool di forza lavoro
- Per ogni applicazione abilitata a IAP, è possibile configurare un solo pool di forza lavoro e il pool di forza lavoro può contenere un solo provider.
- Il pool di forza lavoro, l'ID client OAuth, il client secret e le applicazioni abilitate a IAP devono appartenere alla stessa organizzazione.
- I livelli di accesso per le informazioni relative al dispositivo non sono supportati.
- Sono supportate solo le seguenti configurazioni delle impostazioni di IAP:
- L'accesso programmatico con la federazione delle identità per la forza lavoro è supportato solo per i service account Google.
Risoluzione dei problemi
Per informazioni sulla risoluzione dei problemi, consulta Risoluzione dei problemi e domande frequenti.