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 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 autenticar, use a Google Cloud CLI e execute o seguinte comando:
    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 seguinte comando 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 permissão OAuth e criar o cliente OAuth.
  6. Salve o ID e a chave secreta do cliente OAuth.
  7. Para ativar o 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, use 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 permissão 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 a seguir 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, use a Google Cloud CLI 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

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, 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 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 autenticar, use a Google Cloud CLI e execute o seguinte comando.
    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 seguinte comando 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 permissão 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, use 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 permissão 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 a seguir para ativar 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, use 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.

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, 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

Configurar o BackendConfig

Se você estiver executando clusters do GKE versão 1.24 ou mais recente, poderá configurar o IAP e o GKE usando a API Gateway do Kubernetes. Consulte Configurar o IAP para 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 objeto 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 secret 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 portas de serviço ao BackendConfig. Consulte Como associar o BackendConfig ao Ingress. Uma forma de fazer essa associação é 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, use 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.

Solução de problemas

Se o secretName referenciado não existir ou não estiver estruturado corretamente, uma das mensagens de erro a seguir 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 objeto Secret do Kubernetes corretamente, conforme descrito na etapa 2.

  • BackendConfig default/config-default is not valid: secret "foo" missing client_secret data. Para resolver esse 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.