Personalize uma configuração OAuth para ativar as CAsI

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

O IAP usa um cliente OAuth gerido pela Google para autenticar os utilizadores.

O cliente OAuth gerido pela Google restringe o acesso a utilizadores na mesma organização quando acedem a aplicações com IAP através de um navegador.

Quando usar uma configuração OAuth personalizada

Tem de usar uma configuração OAuth personalizada para fazer o seguinte:

  • Para permitir o acesso a aplicações com IAP para utilizadores fora da organização.
  • Para apresentar as informações da sua marca durante a autenticação.
  • Para ativar o acesso programático à sua aplicação.

Quando personaliza a configuração de OAuth, tem de configurar o ecrã de consentimento OAuth. Isto requer que as informações de branding da sua aplicação passem pelo processo de validação da Google. Para mais informações sobre o processo de validação, consulte o artigo Configurar o ecrã de consentimento OAuth.

É responsável por criar e gerir as credenciais de um cliente OAuth personalizado. Isto inclui armazenar o segredo do cliente de forma segura e partilhá-lo com utilizadores autorizados quando necessário.

Comparação entre o cliente OAuth gerido pela Google e o cliente OAuth personalizado

Os clientes OAuth geridos pela Google não podem aceder programaticamente a aplicações protegidas pelo IAP. No entanto, ainda é possível aceder programaticamente às aplicações protegidas pelo IAP que usam o cliente OAuth gerido pela Google através de uma definição programmatic_clients ou de um JWT de conta de serviço separado.

A tabela seguinte apresenta uma comparação entre o cliente OAuth gerido pela Google e um cliente OAuth personalizado.

Cliente OAuth gerido pela Google Cliente OAuth personalizado
Utilizadores Apenas para uso interno Interno e externo
Marca Google Cloud marca Marca detida pelo cliente
Configuração do OAuth Configurado pela Google Configurado pelo cliente
Credenciais do OAuth Gerido pela Google Gerido pelo cliente
Acesso à aplicação Apenas fluxo do navegador Fluxo do navegador e acesso programático
.

Ative a IAP através de uma configuração de cliente OAuth personalizada

As secções seguintes explicam como ativar a IAP através de uma configuração de cliente OAuth personalizada para diferentes recursos.

App Engine

Consola

Ficheiro de inclusão dinâmico

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. 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.
  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 a aplicação à qual quer restringir o acesso. Para ativar a IAP para um 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 têm acesso.

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

Consola

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, em 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 equilibrador 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 equilibrador de carga.
    • Precisa das autorizações compute.backendServices.update, clientauthconfig.clients.create, 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 pelo 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

Consola

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

Consola

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, em 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 equilibrador 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 equilibrador de carga.
    • Precisa das autorizações compute.backendServices.update, clientauthconfig.clients.create, 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 pelo 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.