Personalizzare IAP

Questo documento descrive come personalizzare le impostazioni di Identity-Aware Proxy (IAP). Con queste impostazioni, puoi controllare i comportamenti, tra cui:

  • Compatibilità con GKE Enterprise e Istio su Google Kubernetes Engine.
  • Gestione delle richieste di preflight CORS.
  • Modalità di autenticazione degli utenti.
  • Pagina di errore mostrata agli utenti quando l'accesso viene negato.

Gestisci impostazioni

Puoi visualizzare e aggiornare le impostazioni IAP su bilanciatori del carico e app App Engine utilizzando la Google Cloud console, l'API IAP, o Google Cloud CLI.

Per aggiornare le impostazioni IAP su tutte le risorse, incluse cartelle, progetti e organizzazioni, utilizza Google Cloud CLI o l'API.

Per gestire le impostazioni in IAP:

Console

Per visualizzare e modificare le impostazioni utilizzando la Google Cloud console:

  1. Vai alla pagina Identity-Aware Proxy.
    Vai alla pagina Identity-Aware Proxy
  2. Trova la risorsa nella scheda APPLICAZIONI.
  3. Apri il menu Altre azioni e fai clic su Impostazioni.
  4. Fai clic su Salva.

gcloud

Per ottenere e modificare le impostazioni utilizzando Google Cloud CLI, utilizza i gcloud iap settings get e i gcloud iap settings set comandi come segue:

  • Per ottenere le impostazioni per un progetto, una cartella o un'organizzazione, utilizza i seguenti comandi. Per configurare le impostazioni IAP utilizzando la Google Cloud console o gcloud CLI, consulta Personalizzazione di IAP.
gcloud iap settings get --project=PROJECT-ID
gcloud iap settings get --folder=FOLDER-ID
gcloud iap settings get --organization=ORGANIZATION-ID
  • Per ottenere 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 impostare le impostazioni per un progetto, una cartella o 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' gcloud iap settings set argomento:
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 richieste utilizzando i verbi HTTP GET o PATCH all'endpoint della risorsa selezionata in Google Cloud. Combina il suffisso del percorso :iapSettings, un percorso della risorsa (come descritto in Risorse e autorizzazioni) e un metodo HTTP appropriato per ottenere o modificare un'impostazione. Per ulteriori informazioni, consulta getIapSettings() e updateIapSettings():

  • Per ottenere o impostare 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 ottenere o impostare le impostazioni per un progetto:
https://iap.googleapis.com/v1/projects/PROJECT-ID:iapSettings
  • Per ottenere o impostare le impostazioni per una cartella:
https://iap.googleapis.com/v1/folders/FOLDER-ID:iapSettings
  • Per ottenere o impostare le impostazioni per un'organizzazione:
https://iap.googleapis.com/v1/organizations/ORGANIZATION-ID:iapSettings

Ruoli e autorizzazioni delle impostazioni IAP

Questa sezione descrive i ruoli e le autorizzazioni necessari per visualizzare e aggiornare le impostazioni IAP.

Ruoli delle impostazioni

Puoi concedere il ruolo Amministratore impostazioni IAP (roles/iap.settingsAdmin) a livello di organizzazione, cartella e progetto. Per visualizzare le autorizzazioni concesse dal ruolo Amministratore impostazioni IAP, consulta Autorizzazioni delle impostazioni.

Per saperne di più sui ruoli e le autorizzazioni per IAP, consulta Ruoli e autorizzazioni di Identity-Aware Proxy.

I seguenti ruoli di base forniscono queste autorizzazioni:

  • Il ruolo Visualizzatore progetto (roles/viewer) concede tutte le autorizzazioni getSettings.

  • Il ruolo Editor (roles/editor) concede tutte le autorizzazioni descritte nella tabella.

Autorizzazioni delle impostazioni

La tabella seguente elenca le autorizzazioni IAM necessarie per leggere e modificare le impostazioni per ogni tipo di risorsa. Per una descrizione dei diversi tipi di risorse, consulta Risorse e autorizzazioni.

Risorsa Autorizzazione per la visualizzazione delle impostazioni 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
Tipi di web iap.webTypes.getSettings iap.webTypes.updateSettings
Servizi web iap.webServices.getSettings iap.webServices.updateSettings
Versioni dei servizi web iap.webServiceVersions.getSettings iap.webServiceVersions.updateSettings
Tipi di web iap.webTypes.getSettings iap.webTypes.updateSettings

Per saperne di più sulla concessione dei ruoli IAM, consulta Concessione, modifica e revoca dell'accesso.

Personalizza le impostazioni IAP

IAP fornisce le seguenti impostazioni di personalizzazione:

Campo Descrizione
access_settings.cors_settings.allow_http_options Controlla le opzioni HTTP (preflight CORS)
access_settings.oauth_settings.login_hint Semplifica l'accesso per gli 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 Emetti RCToken di GKE Enterprise e Istio
access_settings.gcip_settings Autenticati con Identity Platform
access_settings.ReauthSettings Imposta un criterio di riautenticazione. Per maggiori dettagli, consulta Configurazione della riautenticazione

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 per le risorse a cui si accede con IAP per l'inoltro TCP.

Utilizzando access_settings.cors_settings.allow_http_options come esempio, puoi configurare le impostazioni di personalizzazione come segue:

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 ogni impostazione.

Consenti richieste di opzioni HTTP (preflight CORS)

Campo Valore predefinito
access_settings.cors_settings.allow_http_options false

Il criterio della stessa origine del web impedisce ai browser di inviare richieste AJAX tra i siti web. Per impostazione predefinita, JavaScript su una pagina pubblicata da un'origine non può utilizzare AJAX per inviare una richiesta a un'app protetta con IAP ospitata su un'origine diversa.

In alcuni casi, i browser tenteranno automaticamente una richiesta, ma scarteranno il contenuto della risposta se non include un'intestazione Access-Control-Allow-Origin. Per consentire questi tipi di richieste, includi questa intestazione nelle risposte della tua app.

In altri casi, il browser invierà 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 di preflight appropriata (contenente le intestazioni di risposta Access-Control-* richieste), il browser bloccherà la richiesta con un errore. Inoltre, poiché le richieste di preflight non vengono inviate con credenziali di autenticazione (ad esempio un cookie di sessione IAP), IAP risponderà anche con un errore.

Per consentire queste richieste:

  1. Aggiungi codice alla tua app che risponde alle richieste OPTIONS.

  2. Modifica l'impostazione access_settings.cors_settings.allow_http_options in true in modo che IAP inoltri le richieste OPTIONS alla tua applicazione.

Autenticati utilizzando 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 offre diversi vantaggi:

  • Se un utente ha eseguito l'accesso con più account (ad esempio un account di lavoro e un account personale), il sistema selezionerà automaticamente il suo account di lavoro anziché mostrare l'interfaccia utente di selezione dell'account.

  • Se un utente non ha eseguito l'accesso al proprio Account Google, l'interfaccia utente di accesso compilerà automaticamente la parte del dominio del suo indirizzo email (il che significa che l'utente deve digitare solo alice anziché alice@example.com, ad esempio).

  • Se il tuo dominio Google Workspace è configurato per utilizzare un provider di Single Sign-On di terze parti, il sistema mostrerà la pagina di accesso personalizzata anziché quella di Google.

Per attivare 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 arbitrari di tua proprietà. (I domini aggiunti come dominio principale o secondario di Google Workspace vengono verificati e possono quindi essere utilizzati qui.)

Se devi autenticare utenti al di fuori del dominio, puoi utilizzare l'autenticazione programmatica.

Per ulteriori informazioni, consulta la documentazione di OpenID Connect.

Imposta una pagina di errore di accesso negato personalizzata

Campo Valore predefinito
application_settings.access_denied_page_settings.access_denied_page_uri ""

Puoi impostare un URL in questo campo che reindirizza gli utenti a una pagina personalizzata anziché alla pagina di errore IAP predefinita ogni volta che l'accesso viene negato da una policy.

Puoi anche incorporare l'URL per la risoluzione dei problemi con questa funzionalità. Per ulteriori informazioni, consulta Attivare l'URL per la risoluzione dei problemi per la pagina di errore di accesso negato personalizzata.

Emetti ID mesh RCToken di GKE Enterprise e Istio

Campo Valore predefinito
application_settings.csm_settings.rctoken_aud ""

Se utilizzi Istio su GKE, puoi configurare IAP per generare un RCToken compatibile con Istio. Se questo campo è impostato su una stringa non vuota, IAP aggiungerà un'intestazione HTTP Ingress-Authorization contenente un RCToken. L'attestazione aud sarà impostata sul valore del campo.

Autenticati con Identity Platform

Campo Valore predefinito
access_settings.gcip_settings null

Per impostazione predefinita, IAP utilizza il sistema di identità integrato 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 per una versione specifica del servizio web. Questo tipo di risorsa si trova al livello più basso della gerarchia delle risorse, che ha il seguente aspetto:

- 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 predefiniti e poi percorre la gerarchia dall'alto verso il basso. Le impostazioni vengono applicate man mano che vengono trovate, quindi i valori impostati a un livello inferiore sostituiscono i valori impostati a un livello superiore. Ad esempio, se access_settings.cors_settings.allow_http_options è impostato su true a livello di progetto, ma su false a livello di servizio, il valore effettivo sarà false.

Consulta Risorse e autorizzazioni per saperne di più sulla gerarchia delle risorse IAP.