Questa pagina mostra come configurare Identity-Aware Proxy (IAP) per utilizzare Workforce Identity Federation.
Quando configuri la federazione delle identità della forza lavoro con IAP, puoi utilizzare un provider di identità (IdP) esterno per autenticare e autorizzare una forza lavoro, ovvero un gruppo di utenti come dipendenti, partner e appaltatori, utilizzando Identity and Access Management (IAM), in modo che gli utenti possano accedere in sicurezza ai servizi di Google Cloud o on-premise.
La configurazione di IAP con la federazione delle identità per la forza lavoro ti consente di svolgere quanto segue in merito alle applicazioni protette da IAP:
- Reindirizza un utente finale a un provider di identità esterno, come Okta, per accedere.
- Configura una sessione di accesso compresa tra 15 minuti e 12 ore.
- Consenti solo a utenti finali o insiemi di utenti finali specifici in un provider di identità di accedere alla tua applicazione.
- Specifica il contesto in cui un utente finale può accedere a un'applicazione. Ad esempio, consenti l'accesso solo in un determinato momento della giornata.
Puoi utilizzare IAP con la federazione delle identità per la forza lavoro su tutte le risorse esistenti e i bilanciatori del carico 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:
- Configura un provider e un pool di forza lavoro.
- Crea un ID client OAuth e un segreto OAuth.
- Abilita IAP e configuralo per utilizzare la federazione delle identità della forza lavoro.
Configura un provider e un pool di forza lavoro
Per configurare un pool e un provider della forza lavoro, segui le istruzioni riportate in Federazione delle identità della forza lavoro e, quando imposti la durata della sessione, consulta Gestire le sessioni IAP con la federazione delle identità della forza lavoro.
Se vuoi mappare un indirizzo email da un provider di identità di terze parti a Google Cloud,
devi aggiungere una mappatura degli attributi nel tuo 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 e un segreto OAuth in un progetto della stessa organizzazione del pool di forza lavoro che utilizzerai per questa configurazione. Il progetto non deve essere necessariamente lo stesso in cui si trova la risorsa protetta da IAP. Quando crei l'ID client OAuth e il segreto OAuth, segui questi passaggi:
Utilizza un segnaposto per l'URI di reindirizzamento quando crei l'ID client. Dopo aver creato l'ID client, esegui
describe
un client OAuth per ottenereclientID
generato.Una volta ottenuto
clientID
, eseguiupdate
un client OAuth per aggiornareallowed-redirect-uris
come segue:https://iap.googleapis.com/v1/oauth/clientIds/$CLIENT_ID:handleRedirect
.dove
CLIENT_ID
è il valoreclientID
recuperato nel passaggio precedente.Dopo aver creato il client secret, esegui
describe
le credenziali di un client OAuth per ottenere il valoreclientSecret
generato.
Salva
clientId
eclientSecret
perché ti serviranno nei passaggi successivi.
Abilita IAP per utilizzare la federazione delle identità della forza lavoro
console
- Nella console Google Cloud, apri la pagina IAP.
Vai alla pagina IAP - Seleziona un progetto. Il progetto deve trovarsi nella stessa organizzazione del pool di risorse che hai creato in precedenza. Il progetto non deve essere necessariamente quello in cui hai creato l'ID client OAuth e il segreto OAuth.
- Fai clic sulla scheda Applicazioni e individua l'applicazione a cui vuoi limitare l'accesso utilizzando IAP.
- Nella colonna IAP, imposta l'opzione su 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, } } EOF
Abilita 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
.
Aggiorna le impostazioni IAP
Per configurare l'IAP in modo che utilizzi la federazione delle identità per la forza lavoro, devi configurare le seguenti impostazioni:
WorkforceIdentitySettings
: l'ID client e il secret OAuth 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" EOF
Esegui il seguente comando per aggiornare le impostazioni IAP per la tua risorsa.
gcloud iap settings set iap_settings.yaml --project=PROJECT --resource-type=RESOURCE_TYPE --service=SERVICE
Sostituisci quanto segue:
- PROJECT: l'ID progetto.
- RESOURCE_TYPE: il tipo di risorsa IAP. Il
tipo di risorsa deve essere
app-engine
,iap_web
,compute
,organization
ofolder
. - SERVICE: il nome del servizio. Questa opzione è facoltativa sia per
app-engine
sia percompute
.
Per informazioni dettagliate sul comando, consulta gcloud iap settings set.
API
Utilizzando il seguente esempio come riferimento, crea un file
iap_settings.json
settings.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", } } } } EOF
Utilizza gcloud CLI per ottenere il nome della risorsa, quindi copia
RESOURCE_NAME
dall'output perché ti servirà nel passaggio successivo.gcloud iap settings get \ --project=PROJECT \ --resource-type=RESOURCE_TYPE \ --service=SERVICE
Sostituisci quanto segue:
- PROJECT: l'ID progetto.
- RESOURCE_TYPE: il tipo di risorsa IAP. Il
tipo di risorsa deve essere
app-engine
,iap_web
,compute
,organization
ofolder
. - SERVICE: il nome del servizio. Questa opzione è facoltativa sia per
app-engine
sia percompute
.
Sostituisci
RESOURCE_NAME
nel comando seguente conRESOURCE_NAME
del 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"
Concedi l'accesso alle risorse protette con IAP
Per accedere a una risorsa protetta da IAP, gli utenti finali devono disporre del ruolo Utente applicazione web con protezione IAP per la risorsa. Puoi concedere il ruolo Utente applicazione web con protezione IAP a un singolo utente (entità) o a un insieme di utenti (insieme di entità, che si mappa 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
- Nella console Google Cloud, apri la pagina IAP.
Vai alla pagina IAP - Seleziona la risorsa che vuoi proteggere con IAP.
- Fai clic su Aggiungi entità e poi aggiungi gli identificatori dell'entità dei gruppi o delle persone a cui vuoi concedere un ruolo IAM per la risorsa.
- In Assegna ruoli, seleziona Utente applicazione web con protezione 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 principali.
- PROJECT_ID: l'ID progetto.
- RESOURCE_TYPE: il tipo di risorsa IAP, che può essere
app-engine
obackend-services
. - SERVICE: (facoltativo) il nome del servizio.
- CONDITION: (Facoltativo) 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é interessa l'intero criterio IAM di una risorsa. Un errore potrebbe rimuovere il criterio da una risorsa.
Ottieni le associazioni dei 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.json
Sostituisci RESOURCE_NAME con il valore RESOURCE_NAME ottenuto in un passaggio precedente.
Al file
iam_policy_bindings.json
ottenuto dal passaggio precedente, rimuovi le righe version ed etag e aggiungi la associazione che vuoi aggiungere per l'identificatore principale. Per ulteriori informazioni, consulta 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 dei 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 il valore RESOURCE_NAME ottenuto in un passaggio precedente.
Per ulteriori informazioni, consulta GetIamPolicy e SetIamPolicy.
(Facoltativo) Configurare l'accesso sensibile al contesto
Se vuoi, puoi configurare regole di accesso sensibili 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 si utilizza la federazione delle identità della forza lavoro. Puoi comunque utilizzare i livelli di accesso basati sul contesto della richiesta con condizioni sull'indirizzo IP, sulla data e sull'ora.
Limitazioni quando si utilizzano i pool di forza lavoro
- Per ogni applicazione compatibile con IAP, è possibile configurare un solo pool di personale, che può contenere un solo fornitore.
- Il pool di forza lavoro, l'ID client e il client secret OAuth e le applicazioni compatibili con IAP devono trovarsi tutti nella stessa organizzazione.
- I livelli di accesso per le informazioni relative al dispositivo non sono supportati.
- Sono supportate solo le seguenti configurazioni delle impostazioni IAP:
- L'accesso programmatico con la federazione delle identità per la forza lavoro non è supportato.