Questa pagina mostra come configurare Identity-Aware Proxy (IAP) per utilizzare Federazione delle identità per la forza lavoro.
Quando configuri la federazione delle identità per la forza lavoro con IAP, utilizzare un provider di identità (IdP) esterno per autenticare e autorizzare un forza lavoro, ovvero un gruppo di utenti, ad esempio dipendenti, partner e contrattisti, che utilizza Identity and Access Management (IAM), per consentire agli utenti di accedere in sicurezza ai servizi di cui è stato eseguito il deployment Google Cloud oppure on-premise.
Configurare IAP con la federazione delle identità per la forza lavoro consente di farlo quanto segue in merito alle tue applicazioni protette da IAP:
- Reindirizza un utente finale a un IdP esterno, come Okta, per accedere.
- Configura una sessione di accesso di durata compresa tra 15 minuti e 12 ore.
- Consenti solo a determinati utenti finali o insiemi di utenti finali in un IdP di accedere al tuo un'applicazione.
- Specifica il contesto in cui un utente finale può accedere a un'applicazione. Per Ad esempio, consenti l'accesso solo durante un'ora specifica del giorno.
Puoi utilizzare IAP con la federazione delle identità per la forza lavoro su tutti le risorse esistenti e i bilanciatori del carico supportati da IAP.
configura 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 e un secret OAuth.
- Abilita IAP e configuralo per utilizzare la federazione delle identità per la forza lavoro.
Configura un provider e un pool di forza lavoro
Per configurare un provider e un pool di forza lavoro, segui le istruzioni in Federazione delle identità per la forza lavoro e quando Quando imposti la durata della sessione, consulta Gestire IAP con le sessioni della federazione delle identità per la forza lavoro.
Se vuoi mappare un indirizzo email di un IdP di terze parti a Google Cloud,
devi aggiungere una mappatura degli attributi nel provider del pool di forza lavoro per google.email
.
Esempio: google.email=assertion.email
.
Crea un ID client e un secret OAuth
Segui le istruzioni per creare un ID client e un secret OAuth. all'interno di un progetto nella stessa organizzazione del pool di forza lavoro a cui per questa configurazione. Il progetto non deve essere necessariamente uguale progetto in cui si trova la risorsa protetta da IAP. Durante la creazione l'ID client e il secret OAuth:
Utilizza un segnaposto per l'URI di reindirizzamento durante la creazione dell'ID client. Dopo il giorno crei l'ID client, esegui
describe
un client OAuth per ottenere il valoreclientID
generato.Quando hai l'
clientID
, eseguiupdate
un client OAuth per aggiornareallowed-redirect-uris
in questo modo:https://iap.googleapis.com/v1/oauth/clientIds/$CLIENT_ID:handleRedirect
,Dove
CLIENT_ID
corrisponde al valoreclientID
recuperato nel passaggio precedente.Dopo aver creato il client secret, esegui
describe
un client OAuth. credenziali per ottenere il valoreclientSecret
generato.
Salva
clientId
eclientSecret
perché ti serviranno in un secondo momento passaggi.
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 che hai creato in precedenza. Il progetto non deve essere necessariamente progetto in cui hai creato il secret e l'ID client OAuth.
- Fai clic sulla scheda Applications (Applicazioni) e individua l'applicazione che vuoi limitare l'accesso all'uso di 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 attivare 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 IAP per l'utilizzo della federazione delle identità per la forza lavoro, devi configurare le seguenti impostazioni:
WorkforceIdentitySettings
: ID client OAuth e secret creati in precedenza.IdentitySources
: l'origine identità.
Per ulteriori informazioni, consulta le API IAP.
gcloud
Utilizzando il seguente esempio come riferimento, crea un elemento
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 questo 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 maggiori dettagli sul comando, consulta gcloud iap settings set.
API
Utilizzando il seguente esempio come riferimento, crea un elemento
iap_settings.json
del file di impostazioni.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 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 per
app-engine
ecompute
.
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 Utente applicazione web con protezione IAP ruolo predefinito per la risorsa. Puoi concedere il ruolo Utente applicazione web con protezione IAP a un singolo utente (entità) o un insieme di utenti (insieme di entità, mappato 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à, quindi aggiungi identificatori di entità dei gruppi o degli individui a cui desideri concedere 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: il identificatori entità.
- 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 è riportata una condizione di esempio 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'intera rete criterio IAM di una risorsa. Un errore potrebbe rimuovere il criterio da una risorsa.
Recupera 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.json
Sostituisci RESOURCE_NAME con RESOURCE_NAME ottenuti in un nel passaggio precedente.
Al file
iam_policy_bindings.json
ottenuto dalla precedente passaggio, rimuovi la versione e le righe di tag e aggiungi l'associazione che vuoi da aggiungere per l'identificatore entità. 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 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 il valore RESOURCE_NAME ottenuto in un passaggio precedente.
Vedi GetIamPolicy e Per saperne di più, consulta SetIamPolicy.
(Facoltativo) Configurare l'accesso sensibile al contesto
Facoltativamente, puoi configurare regole di accesso sensibile al contesto per l'autorizzazione avanzata.
Per impostare i livelli di accesso, vedi Creazione e applicazione dei 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 l'accesso basato sul contesto della richiesta livelli con condizioni relative all'indirizzo IP, all'ora e alla data.
Limitazioni quando si lavora con i pool di forza lavoro
- Per ogni applicazione abilitata per IAP, può essere configurato un solo pool di forza lavoro e il pool di forza lavoro può contenere un solo provider.
- Pool di forza lavoro, ID client e secret OAuth e Le applicazioni abilitate per IAP devono trovarsi tutte 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.