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 configurou 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 a que você quer conceder acesso.
  4. No painel lateral à direita, clique em Adicionar principal.
  5. Na caixa de diálogo Adicionar principais 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 principais podem ter essa função:

    • 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 Aplicativos, 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 a principais com o papel Usuário do app da Web protegido pelo IAP (roles/iap.httpsResourceAccessor) no projeto.

gcloud

Antes de configurar o projeto e as IAPs, precisa de uma versão atualizada da CLI gcloud. Para ver instruções sobre como instalar a CLI gcloud, consulte o artigo Instale a CLI gcloud.

  1. Para autenticar, use a CLI do Google Cloud e execute o seguinte comando.
    gcloud auth login
  2. Para iniciar sessão, siga o URL apresentado.
  3. Depois de iniciar sessão, copie o código de validação apresentado e cole-o na linha de comandos.
  4. Execute o seguinte comando para especificar o projeto que contém o recurso que quer proteger com o IAP.
    gcloud config set project PROJECT_ID
  5. Siga as instruções em Criar clientes OAuth para a IAP para configurar o ecrã de consentimento OAuth e criar o cliente OAuth.
  6. Guarde o ID de cliente e o segredo do cliente OAuth.
  7. Para ativar a IAP, execute o seguinte comando.
    gcloud iap web enable \
        --oauth2-client-id=CLIENT_ID \
        --oauth2-client-secret=CLIENT_SECRET \
        --resource-type=app-engine

Depois de ativar o IAP, pode usar a CLI gcloud para modificar a política de acesso do IAP através da função do IAM roles/iap.httpsResourceAccessor. Saiba mais sobre a gestão de funções e autorizações.

API

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

  2. Guarde o ID de cliente e o segredo do cliente OAuth.

  3. Execute o seguinte comando para preparar um ficheiro settings.json.

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

  4. Execute o seguinte comando para ativar a 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, pode usar a CLI do Google Cloud para modificar a política de acesso do IAP através da função do IAM roles/iap.httpsResourceAccessor. Saiba mais sobre a gestão de funções e autorizações.

Compute Engine

Console

Se não tiver configurado o ecrã de consentimento OAuth do seu projeto, é-lhe pedido que o faça. Para configurar o ecrã de consentimento OAuth, consulte o artigo Configurar o ecrã de consentimento OAuth.

Se estiver a executar clusters do GKE na versão 1.24 ou posterior, pode configurar o IAP e o GKE através da API Kubernetes Gateway. Para o fazer, conclua os passos seguintes e, de seguida, siga as instruções em Configurar CAsI. Não configure o dispositivo BackendConfig.

Configurar o acesso à IAP

  1. Aceda à página Identity-Aware Proxy.
    Aceda à página Identity-Aware Proxy
  2. Selecione o projeto que quer proteger com o IAP.
  3. Selecione a caixa de verificação junto ao recurso ao qual quer conceder acesso.

    Se não vir um recurso, certifique-se de que o recurso foi criado e que o controlador de entrada do Motor de Cálculo do Google BackendConfig está 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 do lado direito, clique em Adicionar diretor.
  5. Na caixa de diálogo Adicionar responsáveis apresentada, introduza os endereços de email dos grupos ou indivíduos que devem ter a função Utilizador da app Web protegida pelo IAP para o projeto.

    Os seguintes tipos de principais podem ter esta função:

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

    Certifique-se de que adiciona uma Conta Google à qual tem acesso.

  6. Selecione Cloud IAP > Utilizador da app Web protegida pelo IAP na lista pendente Funções.
  7. Clique em Guardar.

Ativar o IAP

  1. Na página Identity-Aware Proxy, em APLICAÇÕES, encontre o balanceador de carga que serve o instance group ao qual quer restringir o acesso. Para ativar a IAP para um recurso:
    Para ativar as CNAs:
    • Pelo menos, um protocolo na configuração de front-end do balanceador de carga tem de ser HTTPS. Saiba como configurar um balanceador de carga.
    • Precisa das autorizações compute.backendServices.update, clientauthconfig.clients.create, clientauthconfig.clients.update, e clientauthconfig.clients.getWithSecret. Estas autorizações são concedidas por funções, como a função de editor do projeto. Para saber mais, consulte o artigo Gerir o acesso a recursos protegidos pela IAP.
  2. Na janela Ativar IAP apresentada, clique em Ativar para confirmar que quer que o IAP proteja o seu recurso. Depois de ativar o IAP, este requer credenciais de início de sessão para todas as ligações ao seu equilibrador de carga. Apenas as contas com a função utilizador da app Web protegida pelo IAP no projeto têm acesso.

gcloud

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

  1. Para autenticar, use a CLI do Google Cloud e execute o seguinte comando.
    gcloud auth login
  2. Para iniciar sessão, siga o URL apresentado.
  3. Depois de iniciar sessão, copie o código de validação apresentado e cole-o na linha de comandos.
  4. Execute o seguinte comando para especificar o projeto que contém o recurso que quer proteger com o IAP.
    gcloud config set project PROJECT_ID
  5. Siga as instruções em Criar clientes OAuth para a IAP para configurar o ecrã de consentimento OAuth e criar o cliente OAuth.
  6. Guarde o ID de cliente e o segredo do cliente OAuth.
  7. Para ativar as CAs, execute o comando com âmbito global ou regional.

    Âmbito global
    gcloud compute backend-services update BACKEND_SERVICE_NAME \
        --global \
        --iap=enabled,oauth2-client-id=CLIENT_ID,oauth2-client-secret=CLIENT_SECRET
    Âmbito 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, pode usar a CLI gcloud para modificar a política de acesso do IAP através da função do IAM roles/iap.httpsResourceAccessor. Saiba mais sobre a gestão de funções e autorizações.

API

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

  2. Guarde o ID de cliente e o segredo do cliente OAuth.

  3. Execute o seguinte comando para preparar um ficheiro settings.json.

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

  4. Execute o seguinte comando para ativar a 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, pode usar a CLI gcloud para modificar a política de acesso do IAP através da função do IAM roles/iap.httpsResourceAccessor. Saiba mais sobre a gestão de funções e autorizações.

Cloud Run

Console

Se não tiver configurado o ecrã de consentimento OAuth do seu projeto, é-lhe pedido que o faça. Para configurar o ecrã de consentimento OAuth, consulte o artigo Configurar o ecrã de consentimento OAuth

Configurar o acesso à IAP

  1. Abra a página Identity-Aware Proxy.
    Aceder ao Identity-Aware Proxy
  2. Selecione o projeto que quer proteger com o IAP.
  3. Em Aplicações, selecione a caixa de verificação junto ao serviço de back-end do equilibrador de carga ao qual quer adicionar membros.
  4. No painel lateral direito, clique em Adicionar membro.
  5. Na caixa de diálogo Adicionar membros, introduza as contas de grupos ou indivíduos que devem ter a função Utilizador da app Web protegida pelo IAP para o projeto. Os seguintes tipos de contas podem ser membros:

    • Conta 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 Google: admins@googlegroups.com
    • Conta de serviço: server@example.gserviceaccount.com
    • Domínio do Google Workspace: example.com
  6. Selecione Cloud IAP > Utilizador da app Web protegida pelo IAP na lista Funções.

  7. Clique em Guardar.

Ativar o IAP

  1. Na página de IAP, em Aplicações, encontre o serviço de back-end do balanceador de carga ao qual quer restringir o acesso. Clique no botão IAP para ativar a IAP num recurso.
  2. Na janela Ativar IAP apresentada, clique em Ativar para confirmar que quer que o IAP proteja o seu recurso. Depois de ativar o IAP, este requer credenciais de início de sessão para todas as ligações ao seu equilibrador de carga. Apenas as contas com a função utilizador da app Web protegida pelo IAP no projeto recebem acesso.
  3. Para autorizar a IAP a enviar tráfego para o serviço do Cloud Run de back-end, siga as instruções em Adicione responsáveis a um serviço para adicionar o seguinte responsável e função.

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

gcloud

  1. Siga as instruções em Criar clientes OAuth para a IAP para configurar o ecrã de consentimento OAuth e criar o cliente OAuth.
  2. Guarde o ID de cliente e o segredo do cliente OAuth.
  3. Se ainda não o fez, crie uma conta de serviço executando o seguinte comando. Se tiver criado anteriormente 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. Execute o seguinte comando para conceder autorização ao invocador na conta de serviço criada no passo anterior.
    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 com âmbito global ou regional, consoante o serviço de back-end do balanceador de carga seja global ou regional. Use o ID de cliente OAuth e o segredo do passo anterior.

    Âmbito global

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

    Âmbito 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 o seguinte:

    • BACKEND_SERVICE_NAME: o nome do serviço de back-end.
    • CLIENT_ID: o ID do cliente OAuth, do passo anterior.
    • CLIENT_SECRET: o segredo do cliente OAuth, do passo anterior.
    • REGION_NAME: a região na qual quer ativar as CNAs.

Depois de ativar o IAP, pode usar a Google Cloud CLI para modificar a política de acesso do IAP através da função de gestão de identidade e de acesso roles/iap.httpsResourceAccessor. Consulte o artigo Gerir funções e autorizações para mais informações.

Google Kubernetes Engine

Console

Se não tiver configurado o ecrã de consentimento OAuth do seu projeto, é-lhe pedido que o faça. Para configurar o ecrã de consentimento OAuth, consulte o artigo Configurar o ecrã de consentimento OAuth.

Se estiver a executar clusters do GKE na versão 1.24 ou posterior, pode configurar o IAP e o GKE através da API Kubernetes Gateway. Para o fazer, conclua os passos seguintes e, de seguida, siga as instruções em Configurar CAsI. Não configure o dispositivo BackendConfig.

Configurar o acesso à IAP

  1. Aceda à página Identity-Aware Proxy.
    Aceda à página Identity-Aware Proxy
  2. Selecione o projeto que quer proteger com o IAP.
  3. Selecione a caixa de verificação junto ao recurso ao qual quer conceder acesso.

    Se não vir um recurso, certifique-se de que o recurso foi criado e que o controlador de entrada do Motor de Cálculo do Google BackendConfig está 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 do lado direito, clique em Adicionar diretor.
  5. Na caixa de diálogo Adicionar responsáveis apresentada, introduza os endereços de email dos grupos ou indivíduos que devem ter a função Utilizador da app Web protegida pelo IAP para o projeto.

    Os seguintes tipos de principais podem ter esta função:

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

    Certifique-se de que adiciona uma Conta Google à qual tem acesso.

  6. Selecione Cloud IAP > Utilizador da app Web protegida pelo IAP na lista pendente Funções.
  7. Clique em Guardar.

Ativar o IAP

  1. Na página Identity-Aware Proxy, em APLICAÇÕES, encontre o balanceador de carga que serve o instance group ao qual quer restringir o acesso. Para ativar a IAP para um recurso:
    Para ativar as CNAs:
    • Pelo menos, um protocolo na configuração de front-end do balanceador de carga tem de ser HTTPS. Saiba como configurar um balanceador de carga.
    • Precisa das autorizações compute.backendServices.update, clientauthconfig.clients.create, clientauthconfig.clients.update, e clientauthconfig.clients.getWithSecret. Estas autorizações são concedidas por funções, como a função de editor do projeto. Para saber mais, consulte o artigo Gerir o acesso a recursos protegidos pela IAP.
  2. Na janela Ativar IAP apresentada, clique em Ativar para confirmar que quer que o IAP proteja o seu recurso. Depois de ativar o IAP, este requer credenciais de início de sessão para todas as ligações ao seu equilibrador de carga. Apenas as contas com a função utilizador da app Web protegida pelo IAP no projeto têm acesso.

GKE

Configure o BackendConfig

Se estiver a executar clusters do GKE na versão 1.24 ou posterior, pode configurar o IAP e o GKE através da API Kubernetes Gateway. Consulte Configurar IAP para ver instruções.

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

  2. Crie um segredo 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 o seguinte:

    • MY_SECRET: o nome do segredo a criar
    • CLIENT_ID: o ID de cliente OAuth
    • CLIENT_SECRET: O segredo do cliente OAuth

    Deve receber uma confirmação, como o seguinte resultado, de que o segredo foi criado com êxito:

    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 portas de serviço ao seu BackendConfig. Consulte o artigo Associar o BackendConfig ao seu Ingress. Uma forma de fazer esta associação é definir todas as portas do serviço como predefinição para o BackendConfig, o que pode fazer adicionando a seguinte anotação ao recurso Service:

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

Depois de ativar o IAP, pode usar a CLI gcloud para modificar a política de acesso do IAP através da função do IAM roles/iap.httpsResourceAccessor. Saiba mais sobre a gestão de funções e autorizações.

Resolução de problemas

Se o elemento secretName ao qual fez referência não existir ou não estiver estruturado corretamente, é apresentada uma das seguintes mensagens de erro:

  • BackendConfig default/config-default is not valid: error retrieving secret "foo": secrets "foo" not found. Para resolver este erro, certifique-se de que criou o segredo do Kubernetes corretamente, conforme descrito no passo 2.

  • BackendConfig default/config-default is not valid: secret "foo" missing client_secret data. Para resolver este erro, certifique-se de que criou as credenciais OAuth corretamente. Além disso, certifique-se de que fez referência às chaves client_id e client_secret corretas.