Usar a autenticação Google

Esta página aplica-se ao Apigee e ao Apigee Hybrid.

Veja a documentação do Apigee Edge.

Este tópico explica como configurar e implementar um proxy de API configurado para usar a autenticação Google.

Introdução

O Apigee suporta a utilização de tokens OAuth da Google ou tokens OpenID Connect para autenticar com serviços Google, como o Cloud Logging e o Secret Manager, e serviços personalizados executados em determinados Google Cloud produtos, como o Cloud Functions e o Cloud Run.

Para usar esta funcionalidade, tem de configurar o elemento XML <Authentication> num dos seguintes contextos:

  • Políticas AssignMessage
  • Políticas ServiceCallout
  • Políticas de ExternalCallout
  • Configurações de TargetEndpoint

Depois de concluir alguns passos de configuração básicos (conforme descrito neste tópico), o Apigee realiza a geração de tokens e faz chamadas seguras para serviços Google segmentados ou serviços alojados personalizados por si, sem necessidade de definir manualmente cabeçalhos de autenticação nem modificar de outra forma um pedido de serviço. Do ponto de vista de um programador de APIs, o processo de chamar os serviços Google a partir de um proxy de API configurado corretamente é processado de forma integrada.

Opções de configuração do proxy de API

Esta secção explica onde pode usar o elemento XML <Authentication> para ativar a autenticação do token OAuth da Google ou do OpenID Connect:

Opção de configuração Descrição
Política AssignMessage A política AssignMessage permite-lhe adicionar os cabeçalhos necessários para a autenticação Google e a injeção de tokens. Para ver detalhes de utilização e exemplos, consulte a política AssignMessage.
Política ServiceCallout A política ServiceCallout permite-lhe chamar outros serviços internos ou externos a partir de um proxy de API. Por exemplo, o ServiceCallout pode chamar serviços Google externos ou serviços alojados personalizados. Para ver detalhes de utilização e exemplos, consulte a política ServiceCallout.
Política de ExternalCallout A política ExternalCallout permite-lhe enviar pedidos gRPC para o seu servidor gRPC para implementar um comportamento personalizado que não é suportado pelas políticas do Apigee. Para ver detalhes de utilização e exemplos, consulte a política ExternalCallout.
TargetEndpoint Especifique um serviço Google ou um serviço alojado personalizado como um ponto final de destino do proxy de API. Para ver detalhes de utilização e exemplos, consulte a referência de configuração do proxy de API.

Contextos suportados do símbolo de autenticação Google

O elemento <Authentication> tem duas configurações de subelementos: <GoogleAccessToken> ou <GoogleIDToken>. A tabela seguinte mostra os contextos em que estes elementos são suportados:

Usados em GoogleAccessToken GoogleIDToken
Política AssignMessage Suportado Suportado
Política de textos destacados de serviços Suportado Suportado
Política de textos destacados externos Não suportado Suportado
TargetEndpoint Suportado Suportado

Passos de implementação

Esta secção explica como implementar um proxy de API que usa a autenticação Google para chamar serviços Google segmentados ou serviços alojados personalizados. Explicamos os passos de implementação do Apigee e do Apigee Hybrid separadamente.

Implemente no Apigee

Os passos seguintes explicam como implementar um proxy de API no Apigee, onde o proxy está configurado para fazer chamadas autenticadas para serviços Google ou serviços alojados personalizados. Os passos partem do princípio de que já criou o proxy e que este inclui um elemento <Authentication> num dos contextos suportados indicados.

  1. Crie uma conta de serviço Google no mesmo Google Cloud projeto onde a sua organização do Apigee foi criada. Tem de indicar o nome desta conta de serviço quando implementar um proxy de API que esteja configurado para usar a autenticação Google. Os tokens OAuth gerados representam a conta de serviço. Pode criar a conta de serviço na Google Cloud consola ou com o comando gcloud. Consulte o artigo Criar e gerir contas de serviço.
  2. Conceda ao utilizador que vai fazer a implementação (o implementador) a autorização iam.serviceAccounts.actAs na conta de serviço. Consulte também Acerca das autorizações da conta de serviço. Google Cloud
    gcloud iam service-accounts add-iam-policy-binding \
    SA_NAME@PROJECT_ID.iam.gserviceaccount.com \
    --member="MEMBER" \
      --role="roles/iam.serviceAccountUser"
    
  3. Onde:

    • PROJECT_ID: o ID do projeto. O ID é igual ao nome da sua organização.
    • SA_NAME: o nome que indicou quando criou a conta de serviço.
    • MEMBER: o membro ao qual adicionar a associação. Deve estar no formato user|group|serviceAccount:email ou domain:domain.
  4. Conceda à conta de serviço as autorizações necessárias para comunicar com os serviços Google segmentados. Por exemplo, se quiser chamar o serviço Google Logging, esta conta de serviço tem de incluir as autorizações necessárias para comunicar com esse serviço. Veja também Compreender as funções.
  5. Antes de implementar um proxy de API configurado para usar a autenticação Google, precisa do seguinte:
    • O nome da conta de serviço que criou anteriormente. Por exemplo: SA_NAME@PROJECT_ID.iam.gserviceaccount.com
    • Enquanto utilizador que realiza a implementação (o implementador), já tem de ter ou receber a autorização iam.serviceAccounts.actAs na conta de serviço. Consulte o artigo Conceder, alterar e revogar o acesso a recursos.
  6. Implemente o proxy de API que contém a configuração de autenticação Google que implementou. Pode usar a API ou a IU do Apigee para implementar o proxy. Para saber mais, consulte o artigo Implementar um proxy de API.
    • Se usar a IU, é-lhe pedido que indique um nome de conta de serviço. Use o nome da conta de serviço do proxy que criou no passo 1. Por exemplo: SA_NAME@PROJECT_ID.iam.gserviceaccount.com.

    • Se preferir implementar o proxy através da API de implementação do Apigee, segue-se um exemplo de um comando cURL que pode usar. Repare que o comando inclui um nome de conta de serviço como parâmetro de consulta. Este é o nome da conta de serviço que criou no passo 1:
      curl -H "Authorization: Bearer $TOKEN" \
      "https://apigee.googleapis.com/v1/organizations/ORG_NAME/environments/ENV_NAME/apis/apiproxy/revisions/2/deployments?serviceAccount=SA_NAME@PROJECT_ID.iam.gserviceaccount.com" \
      -H "Content-Type: application/json" -X POST

      Onde:

      • TOKEN: um símbolo OAuth que tem de obter em troca das suas credenciais da Google. Para ver detalhes, consulte o artigo Obter uma chave de acesso OAuth 2.0.
      • ORG_NAME: o nome da sua organização Apigee.
      • ENV_NAME: o nome do ambiente para implementar o proxy de API.
      • SA_NAME: o nome que indicou quando criou a conta de serviço.
      • PROJECT_ID: o seu Google Cloud ID do projeto (igual ao nome da organização).
  7. Quando a implementação estiver concluída, teste o proxy de API para se certificar de que o serviço Google devolve a resposta esperada.

Implemente no Apigee Hybrid

Os passos seguintes explicam como implementar no Apigee hybrid um proxy de API configurado para fazer chamadas autenticadas aos serviços Google. Os passos partem do princípio de que já criou o proxy e que este inclui um elemento <Authentication> num dos contextos suportados indicados.

  1. Crie uma conta de serviço e uma chave para o componente runtime do Apigee hybrid através de um dos seguintes métodos:
    • Use a ferramenta create-service-account fornecida com o Apigee hybrid para criar uma conta de serviço apigee-runtime. A ferramenta cria a conta de serviço e devolve uma chave de conta de serviço. Consulte o comando create-service-account para ver detalhes.
    • Crie a conta de serviço na Google Cloud consola ou com o comando gcloud. Consulte o artigo Criar e gerir contas de serviço. Para obter a chave de conta de serviço, consulte o artigo Criar e gerir chaves de contas de serviço.
  2. Abra o ficheiro overrides.yaml e especifique o caminho para o ficheiro de chave da conta de serviço para cada ambiente que requer a capacidade de autenticação Google:
    envs:
      - name: "ENVIRONMENT_NAME"
        serviceAccountPaths:
          runtime: "KEY_FILE_PATH"

    Por exemplo:

    envs:
      - name: "test"
        serviceAccountPaths:
          runtime: "./service_accounts/my_runtime_sa.json"
  3. Aplique o ficheiro de substituições ao cluster através do Helm:
    helm upgrade ENV_NAME apigee-env/ \
      --namespace APIGEE_NAMESPACE \
      --set env=ENV_NAME \
      --atomic \
      -f overrides.yaml
  4. Crie uma segunda conta de serviço, que denominamos conta de serviço proxy. Esta conta de serviço tem de estar no mesmo projeto do Google Cloud que usou para criar a sua organização do Apigee. Tem de indicar o endereço de email desta conta de serviço quando implementar um proxy de API configurado para usar a autenticação Google. Os tokens OAuth gerados representam a conta de serviço.
  5. Conceda ao utilizador que vai fazer a implementação (o implementador) a autorização iam.serviceAccounts.actAs na conta de serviço. Consulte também Acerca das autorizações da conta de serviço. Google Cloud
    gcloud iam service-accounts add-iam-policy-binding \
    SA_NAME@PROJECT_ID.iam.gserviceaccount.com \
    --member="MEMBER" \
      --role="roles/iam.serviceAccountUser"
    
  6. Onde:

    • PROJECT_ID: o ID do projeto. O ID é igual ao nome da sua organização.
    • SA_NAME: o nome que indicou quando criou a conta de serviço.
    • MEMBER: o membro ao qual adicionar a associação. Deve estar no formato user|group|serviceAccount:email ou domain:domain.
  7. Conceda à conta de serviço do proxy as autorizações necessárias para comunicar com os seus serviços Google segmentados. Por exemplo, se quiser chamar o serviço Google Logging, esta conta de serviço tem de incluir as autorizações necessárias para comunicar com esse serviço. Veja também Compreender as funções.
  8. Certifique-se de que o tempo de execução tem a capacidade de usar a identidade da conta de serviço do proxy. Para fornecer esta capacidade, conceda à conta de serviço runtime a função iam.serviceAccountTokenCreator na conta de serviço proxy. Consulte também Acerca das autorizações da conta de serviço. Por exemplo:
    gcloud iam service-accounts add-iam-policy-binding \
    PROXY_SA_NAME@PROJECT_ID.iam.gserviceaccount.com \
    --member=serviceAccount:RUNTIME_SA_NAME@PROJECT_ID.iam.gserviceaccount.com \
    --role=roles/iam.serviceAccountTokenCreator
    

    Onde:

    • PROJECT_ID: o ID do projeto. O ID é igual ao nome da sua organização. Tenha em atenção que não teve de usar o projeto associado à sua organização para criar a conta de serviço de tempo de execução. Certifique-se de que usa os IDs dos projetos corretos neste comando.
    • PROXY_SA_NAME: o ID da conta de serviço do proxy.
    • RUNTIME_SA_NAME: o ID da conta de serviço de runtime.
  9. Antes de implementar um proxy de API configurado para usar a autenticação Google, precisa do seguinte:
    • O nome da conta de serviço do proxy que criou anteriormente. Por exemplo: PROXY_SA_NAME@PROJECT_ID.iam.gserviceaccount.com
    • Enquanto utilizador que realiza a implementação, já tem de ter ou receber a autorização iam.serviceAccounts.actAs no projeto onde a organização do Apigee é aprovisionada. Google Cloud Consulte Conceder, alterar e revogar o acesso a recursos.
  10. Implemente o proxy de API que contém a configuração de autenticação Google que implementou. Pode usar a API ou a IU do Apigee para implementar o proxy. Para saber mais, consulte o artigo Implementar um proxy de API.
    • Se usar a IU, é-lhe pedido que indique um nome de conta de serviço. Use o nome da conta de serviço do proxy que criou anteriormente. Por exemplo: PROXY_SA_NAME@PROJECT_ID.iam.gserviceaccount.com.

    • Se preferir implementar o proxy através da API de implementação do Apigee, segue-se um exemplo de um comando cURL que pode usar. Repare que o comando inclui um nome de conta de serviço como parâmetro de consulta. Este é o nome da conta de serviço do proxy:
      curl -H "Authorization: Bearer $TOKEN" \
      "https://apigee.googleapis.com/v1/organizations/ORG_NAME/environments/ENV_NAME/apis/apiproxy/revisions/2/deployments?serviceAccount=PROXY_SA_NAME@PROJECT_ID.iam.gserviceaccount.com" \
      -H "Content-Type: application/json" -X POST

      Onde:

      • TOKEN: um símbolo OAuth que tem de obter em troca das suas credenciais da Google. Para ver detalhes, consulte o artigo Obter uma chave de acesso OAuth 2.0.
      • ORG_NAME: o nome da sua organização Apigee.
      • ENV_NAME: o nome do ambiente para implementar o proxy de API.
      • PROXY_SA_NAME: o nome da conta de serviço do proxy.
      • PROJECT_ID: o seu Google Cloud ID do projeto (igual ao nome da organização).
  11. Quando a implementação estiver concluída, teste o proxy de API para se certificar de que o serviço Google devolve a resposta esperada.

Acerca das autorizações da conta de serviço

Para configurar um proxy de API para usar a autenticação Google, tem de criar uma conta de serviço, conforme descrito na tabela seguinte. Consulte também Criar e gerir contas de serviço.

Conta de serviço Obrigatório para Descrição
Proxy Apigee e Apigee Hybrid

Tem as autorizações necessárias para que um proxy de API faça chamadas autenticadas para serviços Google segmentados.

  • Tem de ser criado no mesmo Google Cloud projeto que a sua organização do Apigee.
  • O utilizador que realiza a implementação (o implementador) tem de ter ou receber a autorização iam.serviceAccounts.actAs na conta de serviço do proxy.
  • Tem de incluir as autorizações necessárias para falar com serviços Google de destino específicos. Por exemplo, se quiser chamar o serviço Google Logging, esta conta de serviço tem de incluir as autorizações necessárias para comunicar com esse serviço. Veja também Compreender as funções.
  • Tem de indicar o nome da conta de serviço quando implementar o proxy que usa a autenticação Google.
Tempo de execução Apenas Apigee Hybrid

Permite que o tempo de execução do Apigee gere tokens para autenticação em serviços Google pedidos por um proxy de API. Esta conta de serviço "faz-se passar por" a conta de serviço específica do proxy para fazer chamadas autenticadas em seu nome.

  • Para poder usar a identidade da conta de serviço proxy e criar tokens, a conta de serviço runtime tem de receber a função roles/iam.serviceAccountTokenCreator na conta de serviço proxy. Consulte o artigo Faça a gestão do acesso a contas de serviço.