Questo articolo descrive come personalizzare le impostazioni di Identity-Aware Proxy (IAP). Con queste impostazioni, puoi controllare i comportamenti, tra cui:
- Compatibilità con Anthos e Istio su Google Kubernetes Engine.
- Gestione delle richieste preflight CORS.
- Modalità di autenticazione degli utenti.
- La pagina di errore mostrata agli utenti quando l'accesso viene negato.
Gestione delle impostazioni
Puoi visualizzare e aggiornare le impostazioni utilizzando Google Cloud Console, l'API IAP o l'interfaccia a riga di comando di Google Cloud.
Per gestire le impostazioni in IAP:
console
Per visualizzare e modificare le impostazioni utilizzando Google Cloud Console:
- Vai alla pagina Identity Identity Proxy.
Vai alla pagina Identity-Aware Proxy - Individua la risorsa nella scheda Risorse HTTPS.
- Apri il menu Altre azioni
e fai clic su Impostazioni.
- Dopo aver apportato le modifiche, fai clic su Salva.
gcloud
Per ottenere e modificare le impostazioni utilizzando l'interfaccia a riga di comando di Google Cloud, utilizza i comandi gcloud iap settings get
e gcloud iap settings set
come mostrato di seguito:
- Per visualizzare le impostazioni di un progetto, una cartella o un'organizzazione, utilizza i comandi seguenti. Per configurare le impostazioni IAP utilizzando Google Cloud Console o l'interfaccia a riga di comando gcloud, vedi Personalizzazione IAP.
gcloud iap settings get --project=PROJECT-ID
gcloud iap settings get --folder=FOLDER-ID
gcloud iap settings get --organization=ORGANIZATION-ID
- Per recuperare le impostazioni per un tipo di risorsa IAP specifico in un progetto:
gcloud iap settings get --project=PROJECT-ID \ --resource-type=RESOURCE-TYPE-NAME
- Per configurare le impostazioni per un progetto, una cartella, un'organizzazione o un
tipo di risorsa IAP in un progetto, crea un file JSON o
YAML che contenga le nuove impostazioni desiderate e specifica il percorso
del file. Per ulteriori informazioni, consulta l'argomento
gcloud iap settings set
:
gcloud iap settings set SETTING_FILE --project=PROJECT-ID \ --resource-type=RESOURCE-TYPE-NAME
API
Per ottenere e modificare le impostazioni utilizzando l'API IAP, effettua
le richieste utilizzando i verbi HTTP GET
o PATCH
per l'endpoint
della risorsa che ti interessa in Google Cloud. Combina il suffisso :iapSettings
del percorso, un percorso della risorsa (come descritto in dettaglio in Risorse e autorizzazioni) e un metodo HTTP appropriato per ottenere o modificare un'impostazione. Per ulteriori informazioni, consulta
getIapSettings()
e
updateIapSettings()
- Per recuperare o configurare le impostazioni per un tipo di risorsa IAP specifico in un progetto:
https://iap.googleapis.com/v1/projects/PROJECT-ID/iap_web/appengine-APP-ID/services/SERVICE-ID/versions/VERSION-ID:iapSettings
- Per trovare o configurare le impostazioni di un progetto:
https://iap.googleapis.com/v1/projects/PROJECT-ID:iapSettings
- Per recuperare o configurare le impostazioni di una cartella:
https://iap.googleapis.com/v1/folders/FOLDER-ID:iapSettings
- Per trovare o configurare le impostazioni per un'organizzazione:
https://iap.googleapis.com/v1/organizations/ORGANIZATION-ID:iapSettings
Informazioni sul controllo dell'accesso per le impostazioni
Per visualizzare e modificare le impostazioni IAP sono necessarie autorizzazioni specifiche. La tabella seguente elenca le autorizzazioni necessarie per leggere e modificare le impostazioni per ogni tipo di risorsa. Per una descrizione dei diversi tipi di risorse, vedi Risorse e autorizzazioni.
Risorsa | Autorizzazione per le impostazioni di visualizzazione | Autorizzazione per la modifica delle impostazioni |
---|---|---|
Organizzazione | iap.organizations.getSettings |
iap.organizations.updateSettings |
cartella | iap.folders.getSettings |
iap.folders.updateSettings |
Progetto | iap.projects.getSettings |
iap.projects.updateSettings |
Tutti i servizi web | iap.web.getSettings |
iap.web.updateSettings |
Tipo di servizio web | iap.webTypes.getSettings |
iap.webTypes.updateSettings |
Servizio web | iap.webServices.getSettings |
iap.webServices.updateSettings |
Versione del servizio web | iap.webServiceVersions.getSettings |
iap.webServiceVersions.updateSettings |
Il ruolo Impostazioni IAP (roles/iap.settingsAdmin
) concede tutte queste autorizzazioni, così come il ruolo Editor progetto (roles/editor
). Visualizzatore progetto (roles/viewer
) concede tutte le autorizzazioni getSettings
.
Per scoprire di più sulla concessione dei ruoli IAM, consulta Concessione, modifica e revoca dell'accesso.
Personalizzazione delle impostazioni IAP
IAP fornisce le seguenti impostazioni di personalizzazione:
Campo | Descrizione |
---|---|
access_settings.cors_settings.allow_http_options |
OPZIONI HTTP di controllo (preflight CORS) |
access_settings.oauth_settings.login_hint |
Semplifica l'accesso degli utenti di un dominio G Suite |
application_settings.access_denied_page_settings.access_denied_page_uri |
Mostra una pagina di errore personalizzata quando l'accesso viene negato |
application_settings.csm_settings.rctoken_aud |
Rilascia token RC Anthos e Istio |
access_settings.gcip_settings |
Autenticazione con Identity Platform |
access_settings.ReauthSettings |
Imposta un criterio di riautenticazione. Per maggiori dettagli, vedi Configurare l'autenticazione |
Puoi applicare le impostazioni a livello di progetto o a qualsiasi livello di risorsa IAP inferiore.
Puoi configurare le impostazioni per le risorse IAP basate sul Web, ma non quelle accessibili con IAP per l'inoltro TCP.
Utilizzando access_settings.cors_settings.allow_http_options
come esempio, puoi
configurare le impostazioni di personalizzazione nel seguente modo:
YAML
access_settings: cors_settings: allow_http_options: "false"
JSON
{ "access_settings": { "cors_settings": { "allow_http_options": "false" } } }
Le sezioni seguenti forniscono ulteriori informazioni su ciascuna impostazione.
Consenti richieste HTTP OPTIONS (preflight CORS)
Campo | Valore predefinito |
---|---|
access_settings.cors_settings.allow_http_options |
false |
Il criterio same-origin del Web impedisce ai browser di inviare richieste AJAX tra siti web. Per impostazione predefinita, JavaScript in una pagina pubblicata da un'origine non può utilizzare AJAX per inviare una richiesta a un'app protetta con IAP in hosting su un'origine diversa.
In alcuni casi,
i browser proveranno automaticamente a inviare una richiesta, ma ignoreranno i contenuti della risposta
se non include un'intestazione Access-Control-Allow-Origin
. Per consentire questi tipi di richieste, includi questa intestazione nelle risposte dell'app.
In altri casi, il browser invia una richiesta di preflight CORS,
un tipo di richiesta HTTP OPTIONS
, prima di inviare la richiesta multiorigine. Se la tua app non risponde con una risposta preflight appropriata (con le intestazioni di risposta Access-Control-*
richieste), il browser bloccherà la richiesta con un errore. Inoltre, poiché le richieste preflight
non vengono inviate con
credenziali di autenticazione (come un cookie di sessione
IAP), anche IAP risponderà con un errore.
Per consentire queste richieste:
Aggiungi codice alla tua app che risponda alle richieste
OPTIONS
.Cambia l'impostazione
access_settings.cors_settings.allow_http_options
intrue
in modo che IAP passi le richiesteOPTIONS
all'applicazione.
Autenticazione mediante un dominio Google Workspace
Campo | Valore predefinito |
---|---|
access_settings.oauth_settings.login_hint |
"" |
Se solo i membri di un dominio Google Workspace specifico utilizzeranno la tua app, puoi configurare IAP per ottimizzare il flusso di autenticazione. Questo processo presenta numerosi vantaggi:
Se un utente ha eseguito l'accesso con più account, ad esempio un account di lavoro e un account personale, il sistema seleziona automaticamente il suo account di lavoro anziché visualizzare l'interfaccia utente per la selezione degli account.
Se un utente non ha eseguito l'accesso al suo Account Google, l'interfaccia utente di accesso riempirà automaticamente la parte del dominio del suo indirizzo email (ad esempio l'utente dovrà solo digitare
alice
invece dialice@example.com
, ad esempio).Se il tuo dominio Google Workspace è configurato per utilizzare un provider Single Sign-On di terze parti, il sistema mostrerà la pagina di accesso personalizzata anziché quella di Google.
Per abilitare questo comportamento, imposta il valore di
access_settings.oauth_settings.login_hint
sul nome di dominio
Google Workspace (ad esempio, example.com
). La proprietà del dominio deve essere stata verificata:
non puoi utilizzare domini DNS Internet di tua proprietà. I domini che sono stati aggiunti come dominio principale o secondario di Google Workspace sono verificati e possono essere utilizzati qui.
Per autenticare gli utenti al di fuori del dominio, puoi utilizzare l'autenticazione programmatica.
Per ulteriori informazioni, consulta la documentazione di OpenID Connect.
Impostazione di una pagina di errore di accesso personalizzato negata
Campo | Valore predefinito |
---|---|
application_settings.access_denied_page_settings.access_denied_page_uri |
"" |
In questo campo puoi impostare un URL che reindirizza gli utenti a una pagina personalizzata anziché alla pagina di errore IAP predefinita, ogni volta che un criterio viene negato.
Utilizzando questa funzionalità, puoi anche incorporare l'URL per la risoluzione dei problemi. Per saperne di più, consulta l'articolo Abilitare l'URL di risoluzione dei problemi per la pagina di errore Autorizzazione negata personalizzata.
Invio di ID mesh RCToken Anthos e Istio
Campo | Valore predefinito |
---|---|
application_settings.csm_settings.rctoken_aud |
"" |
Se utilizzi Istio su GKE, puoi configurare IAP per produrre un RCToken compatibile con Istio. Se questo campo viene impostato su una stringa non vuota, IAP aggiunge un'intestazione HTTP Ingress-Authorization
contenente un RCToken. La rivendicazione aud
verrà impostata sul valore del campo.
Autenticazione con Identity Platform
Campo | Valore predefinito |
---|---|
access_settings.gcip_settings |
null |
Per impostazione predefinita, IAP utilizza il sistema di identità nativo di Google. Se questo campo è impostato, IAP utilizzerà Identity Platform per autenticare gli utenti.
Informazioni sull'ereditarietà delle impostazioni nella gerarchia delle risorse
IAP valuta sempre le richieste relative a una versione del servizio web specifica. Questo tipo di risorsa si trova al livello più basso della gerarchia di risorse, simile alla seguente:
- Organization - Folder - Project - All web services - Web service type - Web service - Web service version
Per determinare le impostazioni da applicare a una versione del servizio web, IAP inizia con un insieme di valori predefinito e poi sposta la gerarchia dall'alto verso il basso. Le impostazioni vengono applicate così come vengono trovate, pertanto i valori impostati a un livello inferiore sostituiscono quelli impostati a un livello superiore.
Ad esempio, se access_settings.cors_settings.allow_http_options
è impostato su
true
a livello di progetto, ma false
a livello di servizio, il valore effettivo
sarà false
.
Consulta la sezione Risorse e autorizzazioni per scoprire di più sulla gerarchia delle risorse IAP.