Como configurar o ambiente de desenvolvimento

Este documento descreve como configurar seu ambiente de desenvolvimento de gateway de API.

Pré-requisitos

Antes de criar uma API no Gateway de API, verifique se você tem:

  • criou um projeto do Google Cloud Platform em que você tem o papel Editor ou Proprietário. Após a implantação inicial, conceda o papel mais restritivo Editor de configuração do serviço a um usuário, grupo ou conta de serviço.

  • preparou a Google Cloud CLI conforme descrito abaixo.

  • ativou os serviços necessários do Google conforme descrito abaixo;

  • Configure a conta de serviço usada para criar configurações de API, conforme descrito abaixo.

Como preparar a Google Cloud CLI para implantação

Para preparar gcloud para a implantação:

  1. Instale e inicialize a gcloud CLI.
  2. Atualize a gcloud CLI:
    gcloud components update
  3. Verifique se a gcloud CLI está autorizada a acessar seus dados e serviços:
    gcloud auth login

    Uma nova guia do navegador será aberta e você precisará escolher uma conta.

  4. Defina o projeto padrão. Substitua PROJECT_ID pelo ID do projeto do Google Cloud.
    gcloud config set project PROJECT_ID 

Como ativar serviços obrigatórios

A API Gateway requer a ativação dos seguintes serviços do Google:

Nome Nome
apigateway.googleapis.com API Gateway
servicemanagement.googleapis.com Service Management API
servicecontrol.googleapis.com API Service Control

Para confirmar que os serviços obrigatórios estão ativados:

gcloud services list

Se você não encontrar os serviços necessários listados, ative-os:

gcloud services enable apigateway.googleapis.com
gcloud services enable servicemanagement.googleapis.com
gcloud services enable servicecontrol.googleapis.com

Para mais informações sobre os serviços do gcloud, consulte serviços gcloud.

Como configurar uma conta de serviço

Uma configuração de API implantada em um gateway é executada com as permissões associadas à conta de serviço do gateway.

Como prática recomendada, crie uma conta de serviço separada no mesmo projeto que você usa para o gateway de API. Em seguida, atribua à conta de serviço apenas as permissões necessárias para acessar o serviço de back-end. Assim, você limita as permissões associadas à configuração da API.

Para o gateway de API, o usuário que cria ou atualiza uma configuração ou um gateway de API precisa da permissão iam.serviceAccounts.actAs no objeto da conta de serviço. Essa permissão está incluída no papel de Usuário da conta de serviço.

Adicione o papel e a permissão à conta de serviço do usuário com o seguinte comando:

gcloud iam service-accounts add-iam-policy-binding SERVICE_ACCOUNT_EMAIL \
  --member user:USER_EMAIL \
  --role roles/iam.serviceAccountUser

em que:

  • SERVICE_ACCOUNT_EMAIL é o e-mail da conta de serviço no formato SA_NAME@PROJECT_ID.iam.gserviceaccount.com.
  • USER_EMAIL é o endereço de e-mail do usuário.

Exemplo:

gcloud iam service-accounts add-iam-policy-binding my-service-account@my-project.iam.gserviceaccount.com \
  --member user:myemail@email.com \
  --role roles/iam.serviceAccountUser

Além disso, a conta de serviço do gateway requer as permissões necessárias para acessar o serviço de back-end. Exemplo:

  • Para um back-end do Cloud Functions, a conta de serviço precisa ter a função de Invocador do Cloud Functions.
  • Para um back-end do Cloud Run, a conta de serviço precisa receber o papel de Invocador do Cloud Run.
  • Para um back-end do App Engine, siga as etapas em Como configurar o acesso do IAP para conceder o papel Usuário do app da Web protegido pelo IAP à conta de serviço associada ao gateway.

Ao limitar as permissões associadas à configuração da API, você protege melhor seus sistemas de back-end. Para mais informações, consulte a documentação do Gerenciamento de identidade e acesso (IAM, na sigla em inglês).

Depois de criar a conta de serviço, use a opção --backend-auth-service-account para especificar o endereço de e-mail dessa conta de serviço ao criar uma configuração de API:

gcloud api-gateway api-configs create CONFIG_ID \
  --api=API_ID --openapi-spec=API_DEFINITION --project=PROJECT_ID \
  --backend-auth-service-account=SERVICE_ACCOUNT_EMAIL

Consulte Como criar uma API para mais informações sobre como criar configurações de API.

Como usar uma conta de serviço padrão

Alguns produtos do GCP definem uma conta de serviço padrão. Por exemplo, se você estiver usando o Compute Engine e tiver ativado a API Compute Engine para o projeto, uma conta de serviço padrão do Compute Engine será criada. A conta de serviço padrão pode ser identificada pelo endereço de e-mail:

PROJECT_NUMBER-compute@developer.gserviceaccount.com

Se você atribuir as permissões necessárias à conta de serviço padrão, poderá omitir a opção --backend-auth-service-account ao criar uma configuração de API:

gcloud api-gateway api-configs create CONFIG_ID \
  --api=API_ID --openapi-spec=API_DEFINITION --project=PROJECT_ID

Para mais informações, consulte Como usar a conta de serviço padrão do Compute Engine.

Como usar o OpenID Connect

As solicitações do gateway de API para serviços de back-end podem usar a autenticação. Essas solicitações são protegidas por meio de tokens do OpenID Connect (OIDC) assinados pela conta de serviço do gateway. Confirme se o serviço de back-end está configurado corretamente para aceitar tokens OIDC para autenticação e autorização. As funções do Cloud Run, o Cloud Run e o Identity-Aware Proxy (IAP) oferecem essa opção.

A seguir