Utilizzare client OAuth personalizzati con IAP

Questo documento descrive quando e come utilizzare client OAuth personalizzati per Identity-Aware Proxy (IAP).

Per impostazione predefinita, IAP utilizza client OAuth gestiti da Google per autenticare gli utenti. I client OAuth gestiti da Google possono essere utilizzati solo per gestire l'accesso degli utenti interni di un'organizzazione.

Devi utilizzare una configurazione OAuth personalizzata per:

  • Gestisci l'accesso alle applicazioni abilitate per IAP per gli utenti esterni che non fanno parte della tua organizzazione.

  • Gestisci l'accesso alle applicazioni web che si trovano in progetti che non fanno parte di un'organizzazioneGoogle Cloud .

  • Visualizza informazioni personalizzate sul brand nelle schermate per il consenso durante l'autenticazione.

Puoi configurare client OAuth personalizzati su IAP o direttamente sulla tua piattaforma.

Quando utilizzi client OAuth personalizzati, devi configurare la schermata per il consenso OAuth. Affinché il branding personalizzato venga visualizzato nella schermata per il consenso, devi inviare la tua applicazione per la verifica di Google. Per saperne di più sulla procedura di verifica, consulta Configura la schermata per il consenso OAuth.

Quando configuri client OAuth personalizzati, sei responsabile della creazione e della gestione delle credenziali, il che include l'archiviazione sicura del client secret e la sua condivisione con i client autorizzati, se necessario.

Confronta i client OAuth gestiti da Google e i client OAuth personalizzati

I client OAuth gestiti da Google non possono accedere in modo programmatico alle applicazioni protette da IAP. Tuttavia, è comunque possibile accedere alle applicazioni protette da IAP che utilizzano il client OAuth gestito da Google in modo programmatico utilizzando un client OAuth separato configurato tramite l'impostazione programmatic_clients o un JWT del service account.

La tabella seguente fornisce un confronto tra il client OAuth gestito da Google e un client OAuth personalizzato.

Client OAuth gestito da Google Client OAuth personalizzato
Utenti Solo interno Interni ed esterni
Brand Google Cloud brand Brand di proprietà del cliente
Configurazione OAuth Configurato da Google Cliente configurato
Credenziali OAuth Gestita da Google Gestita dal cliente
Accesso alle applicazioni Solo flusso del browser Flusso del browser e accesso programmatico

Configura la pagina di branding

Per configurare la pagina di branding personalizzato utilizzando la console Google Cloud , segui questi passaggi:

  1. Nella console Google Cloud , vai alla pagina Branding di OAuth:

    Vai a Branding

  2. Fai clic su Inizia.

  3. In Nome app, inserisci il nome dell'applicazione per la schermata per il consenso.

  4. In Email per l'assistenza utenti, inserisci l'indirizzo email dell'amministratore per l'assistenza.

  5. In Pubblico, seleziona Interno per limitare l'accesso agli utenti della tua organizzazione o Esterno per consentire l'accesso agli utenti esterni alla tua organizzazione.

  6. In Informazioni di contatto, inserisci l'indirizzo email dell'amministratore da contattare per le app protette dai client OAuth. I client OAuth verranno configurati in un passaggio successivo.

  7. Per creare la configurazione OAuth, fai clic su Crea.

Configura client OAuth personalizzati in IAP

Questa sezione descrive come configurare client OAuth personalizzati in IAP.

Puoi creare un client OAuth personalizzato per IAP utilizzando la consoleGoogle Cloud nei seguenti modi:

Indipendentemente dal metodo utilizzato, assicurati di aver configurato la pagina di branding prima di creare il client OAuth. Il formato dell'URI di reindirizzamento richiesto è mostrato in entrambi i metodi.

Crea il client OAuth personalizzato

Questa sezione descrive come creare client OAuth personalizzati utilizzando la consoleGoogle Cloud . Puoi configurare client OAuth IAP personalizzati a qualsiasi livello della gerarchia delle risorse.

Per creare client OAuth personalizzati per una risorsa utilizzando la console Google Cloud , utilizza uno dei seguenti metodi:

Metodo 1: crea un client OAuth utilizzando la console Google Cloud

Utilizza questo metodo quando vuoi creare il client OAuth separatamente, ad esempio prima di configurare IAP per le tue risorse. Ciò richiede l'aggiunta manuale dell'URI di reindirizzamento IAP.

  1. Nella console Google Cloud , vai a API e servizi > Credenziali.

  2. Fai clic su Crea credenziali e poi seleziona ID client OAuth.

  3. Per Tipo di applicazione, seleziona Applicazione web.

  4. Nel campo Nome, inserisci un nome descrittivo per il client OAuth.

  5. Fai clic su Crea. Prendi nota dell'ID client generato.

  6. Dopo aver creato il client OAuth, vai alla sezione URI di reindirizzamento autorizzati della pagina dei dettagli del client OAuth appena creato.

  7. Fai clic su Aggiungi URI e inserisci il seguente URI di reindirizzamento autorizzato specifico per IAP:

    https://iap.googleapis.com/v1/oauth/clientIds/YOUR_CLIENT_ID:handleRedirect

    Sostituisci YOUR_CLIENT_ID con l'ID client ottenuto nel passaggio precedente.

  8. Fai clic su Salva.

Metodo 2: crea un client OAuth utilizzando le credenziali di generazione automatica di IAP

Utilizza questo metodo per fare in modo che IAP crei e configuri il client OAuth per te e aggiunga automaticamente l'URI di reindirizzamento richiesto.

  1. Nella console Google Cloud , vai alla pagina IAP.

    Vai a IAP

  2. Nella scheda Applicazioni, nell'elenco delle risorse, individua la risorsa che vuoi configurare.

    Per le risorse a livello di progetto, segui questi passaggi:

    • Crea il client OAuth utilizzando la console Google Cloud :

      1. Nella colonna Azioni, fai clic su Altre opzioni > Impostazioni.

      2. Nella finestra di dialogo Settings (Impostazioni), seleziona Custom OAuth (OAuth personalizzato).

      3. Se non hai configurato una schermata per il consenso, segui questi passaggi:

        1. Fai clic su Configura la schermata per il consenso.

        2. Segui le istruzioni per configurare la pagina di branding fornite in precedenza in questo documento.

      4. Nella finestra di dialogo delle impostazioni di IAP, fai clic su Genera automaticamente le credenziali. IAP genera un nuovo client OAuth e un secret da utilizzare con questa risorsa. In Google Auth Platform, il campo URI di reindirizzamento autorizzati contiene una voce nel seguente formato:

        https://iap.googleapis.com/v1/oauth/clientIds/CLIENT_ID:handleRedirect
      5. Per accedere all'ID client e al secret, fai clic su Scarica credenziali. Le credenziali vengono salvate in un file in formato JSON. Poiché il file contiene credenziali sensibili per l'accesso alle risorse, assicurati che sia protetto o eliminato.

      6. Per salvare la configurazione OAuth di IAP e applicare il client OAuth a IAP, fai clic su Salva.

Applica client OAuth personalizzati a IAP

Questa sezione descrive come applicare i client OAuth a IAP. Puoi utilizzare questo metodo anziché applicare i client direttamente sulla tua piattaforma.

  1. Per creare il client OAuth personalizzato, segui le istruzioni della consoleGoogle Cloud fornite in precedenza in questo documento.

  2. Applica il client OAuth personalizzato.

    gcloud

    Per applicare il client OAuth personalizzato utilizzando gcloud CLI, segui questi passaggi:

    1. Crea un file YAML delle impostazioni.

      cat << EOF > iap-oauth.yaml
      accessSettings:
      oauthSettings:
        clientId: CLIENT_ID
        clientSecret: CLIENT_SECRET
      EOF
      

      Sostituisci quanto segue:

      • CLIENT_ID: l'ID client delle credenziali OAuth generate in precedenza.

      • CLIENT_SECRET: il client secret dalle credenziali OAuth generate in precedenza.

    2. Per impostare la configurazione OAuth, esegui una delle seguenti operazioni:

      • Per impostare la configurazione OAuth a livello di progetto, esegui il seguente comando:
      gcloud iap settings set iap-oauth.yaml

      Per impostare la configurazione a un altro livello della gerarchia delle risorse, utilizza uno dei seguenti flag anziché il flag --project. La configurazione di client OAuth personalizzati a un livello della gerarchia delle risorse fornisce lo stesso branding personalizzato a tutti i servizi eseguiti all'interno di quel livello.

      • --folder=FOLDER_ID

      • --organization=ORGANIZATION_ID

      • Per impostare la configurazione su un servizio specifico, esegui questo comando:

      gcloud iap settings set iap-oauth.yaml \
          --project=PROJECT_ID \
          --resource-type= RESOURCE_TYPE \
          --region=REGION \
          --service=SERVICE_NAME

      Sostituisci quanto segue:

      • PROJECT_ID: l'ID della risorsa progetto. Per impostare la configurazione a un altro livello, utilizza uno dei seguenti flag anziché il flag --project:

        • --folder=FOLDER_ID

        • --organization=ORGANIZATION_ID

      • RESOURCE_TYPE: sostituisci con uno dei seguenti tipi di risorse, a seconda della risorsa:

        • app-engine

        • backend-services

        • cloud-run

        • compute

        • folder

        • forwarding-rule

        • iap_web

        • organization

      • REGION: la regione in cui esegui il servizio Cloud Run.

      • SERVICE_NAME: il nome del servizio.

    Terraform

    Per applicare il client OAuth personalizzato utilizzando Terraform, segui questi passaggi:

    resource "google_iap_settings" "iap_settings" {
    name = IAP_RESOURCE_NAME
    access_settings {
      oauth_settings {
          oauth_client_id = CLIENT_ID
          oauth_client_secret = CLIENT_SECRET
      }
    }
    }
    

    Sostituisci quanto segue:

    • IAP_RESOURCE_NAME: il nome della risorsa iap_settings per il servizio, che ha il seguente formato: projects/PROJECT_NUMBER/iap_web/REGION/services/SERVICE_NAME

    • CLIENT_ID: l'ID client delle credenziali OAuth generate in precedenza

    • CLIENT_SECRET: il client secret delle credenziali OAuth generate in precedenza

    API REST

    1. Crea un file JSON delle impostazioni.

      cat << EOF > iap-oauth.json
      {
      "accessSettings": {
        "oauthSettings": {
          "clientId": "CLIENT_ID",
          "clientSecret": "CLIENT_SECRET"
        }
      }
      }
      EOF

      Sostituisci quanto segue:

      • CLIENT_ID: l'ID client delle credenziali OAuth generate in precedenza.

      • CLIENT_SECRET: il client secret dalle credenziali OAuth generate in precedenza.

    2. Applica il file delle impostazioni.

      curl -X PATCH \
      -H "Authorization: Bearer $(gcloud auth print-access-token)"
      -H "Content-Type: application/yaml" \
      "https://iap.googleapis.com/v1/projects/cb-managed-ingress-demo/iap_web/forwarding_rule-us-central1/services/psc-fr:iapSettings?update_mask=iapSettings.accessSettings.oauthSettings.oauthClientId,iapSettings.accessSettings.oauthSettings.oauthClientSecret" \
      -d @iap-oauth.json
      

Per verificare che le tue applicazioni web siano protette da IAP con i client OAuth, consulta Testa l'accesso.

Configurazione legacy dei client OAuth personalizzati su una risorsa

Le sezioni seguenti descrivono i metodi legacy per configurare client OAuth personalizzati in IAP per determinati tipi di risorse. Puoi saltare questa sezione se hai utilizzato il metodo descritto in precedenza in questo documento.

App Engine

Questa sezione descrive come attivare i client OAuth personalizzati su App Engine.

gcloud

在设置项目和 IAP 之前,您需要最新版本的 gcloud CLI。如需了解如何安装 gcloud CLI,请参阅安装 gcloud CLI。

  1. 如需进行身份验证,请使用 Google Cloud CLI 并运行以下命令。
    gcloud auth login
  2. 如需登录,请访问显示的网址。
  3. 登录后,复制显示的验证码并将其粘贴到命令行中。
  4. 运行以下命令,指定包含要使用 IAP 保护的资源的项目。
    gcloud config set project PROJECT_ID
  5. 按照为 IAP 创建 OAuth 客户端中的说明配置 OAuth 权限请求页面和创建 OAuth 客户端。
  6. 保存 OAuth 客户端 ID 和密钥。
  7. 如需启用 IAP,请运行以下命令。
    gcloud iap web enable \
        --oauth2-client-id=CLIENT_ID \
        --oauth2-client-secret=CLIENT_SECRET \
        --resource-type=app-engine

启用 IAP 后,您可以使用 gcloud CLI 通过 IAM 角色 roles/iap.httpsResourceAccessor 修改 IAP 访问权限政策。详细了解如何管理角色和权限。

API

  1. Segui le istruzioni riportate in Creazione di client OAuth per IAP per configurare la schermata per il consenso OAuth e creare il client OAuth.

  2. Salva l'ID client OAuth e il client secret.

  3. Esegui questo comando per preparare un file settings.json.

    cat << EOF > settings.json
    {
    "iap":
      {
        "enabled": true,
        "oauth2ClientId": "CLIENT_ID",
        "oauth2ClientSecret":" CLIENT_SECRET"
      }
    }
    EOF
    

  4. Esegui questo comando per abilitare IAP.

    curl -X PATCH \
    -H "Authorization: Bearer $(gcloud auth application-default 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"
    

Dopo aver abilitato IAP, puoi utilizzare Google Cloud CLI per modificare la policy di accesso IAP utilizzando il ruolo IAM roles/iap.httpsResourceAccessor. Scopri di più sulla gestione di ruoli e autorizzazioni.

GKE

Questa sezione descrive come attivare i client OAuth personalizzati su GKE.

配置 BackendConfig

如果您运行的是 GKE 集群 1.24 版或更高版本,则可以使用 Kubernetes Gateway API 配置 IAP 和 GKE。如需查看相关说明,请参阅配置 IAP。

  1. 按照为 IAP 创建 OAuth 客户端中的说明配置 OAuth 权限请求页面和创建 OAuth 客户端。

  2. 创建一个 Kubernetes Secret 来封装 OAuth 客户端。

    kubectl create secret generic MY_SECRET --from-literal=client_id=CLIENT_ID \
      --from-literal=client_secret=CLIENT_SECRET
    
    请替换以下内容:

    • MY_SECRET:要创建的 Secret 的名称

    • CLIENT_ID:OAuth 客户端 ID

    • CLIENT_SECRET:OAuth 客户端密钥

    您应该会收到类似以下输出的确认信息,表明 Secret 已成功创建:

    secret "MY_SECRET" created
    

  3. 将 OAuth 凭证添加到 BackendConfig。

    apiVersion: cloud.google.com/v1
    kind: BackendConfig
    metadata:
      name: CONFIG_DEFAULT
      namespace: my-namespace
    spec:
    iap:
      enabled: true
      oauthclientCredentials:
        secretName: MY_SECRET
    

  4. 通过将 Service 端口与 BackendConfig 相关联来启用 IAP。请参阅将 BackendConfig 与 Ingress 关联。建立这种关联的一种方法是将服务的所有端口默认设置为 BackendConfig,为此,您可以将以下注解添加到 Service 资源中:

    metadata:
      annotations:
          cloud.google.com/backend-config: '{"default": "CONFIG_DEFAULT"}'
    

启用 IAP 后,您可以使用 gcloud CLI 通过 IAM 角色 roles/iap.httpsResourceAccessor 修改 IAP 访问权限政策。详细了解如何管理角色和权限。

问题排查

如果您引用的 secretName 不存在或结构不正确,系统会显示以下出错提示之一:

  • BackendConfig default/config-default is not valid: error retrieving secret "foo": secrets "foo" not found. 如需解决此错误,请确保已按照第 2 步中的说明正确创建了 Kubernetes Secret。

  • BackendConfig default/config-default is not valid: secret "foo" missing client_secret data. 如需解决此错误,请确保您正确创建了 OAuth 凭据。此外,请确保您引用了正确的 client_id 和 client_secret 密钥。

Servizio di backend del bilanciatore del carico

Per gli utenti di Compute Engine e Cloud Run, questa sezione descrive come configurare i client OAuth in IAP per il servizio di backend del bilanciatore del carico.

gcloud

在设置项目和 IAP 之前,您需要最新版本的 gcloud CLI。如需了解如何安装 gcloud CLI,请参阅安装 gcloud CLI。

  1. 如需进行身份验证,请使用 Google Cloud CLI 并运行以下命令。
    gcloud auth login
  2. 如需登录,请访问显示的网址。
  3. 登录后,复制显示的验证码并将其粘贴到命令行中。
  4. 运行以下命令,指定包含要使用 IAP 保护的资源的项目。
    gcloud config set project PROJECT_ID
  5. 按照为 IAP 创建 OAuth 客户端中的说明配置 OAuth 权限请求页面和创建 OAuth 客户端。
  6. 保存 OAuth 客户端 ID 和密钥。
  7. 如需启用 IAP,请运行全局范围或区域范围的命令。

    全局范围
    gcloud compute backend-services update BACKEND_SERVICE_NAME \
        --global \
        --iap=enabled,oauth2-client-id=CLIENT_ID,oauth2-client-secret=CLIENT_SECRET
    区域范围
    gcloud compute backend-services update BACKEND_SERVICE_NAME \
        --region REGION_NAME \
        --iap=enabled,oauth2-client-id=CLIENT_ID,oauth2-client-secret=CLIENT_SECRET
        

启用 IAP 后,您可以使用 gcloud CLI 通过 IAM 角色 roles/iap.httpsResourceAccessor 修改 IAP 访问权限政策。详细了解如何管理角色和权限。

API

  1. 按照为 IAP 创建 OAuth 客户端中的说明配置 OAuth 权限请求页面和创建 OAuth 客户端。

  2. 保存 OAuth 客户端 ID 和 Secret。

  3. 运行以下命令以准备 settings.json 文件。

    cat << EOF > settings.json
    {
    "iap":
      {
        "enabled": true,
        "oauth2ClientId": "CLIENT_ID",
        "oauth2ClientSecret": "CLIENT_SECRET"
      }
    }
    EOF
    

  4. 运行以下命令以启用 IAP。

    curl -X PATCH \
    -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
    -H "Accept: application/json" \
    -H "Content-Type: application/json" \
    -d @settings.json \
    "https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/REGION/backendServices/BACKEND_SERVICE_NAME"
    

启用 IAP 后,您可以使用 gcloud CLI 通过 IAM 角色 roles/iap.httpsResourceAccessor 修改 IAP 访问权限政策。详细了解如何管理角色和权限。

Controlla l'accesso

Dopo aver configurato il client OAuth personalizzato, puoi verificare che IAP lo utilizzi per proteggere il tuo servizio seguendo questi passaggi:

  1. Nella pagina IAP, nella scheda Applicazioni, visualizza le applicazioni gestite da IAP.

  2. Accedi all'URL di una delle applicazioni. Se accedi all'applicazione per la prima volta dopo aver configurato la schermata per il consenso, vedrai la schermata per il consenso che hai configurato in precedenza.