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.
- 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. - 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 Cloudgcloud iam service-accounts add-iam-policy-binding \ SA_NAME@PROJECT_ID.iam.gserviceaccount.com \ --member="MEMBER" \ --role="roles/iam.serviceAccountUser"
- 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
oudomain:domain
. - 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.
- 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.
- O nome da conta de serviço que criou anteriormente. Por exemplo:
- 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).
- 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:
- 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.
Onde:
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.
- 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çoapigee-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.
- Use a ferramenta
- 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"
- 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
- 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.
- 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 Cloudgcloud iam service-accounts add-iam-policy-binding \ SA_NAME@PROJECT_ID.iam.gserviceaccount.com \ --member="MEMBER" \ --role="roles/iam.serviceAccountUser"
- 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.
- 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.
- 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.
- 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.
- O nome da conta de serviço do proxy que criou anteriormente. Por exemplo:
- 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).
- 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:
- 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.
Onde:
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.
|
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.
|