Proteja o tráfego para um serviço com a consola Google Cloud

Esta página mostra como implementar uma API no API Gateway para proteger o tráfego para um serviço de back-end.

Siga os passos para implementar uma nova API para aceder a um serviço de back-end nas funções do Cloud Run através da Google Cloud consola. Este início rápido também descreve como usar uma chave da API para proteger o seu back-end contra acesso não autorizado.

Antes de começar

  1. Na Google Cloud consola, aceda à página API Gateway.

    Aceda ao API Gateway

  2. O API Gateway requer que ative os seguintes serviços Google:

    Nome Título
    apigateway.googleapis.com API do API Gateway
    servicemanagement.googleapis.com Service Management API
    servicecontrol.googleapis.com Service Control API

    Se não tiver ativado anteriormente estes serviços para o projeto que selecionar, é-lhe pedido que o faça.

  3. Confirme se a faturação está ativada para o seu projeto.

    Saiba como ativar a faturação

Implementar um back-end de API

O API Gateway está localizado à frente de um serviço de back-end implementado e processa todos os pedidos recebidos. Neste início rápido, o API Gateway encaminha as chamadas recebidas para um back-end de função do Cloud Run denominado helloGET que contém a função apresentada da seguinte forma:

/**
 * HTTP Cloud Function.
 * This function is exported by index.js, and is executed when
 * you make an HTTP request to the deployed function's endpoint.
 *
 * @param {Object} req Cloud Function request context.
 *                     More info: https://expressjs.com/en/api.html#req
 * @param {Object} res Cloud Function response context.
 *                     More info: https://expressjs.com/en/api.html#res
 */

exports.helloGET = (req, res) => {
  res.send('Hello World!');
};

Siga os passos no Início rápido: usar a CLI Google Cloud para transferir o código de exemplo das funções do Cloud Run e implementar o serviço de back-end das funções do Cloud Run.

Criar uma definição de API

O API Gateway usa uma definição de API para encaminhar chamadas para o serviço de back-end. Pode usar uma especificação OpenAPI que contenha anotações especializadas para definir o comportamento escolhido do API Gateway. A especificação OpenAPI para este início rápido contém instruções de encaminhamento para o back-end da função do Cloud Run:

# openapi2-functions.yaml
swagger: '2.0'
info:
  title: API_ID optional-string
  description: Sample API on API Gateway with a Google Cloud Functions backend
  version: 1.0.0
schemes:
  - https
produces:
  - application/json
paths:
  /hello:
    get:
      summary: Greet a user
      operationId: hello
      x-google-backend:
        address: https://us-central1-PROJECT_ID.cloudfunctions.net/helloGET
      responses:
        '200':
          description: A successful response
          schema:
            type: string

Para usar a especificação OpenAPI apresentada no exemplo anterior para definir a sua API:

  1. Na linha de comandos, crie um novo ficheiro com o nome openapi2-functions.yaml.

  2. Copie e cole o conteúdo da especificação OpenAPI apresentada no exemplo anterior no ficheiro recém-criado.

  3. Edite o ficheiro da seguinte forma:

    1. No campo title, substitua API_ID pelo nome da sua API (que vai ser criada no passo seguinte) e substitua optional-string por uma breve descrição à sua escolha. O valor deste campo é usado quando são geradas chaves de API que concedem acesso a esta API. Consulte os requisitos de ID da API para ver as diretrizes de nomenclatura de IDs da API.
    2. No campo address, substitua PROJECT_ID pelo nome do seu Google Cloud projeto.

Criar um gateway

Agora, tem tudo pronto para criar e implementar um gateway no API Gateway.

  1. Abra a página do API Gateway na Google Cloud consola.

    Aceder ao API Gateway

  2. Clique em Criar gateway.

  3. Na secção API:

    1. Pode optar por criar uma nova API ou selecionar uma API existente no menu pendente Selecionar uma API. Para este tutorial, selecione Criar uma nova API.
    2. Introduza o Nome a apresentar da sua API.
    3. Introduza o ID da API para a sua API.
    4. (Opcional) Adicione etiquetas à sua API através de um formato de chave/valor. Para adicionar mais de uma etiqueta, clique em Adicionar etiqueta e introduza valores adicionais.
  4. Na secção Configuração da API:

    1. Pode optar por criar uma nova configuração da API ou selecionar uma configuração da API existente no menu pendente Selecionar uma configuração. Para este tutorial, selecione Criar uma nova configuração da API.
    2. Use o explorador de ficheiros para carregar o openapi2-functions.yaml usado para definir a sua API.
    3. Introduza um nome a apresentar para a configuração da API.
    4. Selecione uma conta de serviço na lista pendente. A conta de serviço que selecionar vai ser usada como identidade para o API Gateway.

    5. (Opcional) Adicione etiquetas à configuração da API através de um formato de chave/valor. Para adicionar mais de uma etiqueta, clique em Adicionar etiqueta e introduza valores adicionais.

  5. Na secção Detalhes do gateway:

    1. Introduza o nome a apresentar da gateway. O URL para o gateway é gerado automaticamente.
    2. Selecione a localização da entrada no menu pendente.
    3. (Opcional) Adicione etiquetas ao seu gateway através de um formato de chave/valor. Para adicionar mais de uma etiqueta, clique em Adicionar etiqueta e introduza valores adicionais.
  6. Clique em Criar gateway.

Esta ação implementa a configuração da API num gateway recém-criado. A implementação de uma configuração da API num gateway define um URL externo que os clientes da API podem usar para aceder à sua API.

A operação pode demorar alguns minutos a ser concluída. Para verificar o estado do processo de criação e implementação, pode clicar no ícone Notificação na barra de navegação principal para apresentar uma notificação de estado, conforme mostrado na imagem seguinte:

Painel de notificações para notificações de estado

Após a conclusão com êxito, pode ver detalhes sobre a entrada na página de destino Entradas.

Aceder ao API Gateway

Tome nota do URL do gateway. Isto é usado para testar a sua implementação no passo seguinte.

Testar a implementação da API

Agora, pode enviar pedidos para a sua API através do URL gerado após a implementação da sua entrada.

No navegador, introduza o seguinte URL, em que:

  • GATEWAY_URL especifica o URL do gateway implementado.
  • hello é o caminho especificado na configuração da API.
https://GATEWAY_URL/hello

Por exemplo:

https://my-gateway-a12bcd345e67f89g0h.uc.gateway.dev/hello

A mensagem Hello World! deve ser apresentada no navegador.

Criou e implementou um gateway de API com êxito!

Proteger o acesso através da utilização de uma chave da API

Para proteger o acesso ao seu back-end da API, pode gerar uma chave da API associada ao seu projeto e conceder a essa chave acesso para chamar a sua API. Consulte o artigo Restringir o acesso à API com chaves da API para mais informações.

Se ainda não tiver uma chave da API associada ao Google Cloud projeto que está a usar neste guia de início rápido, pode adicionar uma seguindo os passos em Criar uma chave da API.

Para proteger o acesso ao seu gateway através de uma chave da API:

  1. Ative o suporte da chave da API para o seu serviço:
    1. Na Google Cloud consola, aceda a APIs e serviços > Biblioteca.
    2. Na barra de pesquisa, introduza o nome do serviço gerido da API que acabou de criar. Pode encontrar este valor na coluna Serviço gerido da sua API na página de destino das APIs. Por exemplo:
      my-api-123abc456def1.apigateway.my-project.cloud.goog
    3. Na página de destino do seu serviço, clique em Ativar.
  2. Modifique a especificação OpenAPI usada para criar a configuração da API de modo a incluir instruções para aplicar uma política de segurança de validação de chaves da API em todo o tráfego. Adicione o security tipo e securityDefinitions, conforme mostrado:
        # openapi2-functions.yaml
        swagger: '2.0'
        info:
          title: API_ID optional-string
          description: Sample API on API Gateway with a Google Cloud Functions backend
          version: 1.0.0
        schemes:
          - https
        produces:
          - application/json
        paths:
          /hello:
            get:
              summary: Greet a user
              operationId: hello
              x-google-backend:
                address:https://us-central1.PROJECT_ID.cloudfunctions.net/helloGET
              security:
              - api_key: []
              responses:
                '200':
                  description: A successful response
                  schema:
                    type: string
        securityDefinitions:
          # This section configures basic authentication with an API key.
          api_key:
            type: "apiKey"
            name: "key"
            in: "query"
        
    O securityDefinition configura a sua API para exigir uma chave da API transmitida como um parâmetro de consulta denominado key quando solicita acesso a todos os caminhos definidos na especificação.
  3. Crie e implemente uma nova configuração de API no seu gateway existente:
    1. Aceda à página de destino Gateways.

      Aceder ao API Gateway

    2. Selecione o gateway na lista para ver os detalhes.
    3. Clique em Editar para abrir o painel de configuração do gateway.
    4. Na secção Configuração da API:
      1. Selecione Criar uma nova configuração de API no menu pendente disponível.
      2. Carregue a especificação OpenAPI modificada através do explorador de ficheiros.
      3. Introduza o nome a apresentar da nova configuração da API.
      4. Selecione uma conta de serviço na lista pendente. A conta de serviço que selecionar vai ser usada como identidade para o API Gateway.
      5. (Opcional) Adicione etiquetas à configuração da API através de um formato de chave/valor. Para adicionar mais do que uma etiqueta, clique em Adicionar etiqueta e introduza valores adicionais.
    5. Clique em Atualizar.

Testar a chave da API

Depois de criar e implementar a API modificada, experimente fazer um pedido à mesma.

No navegador, introduza o seguinte URL, em que:

  • GATEWAY_URL especifica o URL do gateway implementado.
  • hello é o caminho especificado na configuração da API.
https://GATEWAY_URL/hello

Por exemplo:

https://my-gateway-a12bcd345e67f89g0h.uc.gateway.dev/hello

Isto deve resultar no seguinte erro:

UNAUTHENTICATED:Method doesn't allow unregistered callers (callers without established identity). Please use API Key or other form of API consumer identity to call this API.

Agora, no navegador, introduza o seguinte URL, onde:

https://GATEWAY_URL/hello?key=API_KEY

Agora, deve ver a app Hello World! no seu navegador.

Parabéns! Protegeu com êxito o back-end da API com um gateway de API. Agora, pode começar a integrar novos clientes da API gerando chaves da API adicionais.

Acompanhamento da atividade da API

  1. Veja os gráficos de atividade da sua API na página API Gateway na Google Cloud consola. Clique na sua API para ver os respetivos gráficos de atividade na página Vista geral. Os pedidos podem demorar alguns momentos a ser refletidos nos gráficos.

  2. Consulte os registos de pedidos da sua API na página Explorador de registos. Pode encontrar um link para a página do Explorador de registos na página do API Gateway na Google Cloud consola.

    Aceder ao API Gateway

    Depois de aceder à página do API Gateway:

    1. Selecione a API a ver.
    2. Clique no separador Detalhes.
    3. Clique no link em Registos.

Limpar

Para evitar incorrer em custos na sua conta do Google Cloud pelos recursos usados neste início rápido, pode:

Em alternativa, também pode eliminar o Google Cloud projeto usado para este tutorial.

O que se segue?