Proteger o tráfego de um serviço com o console do Google Cloud
Nesta página, mostramos como implantar uma API no gateway de API para proteger o tráfego em um serviço de back-end.
Siga as etapas para implantar uma nova API e acessar um serviço de back-end no Cloud Run functions usando o console do Google Cloud. Neste guia de início rápido, também descrevemos como usar uma chave de API para proteger o back-end contra acessos não autorizados.
Antes de começar
No console do Google Cloud, acesse a página API Gateway.
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 Caso ainda não tenha ativado esses serviços para o projeto selecionado, você receberá uma solicitação para fazer isso.
Confirme se o faturamento está ativado no projeto.
Como implantar um back-end de API
O gateway de API fica na frente de um serviço de back-end implantado e processa todas as solicitações recebidas. Neste guia de início rápido, o API Gateway encaminha as chamadas recebidas para um back-end de função do Cloud Run chamado helloGET
, que contém a função mostrada da seguinte maneira:
/** * 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 as etapas no Guia de início rápido: como usar a Google Cloud CLI para fazer o download do código de amostra das funções do Cloud Run e implantar o serviço de back-end da função do Cloud Run.
Como criar uma definição de API
A API Gateway usa uma definição de API para rotear chamadas para o serviço de back-end. É possível usar uma especificação OpenAPI que contenha anotações especializadas para definir o comportamento escolhido do gateway de API. A especificação OpenAPI para este guia de início rápido contém instruções de roteamento 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 mostrada no exemplo anterior para definir sua API:
Na linha de comando, crie um novo arquivo chamado
openapi2-functions.yaml
.Copie e cole o conteúdo da especificação OpenAPI mostrada no exemplo anterior no arquivo recém-criado.
Edite o arquivo da seguinte forma:
- No campo
title
, substitua API_ID pelo nome da API (que será criado na próxima etapa) e optional-string por uma breve descrição da sua escolha. O valor desse campo é usado ao produzir chaves de API que concedem acesso a essa API. Consulte os requisitos de ID da API para ver as diretrizes de nomenclatura. - No campo
address
, substitua PROJECT_ID pelo nome do seu projeto do Google Cloud.
- No campo
Como criar um gateway
Agora você já pode criar e implantar um gateway no gateway de API.
Abra a página "API Gateway" no console do Google Cloud.
Clique em Criar gateway.
Na seção API:
- É possível criar uma nova API ou selecionar uma atual na lista suspensa Selecionar uma API. Para este tutorial, selecione Criar uma nova API.
- Insira o Nome de exibição da sua API.
- Digite o ID da API.
- (Opcional) Adicione rótulos à API usando um formato de chave-valor. Para adicionar mais de um rótulo, clique em Adicionar rótulo e insira valores adicionais.
Na seção Configuração da API:
- É possível criar uma nova configuração de API ou selecionar uma existente na lista suspensa Selecionar uma configuração. Para este tutorial, selecione Criar uma nova configuração de API.
- Use o navegador de arquivos para fazer upload do
openapi2-functions.yaml
usado para definir a API. - Insira um nome de exibição para sua configuração de API.
Selecione uma conta de serviço na lista suspensa. A conta de serviço selecionada será usada como identidade para o gateway de API.
(Opcional) Adicione rótulos à configuração da API usando um formato de chave-valor. Para adicionar mais de um rótulo, clique em Adicionar rótulo e insira valores adicionais.
Na seção Detalhes do gateway:
- Insira o nome de exibição do stream. O URL do gateway é gerado automaticamente.
- Selecione o local do gateway no menu suspenso.
- (Opcional) Adicione rótulos ao gateway usando um formato de chave-valor. Para adicionar mais de um rótulo, clique em Adicionar rótulo e insira valores adicionais.
Clique em Criar gateway.
Isso implanta a configuração da API em um gateway recém-criado. A implantação de uma configuração de API em um gateway define um URL externo que os clientes da API podem usar para acessar sua API.
Isso pode levar vários minutos. Para verificar o status do processo de criação e implantação, clique no ícone Notificação na barra de navegação principal para exibir uma notificação de status, conforme mostrado na imagem a seguir:
Após a conclusão, você poderá ver os detalhes sobre o gateway na página de destino dos gateways.
Anote o URL do gateway. Isso é usado para testar sua implantação na próxima etapa.
Como testar sua implantação de API
Agora é possível enviar solicitações para a API usando o URL gerado durante a implantação do gateway.
No navegador, digite o seguinte URL:
- GATEWAY_URL especifica o URL do gateway implantado.
hello
é o caminho especificado nas configurações da API;
https://GATEWAY_URL/hello
Exemplo:
https://my-gateway-a12bcd345e67f89g0h.uc.gateway.dev/hello
A mensagem Hello World!
será exibida no navegador.
Você criou e implantou um gateway de API.
Como proteger o acesso usando uma chave de API
Para proteger o acesso ao back-end da API, gere uma chave associada ao seu projeto e conceda acesso para chamar a API. Consulte Como restringir o acesso à API com chaves de API para mais informações.
Se você ainda não tiver uma chave de API associada ao projeto do Google Cloud que está usando neste guia de início rápido, adicione uma seguindo as etapas em Criar uma chave de API.
Para proteger o acesso ao gateway usando uma chave de API:
- Ative o suporte à chave de API para seu serviço:
- No console do Google Cloud, acesse APIs e serviços > Biblioteca.
- Na barra de pesquisa, digite o nome do serviço gerenciado da API que você acabou de criar. Esse valor pode ser encontrado na coluna Serviço gerenciado da API na página de destino das APIs. Exemplo:
my-api-123abc456def1.apigateway.my-project.cloud.goog
- Na página de destino do serviço, clique em Ativar
- Modifique a especificação OpenAPI usada para criar a configuração da API e inclua instruções para aplicar uma política de segurança de validação de chave de API a todo o tráfego. Adicione o tipo
security
esecurityDefinitions
, conforme mostrado: O# 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"
securityDefinition
configura a API para exigir que uma chave de API seja passada como um parâmetro de consulta chamadokey
ao solicitar acesso a todos os caminhos definidos na especificação. - Crie e implante uma nova configuração de API no gateway atual:
- Acesse a página de destino "Gateways".
- Selecione o gateway na lista para conferir os detalhes.
- Clique em Edit para abrir o painel de configuração do gateway.
- Na seção Configuração da API:
- Selecione Criar uma configuração de API no menu suspenso disponível.
- Faça upload da especificação OpenAPI modificada usando o navegador de arquivos.
- Insira o nome de exibição da sua nova configuração de API.
- Selecione uma conta de serviço na lista suspensa. A conta de serviço selecionada será usada como a identidade do API Gateway.
- (Opcional) Adicione rótulos à configuração da API usando um formato de chave-valor. Para adicionar mais de um rótulo, clique em Adicionar rótulo e insira valores adicionais.
- Clique em Atualizar.
Como testar sua chave de API
Depois de criar e implantar a API modificada, faça uma solicitação a ela.
No navegador, digite o seguinte URL:
- GATEWAY_URL especifica o URL do gateway implantado.
hello
é o caminho especificado nas configurações da API;
https://GATEWAY_URL/hello
Exemplo:
https://my-gateway-a12bcd345e67f89g0h.uc.gateway.dev/hello
Isso deverá 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.
No navegador, digite o seguinte URL, em que:
- GATEWAY_URL especifica o URL do gateway implantado.
hello
é o caminho especificado nas configurações da API;- API_KEY especifica a chave de API criada em Como proteger o acesso usando uma chave de API.
https://GATEWAY_URL/hello?key=API_KEY
Agora você verá Hello World!
no navegador.
Parabéns! Você protegeu seu back-end da API com um gateway de API. Agora você pode começar a integrar novos clientes de API gerando chaves de API adicionais.
Rastrear a atividade da API
Confira os gráficos de atividades da API na página Gateway de API no Console do Google Cloud. Clique na sua API para conferir os gráficos de atividade na página Visão geral. Talvez leve alguns instantes para a solicitação aparecer nos gráficos.
Verifique os registros de solicitações da API na página "Visualizador de registros". O link para a página do Explorador de registros pode ser encontrado na página do Gateway de API no console do Google Cloud.
Na página "API Gateway", faça o seguinte
- Selecione a API a ser visualizada.
- Clique na guia Details.
- Clique no link em Registros.
Limpar
Para evitar cobranças na sua conta do Google Cloud pelos recursos usados neste guia de início rápido, faça o seguinte:
Se preferir, exclua o projeto do Google Cloud usado neste tutorial.
A seguir
- Saiba mais sobre o gateway de API.
- Siga as etapas do guia de configuração do ambiente de desenvolvimento.