Personalizar uma configuração do OAuth para ativar o IAP

Este documento descreve quando e como personalizar uma configuração do OAuth para o Identity-Aware Proxy (IAP).

O IAP usa um cliente OAuth gerenciado pelo Google para autenticar usuários.

O cliente OAuth gerenciado pelo Google restringe o acesso a usuários da mesma organização ao acessar aplicativos com IAP por um navegador.

Quando usar uma configuração OAuth personalizada

É necessário usar uma configuração OAuth personalizada para fazer o seguinte:

  • Permitir o acesso a aplicativos com IAP para usuários de fora da organização.
  • Para mostrar as informações da sua marca durante a autenticação.
  • Para ativar o acesso programático ao seu aplicativo.

Ao personalizar a configuração do OAuth, você precisa configurar a tela de consentimento. Para isso, as informações de branding do seu aplicativo precisam passar pelo processo de verificação do Google. Para mais informações sobre o processo de verificação, consulte Como configurar a tela de consentimento OAuth.

Você é responsável por criar e gerenciar as credenciais de um cliente OAuth personalizado. Isso inclui armazenar a chave secreta do cliente com segurança e compartilhá-la com usuários autorizados quando necessário.

Comparação entre o cliente OAuth gerenciado pelo Google e o personalizado

Os clientes OAuth gerenciados pelo Google não podem acessar de maneira programática aplicativos protegidos pelo IAP. No entanto, os aplicativos protegidos por IAP que usam o cliente OAuth gerenciado pelo Google ainda podem ser acessados programaticamente usando um cliente OAuth separado configurado pela configuração programmatic_clients ou um JWT da conta de serviço.

A tabela a seguir mostra uma comparação entre o cliente OAuth gerenciado pelo Google e um cliente OAuth personalizado.

Cliente OAuth gerenciado pelo Google Cliente OAuth personalizado
Usuários Somente interno Parceiros internos e externos
Brand Google Cloud marca Marca de propriedade do cliente
Configuração do OAuth Google configurado Configurado pelo cliente
Credenciais do OAuth Gerenciada pelo Google Gerenciada pelo cliente
Acesso ao aplicativo Somente fluxo do navegador Fluxo do navegador e acesso programático

Ativar o IAP usando uma configuração personalizada do cliente OAuth

As seções a seguir explicam como ativar o IAP usando uma configuração personalizada do cliente OAuth para diferentes recursos.

App Engine

Console

Arquivo de inclusão dinâmico

Se você ainda não tiver configurado a tela de consentimento do OAuth do seu projeto, precisará fazer isso. Para configurar a tela de consentimento do OAuth, consulte Como configurar a tela de consentimento do OAuth.

Como configurar o acesso do IAP

  1. Acesse a página Identity-Aware Proxy.
    Acessar a página "Identity-Aware Proxy"
  2. Selecione o projeto que você quer proteger com o IAP.
  3. Marque a caixa de seleção ao lado do recurso que você quer conceder acesso.
  4. No painel à direita, clique em Adicionar principal.
  5. Na caixa de diálogo Adicionar membros que é exibida, insira os endereços de e-mail de grupos ou indivíduos que terão o papel Usuário do app da Web protegido pelo IAP no projeto.

    Os seguintes tipos de administradores podem ter esse papel:

    • Conta do Google: user@gmail.com
    • grupo do Google: admins@googlegroups.com
    • Conta de serviço: server@example.gserviceaccount.com
    • Domínio do Google Workspace: example.com

    Inclua uma Conta do Google a que você tenha acesso.

  6. Selecione Cloud IAP > Usuário do app da Web protegido pelo IAP na lista suspensa Papéis.
  7. Clique em Salvar.

Ativando o IAP

  1. Na página Identity-Aware Proxy, em APLICAÇÕES, encontre o aplicativo a que você quer restringir o acesso. Para ativar o IAP para um recurso,
  2. Na janela Ativar IAP que é exibida, clique em Ativar para confirmar que você quer proteger seu recurso com o IAP. Depois disso, será necessário usar credenciais de login para todas as conexões com o balanceador de carga. O acesso será concedido apenas às contas com o papel usuário do app da Web protegido pelo IAP no projeto.

gcloud

Antes de configurar o projeto e o IAP, você precisa de uma versão atualizada da CLI gcloud. Para instruções sobre como instalar a CLI gcloud, consulte Instalar a CLI gcloud.

  1. Para fazer a autenticação, use a CLI do Google Cloud e execute o comando a seguir.
    gcloud auth login
  2. Para fazer login, siga o URL que aparece.
  3. Depois de fazer login, copie o código de verificação que aparece e cole-o na linha de comando.
  4. Execute o comando abaixo para especificar o projeto que contém o recurso que você quer proteger com o IAP.
    gcloud config set project PROJECT_ID
  5. Siga as instruções em Como criar clientes OAuth para IAP para configurar a tela de consentimento do OAuth e criar o cliente OAuth.
  6. Salve o ID e a chave secreta do cliente OAuth.
  7. Para ativar o IAP, execute o comando a seguir.
    gcloud iap web enable \
        --oauth2-client-id=CLIENT_ID \
        --oauth2-client-secret=CLIENT_SECRET \
        --resource-type=app-engine

Depois de ativar o IAP, será possível usar a CLI gcloud para modificar a política de acesso do IAP usando o papel do IAM roles/iap.httpsResourceAccessor. Saiba mais sobre como gerenciar papéis e permissões.

API

  1. Siga as instruções em Como criar clientes OAuth para IAP para configurar a tela de consentimento do OAuth e criar o cliente OAuth.

  2. Salve o ID e a chave secreta do cliente OAuth.

  3. Execute o comando a seguir para preparar um arquivo settings.json.

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

  4. Execute o comando abaixo para ativar o 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"
    

Depois de ativar o IAP, será possível usar a CLI do Google Cloud para modificar a política de acesso do IAP usando o papel do IAM roles/iap.httpsResourceAccessor. Saiba mais sobre como gerenciar papéis e permissões.

Compute Engine

Console

Se você ainda não tiver configurado a tela de consentimento do OAuth do seu projeto, precisará fazer isso. Para configurar a tela de consentimento do OAuth, consulte Como configurar a tela de consentimento do OAuth.

Se você estiver executando clusters do GKE na versão 1.24 ou mais recente, será possível configurar o IAP e o GKE usando a API Kubernetes Gateway. Para fazer isso, siga as etapas abaixo e depois as instruções em Configurar o IAP. Não configure BackendConfig.

Como configurar o acesso do IAP

  1. Acesse a página Identity-Aware Proxy.
    Acessar a página "Identity-Aware Proxy"
  2. Selecione o projeto que você quer proteger com o IAP.
  3. Marque a caixa de seleção ao lado do recurso que você quer conceder acesso.

    Se você não encontrar um recurso, verifique se ele foi criado e se o controlador de entrada do Compute Engine BackendConfig foi sincronizado.

    Para verificar se o serviço de back-end está disponível, execute o seguinte comando gcloud:

    gcloud compute backend-services list
  4. No painel à direita, clique em Adicionar principal.
  5. Na caixa de diálogo Adicionar membros que é exibida, insira os endereços de e-mail de grupos ou indivíduos que terão o papel Usuário do app da Web protegido pelo IAP no projeto.

    Os seguintes tipos de administradores podem ter esse papel:

    • Conta do Google: user@gmail.com
    • grupo do Google: admins@googlegroups.com
    • Conta de serviço: server@example.gserviceaccount.com
    • Domínio do Google Workspace: example.com

    Inclua uma Conta do Google a que você tenha acesso.

  6. Selecione Cloud IAP > Usuário do app da Web protegido pelo IAP na lista suspensa Papéis.
  7. Clique em Salvar.

Como ativar o IAP

  1. Na página Identity-Aware Proxy, em APLICATIVOS, encontre o balanceador de carga que exibe o instance group a que você quer restringir o acesso. Para ativar o IAP para um recurso,
    Para ativar o IAP:
  2. Na janela Ativar IAP que é exibida, clique em Ativar para confirmar que você quer proteger seu recurso com o IAP. Depois disso, será necessário usar credenciais de login para todas as conexões com o balanceador de carga. O acesso será concedido apenas às contas com o papel usuário do app da Web protegido pelo IAP no projeto.

gcloud

Antes de configurar o projeto e o IAP, você precisa de uma versão atualizada da CLI gcloud. Para instruções sobre como instalar a CLI gcloud, consulte Instalar a CLI gcloud.

  1. Para fazer a autenticação, use a CLI do Google Cloud e execute o comando a seguir.
    gcloud auth login
  2. Para fazer login, siga o URL que aparece.
  3. Depois de fazer login, copie o código de verificação que aparece e cole-o na linha de comando.
  4. Execute o comando abaixo para especificar o projeto que contém o recurso que você quer proteger com o IAP.
    gcloud config set project PROJECT_ID
  5. Siga as instruções em Como criar clientes OAuth para IAP para configurar a tela de consentimento do OAuth e criar o cliente OAuth.
  6. Salve o ID e a chave secreta do cliente OAuth.
  7. Para ativar o IAP, execute o comando com escopo global ou regional.

    Escopo global
    gcloud compute backend-services update BACKEND_SERVICE_NAME \
        --global \
        --iap=enabled,oauth2-client-id=CLIENT_ID,oauth2-client-secret=CLIENT_SECRET
    Escopo regional
    gcloud compute backend-services update BACKEND_SERVICE_NAME \
        --region REGION_NAME \
        --iap=enabled,oauth2-client-id=CLIENT_ID,oauth2-client-secret=CLIENT_SECRET
        

Depois de ativar o IAP, será possível usar a CLI gcloud para modificar a política de acesso do IAP usando o papel do IAM roles/iap.httpsResourceAccessor. Saiba mais sobre como gerenciar papéis e permissões.

API

  1. Siga as instruções em Como criar clientes OAuth para IAP para configurar a tela de consentimento OAuth e criar o cliente OAuth.

  2. Salve o ID e a chave secreta do cliente OAuth.

  3. Execute o comando a seguir para preparar um arquivo settings.json.

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

  4. Execute o comando abaixo para ativar o 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"
    

Depois de ativar o IAP, será possível usar a CLI gcloud para modificar a política de acesso do IAP usando o papel roles/iap.httpsResourceAccessor do IAM. Saiba mais sobre como gerenciar papéis e permissões.

Cloud Run

Console

Se você ainda não tiver configurado a tela de consentimento do OAuth do seu projeto, será solicitado que você faça isso. Para configurar a tela de consentimento do OAuth, consulte Como configurar a tela de consentimento do OAuth.

Como configurar o acesso do IAP

  1. Abra a página Identity-Aware Proxy.
    Acessar a página Identity-Aware Proxy
  2. Selecione o projeto que você quer proteger com o IAP.
  3. Em Aplicativos, marque a caixa de seleção ao lado do serviço de back-end do balanceador de carga em que você quer adicionar membros.
  4. No painel lateral à direita, clique em Adicionar membro.
  5. Na caixa de diálogo Adicionar membros, insira as contas de grupos ou indivíduos que terão o papel Usuário do app da Web protegido pelo IAP no projeto. Os seguintes tipos de contas podem ser membros:

    • Conta do Google: user@gmail.com. Também pode ser uma conta do Google Workspace, como user@google.com ou algum outro domínio do Google Workspace.
    • grupo do Google: admins@googlegroups.com
    • Conta de serviço: server@example.gserviceaccount.com
    • Domínio do Google Workspace: example.com
  6. Selecione Cloud IAP > Usuário do app da Web protegido pelo IAP na lista Papéis.

  7. Clique em Salvar.

Ativando o IAP

  1. Na página IAP, em Aplicativos, encontre o serviço de back-end do balanceador de carga para o qual você quer restringir o acesso. Clique no botão IAP para ativar o IAP em um recurso.
  2. Na janela Ativar IAP que aparece, clique em Ativar para confirmar que você quer proteger seu recurso com o IAP. Depois disso, será necessário usar credenciais de login para todas as conexões com o balanceador de carga. O acesso será concedido apenas às contas com o papel Usuário do app da Web protegido pelo IAP no projeto.
  3. Para autorizar o IAP a enviar tráfego para o serviço de back-end do Cloud Run, siga as instruções em Adicionar principais a um serviço para adicionar o seguinte princípio e papel.

    • Principal: service-[PROJECT-NUMBER]@gcp-sa-iap.iam.gserviceaccount.com
    • Função: Chamador do Cloud Run

gcloud

  1. Siga as instruções em Como criar clientes OAuth para IAP para configurar a tela de consentimento do OAuth e criar o cliente OAuth.
  2. Salve o ID e a chave secreta do cliente OAuth.
  3. Se você ainda não fez isso, crie uma conta de serviço executando o comando a seguir. Se você já criou uma conta de serviço, a execução do comando não cria contas de serviço duplicadas.
    gcloud beta services identity create \
        --service=iap.googleapis.com --project=PROJECT_ID
    
  4. Conceda a permissão de invocação à conta de serviço criada na etapa anterior executando o comando a seguir.
    gcloud run services add-iam-policy-binding SERVICE-NAME \
        --member='serviceAccount:service-PROJECT-NUMBER@gcp-sa-iap.iam.gserviceaccount.com' \
        --role='roles/run.invoker'
    
  5. Ative o IAP executando o comando de escopo global ou regional, dependendo se o serviço de back-end do balanceador de carga é global ou regional. Use o ID e a chave secreta do cliente OAuth da etapa anterior.

    Escopo global

    gcloud compute backend-services update BACKEND_SERVICE_NAME \
        --global \
        --iap=enabled,oauth2-client-id=CLIENT_ID,oauth2-client-secret=CLIENT_SECRET
    

    Escopo regional

    gcloud compute backend-services update BACKEND_SERVICE_NAME \
        --region REGION_NAME \
        --iap=enabled,oauth2-client-id=CLIENT_ID,oauth2-client-secret=CLIENT_SECRET
    
    Substitua:

    • BACKEND_SERVICE_NAME: o nome do serviço de back-end.
    • CLIENT_ID: o ID do cliente OAuth da etapa anterior.
    • CLIENT_SECRET: a chave secreta do cliente OAuth da etapa anterior.
    • REGION_NAME: a região em que você quer ativar o IAP.

Depois de ativar o IAP, será possível usar a CLI do Google Cloud para modificar a política de acesso do IAP usando a função roles/iap.httpsResourceAccessor do Identity and Access Management. Consulte Como gerenciar papéis e permissões para mais informações.

Google Kubernetes Engine

Console

Se você ainda não tiver configurado a tela de consentimento do OAuth do seu projeto, precisará fazer isso. Para configurar a tela de consentimento do OAuth, consulte Como configurar a tela de consentimento do OAuth.

Se você estiver executando clusters do GKE na versão 1.24 ou mais recente, será possível configurar o IAP e o GKE usando a API Kubernetes Gateway. Para fazer isso, siga as etapas abaixo e depois as instruções em Configurar o IAP. Não configure BackendConfig.

Como configurar o acesso do IAP

  1. Acesse a página Identity-Aware Proxy.
    Acessar a página "Identity-Aware Proxy"
  2. Selecione o projeto que você quer proteger com o IAP.
  3. Marque a caixa de seleção ao lado do recurso que você quer conceder acesso.

    Se você não encontrar um recurso, verifique se ele foi criado e se o controlador de entrada do Compute Engine BackendConfig foi sincronizado.

    Para verificar se o serviço de back-end está disponível, execute o seguinte comando gcloud:

    gcloud compute backend-services list
  4. No painel à direita, clique em Adicionar principal.
  5. Na caixa de diálogo Adicionar membros que é exibida, insira os endereços de e-mail de grupos ou indivíduos que terão o papel Usuário do app da Web protegido pelo IAP no projeto.

    Os seguintes tipos de administradores podem ter esse papel:

    • Conta do Google: user@gmail.com
    • grupo do Google: admins@googlegroups.com
    • Conta de serviço: server@example.gserviceaccount.com
    • Domínio do Google Workspace: example.com

    Inclua uma Conta do Google a que você tenha acesso.

  6. Selecione Cloud IAP > Usuário do app da Web protegido pelo IAP na lista suspensa Papéis.
  7. Clique em Salvar.

Como ativar o IAP

  1. Na página Identity-Aware Proxy, em APLICATIVOS, encontre o balanceador de carga que exibe o instance group a que você quer restringir o acesso. Para ativar o IAP para um recurso,
    Para ativar o IAP:
  2. Na janela Ativar IAP que é exibida, clique em Ativar para confirmar que você quer proteger seu recurso com o IAP. Depois disso, será necessário usar credenciais de login para todas as conexões com o balanceador de carga. O acesso será concedido apenas às contas com o papel usuário do app da Web protegido pelo IAP no projeto.

GKE

Configurar o BackendConfig

Se você estiver executando clusters do GKE na versão 1.24 ou mais recente, será possível configurar o IAP e o GKE usando a API Kubernetes Gateway. Consulte Configurar o IAP para ver instruções.

  1. Siga as instruções em Como criar clientes OAuth para IAP para configurar a tela de permissão OAuth e criar o cliente OAuth.

  2. Crie um Secret do Kubernetes para encapsular o cliente OAuth.

    kubectl create secret generic MY_SECRET --from-literal=client_id=CLIENT_ID \
      --from-literal=client_secret=CLIENT_SECRET
    
    Substitua:

    • MY_SECRET: o nome do secret a ser criado
    • CLIENT_ID: o ID do cliente OAuth
    • CLIENT_SECRET: a chave secreta do cliente OAuth

    Você vai receber uma confirmação, como a saída a seguir, de que o segredo foi criado:

    secret "MY_SECRET" created
    

  3. Adicione as credenciais do OAuth ao BackendConfig.

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

  4. Ative o IAP associando as portas de serviço ao BackendConfig. Consulte Como associar o BackendConfig ao Ingress. Uma forma de fazer isso é tornar todas as portas de serviço como padrão para seu BackendConfig. Para isso, inclua a anotação a seguir no recurso Service:

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

Depois de ativar o IAP, será possível usar a CLI gcloud para modificar a política de acesso do IAP usando o papel roles/iap.httpsResourceAccessor do IAM. Saiba mais sobre como gerenciar papéis e permissões.

Solução de problemas

Se o secretName referenciado não existir ou não estiver estruturado corretamente, uma das seguintes mensagens de erro será exibida:

  • BackendConfig default/config-default is not valid: error retrieving secret "foo": secrets "foo" not found. Para resolver esse erro, verifique se você criou o Secret do Kubernetes corretamente, conforme descrito na etapa 2.

  • BackendConfig default/config-default is not valid: secret "foo" missing client_secret data. Para solucionar este erro, verifique se você criou as credenciais do OAuth corretamente. Além disso, verifique se você referenciou corretamente as chaves client_id e client_secret.