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
Na Google Cloud consola, aceda à página API Gateway.
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.
Confirme se a faturação está ativada para o seu projeto.
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:
Na linha de comandos, crie um novo ficheiro com o nome
openapi2-functions.yaml
.Copie e cole o conteúdo da especificação OpenAPI apresentada no exemplo anterior no ficheiro recém-criado.
Edite o ficheiro da seguinte forma:
- 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. - No campo
address
, substitua PROJECT_ID pelo nome do seu Google Cloud projeto.
- No campo
Criar um gateway
Agora, tem tudo pronto para criar e implementar um gateway no API Gateway.
Abra a página do API Gateway na Google Cloud consola.
Clique em Criar gateway.
Na secção API:
- 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.
- Introduza o Nome a apresentar da sua API.
- Introduza o ID da API para a sua API.
- (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.
Na secção Configuração da API:
- 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.
- Use o explorador de ficheiros para carregar o
openapi2-functions.yaml
usado para definir a sua API. - Introduza um nome a apresentar para a configuração da API.
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.
(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.
Na secção Detalhes do gateway:
- Introduza o nome a apresentar da gateway. O URL para o gateway é gerado automaticamente.
- Selecione a localização da entrada no menu pendente.
- (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.
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:
Após a conclusão com êxito, pode ver detalhes sobre a entrada na página de destino Entradas.
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:
- Ative o suporte da chave da API para o seu serviço:
- Na Google Cloud consola, aceda a APIs e serviços > Biblioteca.
- 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
- Na página de destino do seu serviço, clique em Ativar.
- 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 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 sua API para exigir uma chave da API transmitida como um parâmetro de consulta denominadokey
quando solicita acesso a todos os caminhos definidos na especificação. - Crie e implemente uma nova configuração de API no seu gateway existente:
- Aceda à página de destino Gateways.
- Selecione o gateway na lista para ver os detalhes.
- Clique em Editar para abrir o painel de configuração do gateway.
- Na secção Configuração da API:
- Selecione Criar uma nova configuração de API no menu pendente disponível.
- Carregue a especificação OpenAPI modificada através do explorador de ficheiros.
- Introduza o nome a apresentar da nova configuração da API.
- 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.
- (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.
- 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:
- GATEWAY_URL especifica o URL do gateway implementado.
hello
é o caminho especificado na configuração da API.- API_KEY especifica a chave da API que criou em Proteger o acesso através de uma chave da API.
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
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.
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.
Depois de aceder à página do API Gateway:
- Selecione a API a ver.
- Clique no separador Detalhes.
- 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?
- Saiba mais acerca do API Gateway
- Siga os passos em Configurar o ambiente de programação