Guía de inicio rápido: Protege el tráfico a un servicio con la Google Cloud consola
En esta página, se muestra cómo implementar una API en API Gateway para proteger el tráfico a un servicio de backend.
Sigue los pasos para implementar una API nueva y acceder a un servicio de backend en Cloud Run Functions con la consola de Google Cloud . En esta guía de inicio rápido, también se describe cómo usar una clave de API para proteger tu backend del acceso no autorizado.
Antes de comenzar
En la consola de Google Cloud , ve a la página API Gateway.
API Gateway requiere que habilites los siguientes servicios de Google:
Nombre Título apigateway.googleapis.comAPI de API Gateway servicemanagement.googleapis.comAPI de Administración de servicios servicecontrol.googleapis.comService Control API Si no habilitaste estos servicios anteriormente para el proyecto que seleccionaste, se te solicitará que lo hagas.
Confirma que la facturación esté habilitada para tu proyecto.
Implementa un backend de API
API Gateway se posiciona frente a un servicio de backend implementado y controla todas las solicitudes entrantes. En esta guía de inicio rápido, API Gateway enruta las llamadas entrantes a un backend de Cloud Run Function llamado helloGET que contiene la función de Node.js que se muestra a continuación.
const functions = require('@google-cloud/functions-framework'); // Register an HTTP function with the Functions Framework that will be executed // when you make an HTTP request to the deployed function's endpoint. functions.http('helloGET', (req, res) => { res.send('Hello World!'); });
Sigue los pasos de la Guía de inicio rápido: Usa Google Cloud CLI para descargar el código de muestra de las funciones de Cloud Run y, luego, implementar el servicio de backend de la función de Cloud Run. Tu administrador deberá otorgar roles adicionales a tu cuenta y a la cuenta de servicio de Cloud Build, como se describe en este inicio rápido.
Copia la URL de servicio que se muestra cuando se implementa la función de Cloud Run. La necesitarás cuando crees la configuración de la API en el siguiente paso.
Crea una configuración de API
API Gateway usa una configuración de API para enrutar llamadas al servicio de backend. Puedes usar una especificación de OpenAPI que contenga extensiones especializadas para definir el comportamiento elegido de API Gateway. Para obtener más detalles sobre las extensiones de OpenAPI compatibles, consulta lo siguiente:
La especificación de OpenAPI para esta guía de inicio rápido contiene instrucciones de enrutamiento al backend de la función de Cloud Run:
OpenAPI 2.0
# openapi-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: SERVICE_URL/helloGET responses: '200': description: A successful response schema: type: string
OpenAPI 3.x
# openapi-functions.yaml openapi: 3.0.4 info: title: API_ID optional-string description: Sample API on API Gateway with a Google Cloud Functions backend version: 1.0.0 # Define reusable components in x-google-api-management x-google-api-management: backends: functions_backend: address: SERVICE_URL/helloGET pathTranslation: APPEND_PATH_TO_ADDRESS protocol: "http/1.1" # Apply the backend configuration by referencing it by name. Set at the root so this applies to all operations unless overridden. x-google-backend: functions_backend paths: /hello: get: summary: Greet a user operationId: hello responses: '200': description: A successful response content: application/json: schema: type: string
Usa esta especificación de OpenAPI para definir tu API:
En la línea de comandos, crea un archivo nuevo llamado
openapi-functions.yaml.Copia y pega el contenido de la especificación de OpenAPI que se muestra en el ejemplo anterior en el archivo recién creado.
Edita el archivo de la siguiente manera:
- En el campo
title, reemplaza API_ID por el nombre de tu API (que crearás en el siguiente paso) y optional-string por una breve descripción de tu elección. El valor de este campo se usa cuando se generan claves de API que otorgan acceso a esta API. Consulta los requisitos del ID de API para conocer los lineamientos de nomenclatura del ID de API. - En el campo
address, reemplaza SERVICE_URL por la URL en la que se ejecuta el servicio de backend de la función de Cloud Run, que copiaste en el paso anterior.
- En el campo
Crea una puerta de enlace
Ahora estás listo para crear e implementar una puerta de enlace en API Gateway.
Abre la página de API Gateway en la consola de Google Cloud .
Haz clic en Crear puerta de enlace.
En la sección API, haz lo siguiente:
- Elige crear una API nueva o selecciona una existente en el menú desplegable Seleccionar una API. Para este instructivo, selecciona Crear una API nueva.
- Ingresa el Nombre visible de tu API.
- Ingresa el ID de la API de tu API.
- (Opcional) Agrega etiquetas a tu API con un formato clave:valor. Para agregar más de una etiqueta, haz clic en Agregar etiqueta y, luego, ingresa valores adicionales.
En la sección Configuración de API, haz lo siguiente:
- Elige crear una nueva configuración de API o seleccionar una existente en el menú desplegable Seleccionar una configuración. En este instructivo, selecciona Crear una nueva configuración de API.
- Usa el explorador de archivos para subir el archivo
openapi-functions.yamlque se usa para definir tu API. - Ingresa un nombre visible para la configuración de la API.
Selecciona una cuenta de servicio de la lista desplegable. La cuenta de servicio que selecciones se usará como identidad para API Gateway. Si no ves una cuenta de servicio en el menú desplegable, consulta Configura una cuenta de servicio para verificar que una cuenta de servicio esté habilitada para tu proyecto.
De forma opcional, agrega etiquetas a la configuración de tu API con el formato clave:valor. Para agregar más de una etiqueta, haz clic en Agregar etiqueta y, luego, ingresa valores adicionales.
En la sección Detalles de la puerta de enlace, haz lo siguiente:
- Ingresa el nombre visible de la puerta de enlace. La URL de la puerta de enlace se genera automáticamente.
- Selecciona la ubicación de la puerta de enlace en el menú desplegable.
- (Opcional) Agrega etiquetas a tu puerta de enlace con un formato clave:valor. Para agregar más de una etiqueta, haz clic en Agregar etiqueta y, luego, ingresa valores adicionales.
Haz clic en Crear puerta de enlace.
Esto implementa la configuración de la API en una puerta de enlace recién creada. La implementación de una configuración de API en una puerta de enlace define una URL externa que los clientes de API pueden usar para acceder a la API.
La operación puede tardar varios minutos en completarse. Para verificar el estado del proceso de creación y de implementación, haz clic en el ícono de Notificación en la barra de navegación principal para mostrar una notificación de estado, como se muestra en la siguiente imagen:

Cuando se complete correctamente, podrás ver los detalles de la puerta de enlace en la página de destino de Gateways.
Anota la URL de la puerta de enlace. La usarás para probar tu implementación en el siguiente paso.
Prueba tu implementación de la API
Ahora puedes enviar solicitudes a tu API mediante la URL generada después de la implementación de tu puerta de enlace.
En el navegador, ingresa la siguiente URL:
- GATEWAY_URL especifica la URL de la puerta de enlace implementada.
helloes la ruta de acceso que se especifica en la configuración de la API.
https://GATEWAY_URL/hello
Por ejemplo:
https://my-gateway-a12bcd345e67f89g0h.uc.gateway.dev/hello
El mensaje Hello World! debería aparecer en tu navegador.
Creaste e implementaste una API Gateway con éxito.
Protege el acceso con una clave de API
Para proteger el acceso al backend de la API con una clave de API, haz lo siguiente:
- Crea una clave de API asociada a tu proyecto.
- Crea e implementa una nueva configuración de API para proteger el acceso a la API con claves de API.
- Prueba tu clave de API
Consulta también Restringir el acceso a la API con claves de API.
Crea una clave de API
Si aún no tienes una clave de API asociada con el proyecto Google Cloud que usas en esta guía de inicio rápido, agrega una como se describe en Crea una clave de API.
Copia la cadena de clave que se muestra y mantenla segura. Este es el valor de la clave que usarás cuando pruebes tu clave de API.
Crea e implementa una nueva configuración de API
Para crear e implementar una nueva configuración de API que proteja el acceso a la API con claves de API, haz lo siguiente:
- Habilita tu servicio:
- En la consola de Google Cloud , ve a APIs y servicios > Biblioteca.
- En la barra de búsqueda, ingresa el nombre del servicio administrado de la API que acabas de crear. Puedes encontrar este valor en la columna Servicio administrado de tu API en la página de destino de las APIs. Por ejemplo:
my-api-123abc456def1.apigateway.my-project.cloud.goog
- En la página de destino de tu servicio, haz clic en Habilitar.
- Modifica la especificación de OpenAPI que se usa para crear la configuración de la API a fin de incluir instrucciones para aplicar una política de seguridad de validación de claves de API en todo el tráfico. Agrega el tipo
securityysecuritySchemescomo se muestra a continuación:OpenAPI 2.0
# 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: SERVICE_URL/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"
El
securityDefinitionconfigura tu API para que requiera una clave de API pasada como un parámetro de consulta llamadokeycuando se solicita acceso a todas las rutas de acceso definidas en la especificación.OpenAPI 3.x
# openapi-functions.yaml openapi: 3.0.4 info: title: API_ID optional-string description: Sample API on API Gateway with a Google Cloud Functions backend version: 1.0.0 # Define reusable components in x-google-api-management x-google-api-management: backends: functions_backend: address: SERVICE_URL/helloGET pathTranslation: APPEND_PATH_TO_ADDRESS protocol: "http/1.1" # Apply the backend configuration by referencing it by name. Set at the root so this applies to all operations unless overridden. x-google-backend: functions_backend components: # This section configures basic authentication with an API key. securitySchemes: google_api_key: type: apiKey name: x-api-key in: header security: - google_api_key: [] paths: /hello: get: summary: Greet a user operationId: hello responses: '200': description: A successful response content: application/json: schema: type: string
El
securitySchemesconfigura tu API para que requiera una clave de API pasada como un parámetro de consulta llamadokeycuando se solicita acceso a todas las rutas de acceso definidas en la especificación. - Crea e implementa una nueva configuración de API en tu puerta de enlace existente:
- Ve a la página de destino de Gateways.
- Selecciona tu puerta de enlace en la lista para ver los detalles.
- Haz clic en Editar para abrir el panel de configuración de la puerta de enlace.
- En la sección Configuración de API, haz lo siguiente:
- Selecciona Crear una nueva configuración de API en el menú desplegable disponible.
- Sube la especificación de OpenAPI modificada con el explorador de archivos.
- Ingresa el nombre visible de tu nueva configuración de API.
- Selecciona una cuenta de servicio de la lista desplegable. La cuenta de servicio que selecciones se usará como identidad para API Gateway.
- (Opcional) Agrega etiquetas a la configuración de tu API con un formato de clave-valor. Para agregar más de una etiqueta, haz clic en Agregar etiqueta y, luego, ingresa valores adicionales.
- Haz clic en Actualizar.
Prueba tu clave de API
Una vez que hayas creado e implementado la API modificada, intenta enviarle una solicitud.
En el navegador, ingresa la siguiente URL:
- GATEWAY_URL especifica la URL de la puerta de enlace implementada.
helloes la ruta de acceso que se especifica en la configuración de la API.
https://GATEWAY_URL/hello
Esto debería mostrar el siguiente error:
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.
Ahora, en el navegador, ingresa la siguiente URL, donde:
- GATEWAY_URL especifica la URL de la puerta de enlace implementada.
helloes la ruta de acceso que se especifica en la configuración de la API.- API_KEY especifica el valor de la clave de API que creaste en Crea una clave de API.
https://GATEWAY_URL/hello?key=API_KEY
Ahora deberías ver Hello World! en tu navegador.
¡Felicitaciones! Protegiste correctamente el backend de tu API con una API Gateway. Ahora puedes comenzar a integrar nuevos clientes de API mediante la generación de claves de API adicionales.
Realiza un seguimiento de la actividad de la API
Consulta los gráficos de actividad de tu API en la página API Gateway en laGoogle Cloud consola. Haz clic en tu API para ver los gráficos de actividad en la página Descripción general. Las solicitudes pueden tardar unos minutos en reflejarse en los gráficos.
Consulta los registros de solicitud de tu API en la página Visor de registros. Se puede encontrar un vínculo a la página Explorador de registros en la página API de API Gateway en la consola deGoogle Cloud .
Una vez que estés en la página de APIs de API Gateway, haz lo siguiente:
- Selecciona la API que deseas ver.
- Haz clic en la pestaña Detalles.
- Haz clic en el vínculo en Registros.
Realiza una limpieza
Para evitar que se apliquen cargos a tu cuenta de Google Cloud por los recursos que usaste en esta guía de inicio rápido, puedes hacer lo siguiente:
Como alternativa, también puedes borrar el proyecto Google Cloud que se usó para este instructivo.
¿Qué sigue?
- Obtén más información sobre API Gateway.
- Sigue los pasos para configurar tu entorno de desarrollo