En esta página, se describe cómo usar la configuración de entrada para restringir el acceso de red a tu servicio de Cloud Run.
A nivel de la red, se puede acceder al extremo de un servicio de Cloud Run desde las siguientes rutas de entrada de red:
- URLs
run.app
predeterminadas que puedes inhabilitar - Cualquier asignación de dominio configurada
- Cualquier balanceador de cargas de aplicaciones externo o balanceador de cargas de aplicaciones interno configurado
Todas las rutas de acceso de red de entrada están sujetas a la configuración de entrada del servicio. Las rutas de entrada y la configuración de entrada predeterminadas permiten que cualquier recurso de Internet llegue a tu servicio de Cloud Run. Puedes usar una restricción personalizada para restringir la configuración de entrada de tu organización o de un conjunto de proyectos. La autenticación de IAM aún se aplica a las solicitudes que llegan a los extremos de servicio desde cualquiera de las rutas de entrada de red anteriores. Para adoptar un enfoque en capas a fin de administrar el acceso, usa la configuración de entrada de red y la autenticación de IAM.
Configuración de entrada de red disponible
Podrás configurar los siguientes parámetros:
Configuración | Descripción |
---|---|
Interno |
Más restrictivo. Permite solicitudes de las siguientes fuentes:
run.app . Las solicitudes de otras fuentes, incluido Internet, no pueden llegar a tu servicio en la URL run.app ni en dominios personalizados. |
Balanceo de cargas interno y en la nube | Esta configuración permite solicitudes de los siguientes recursos:
Nota: Para habilitar este parámetro de configuración en gcloud CLI, usa internal-and-cloud-load-balancing .
Para habilitar este parámetro de configuración en la consola de Google Cloud, selecciona Internos > Permitir el tráfico de balanceadores de cargas de aplicaciones externos.
|
Todos |
Menos restrictivo. Permite todas las solicitudes, incluidas las solicitudes directas desde Internet a la URL run.app .
|
Accede a servicios internos
Se aplican las siguientes consideraciones adicionales:
Cuando accedes a los servicios internos, llámalos como lo harías con sus URLs, ya sea la URL
run.app
predeterminada o un dominio personalizado configurado en Cloud Run.Para las solicitudes de instancias de VM de Compute Engine, no se requiere ninguna configuración adicional para las máquinas que tienen direcciones IP externas o que usan Cloud NAT. De lo contrario, consulta Recibe solicitudes de redes de VPC.
Cuando se llama desde Cloud Run, App Engine o funciones de Cloud Run a un servicio de Cloud Run configurado como “Interno” o “Interno y Cloud Load Balancing”, el tráfico debe enrutarse a través de una red de VPC que se considere interna. Consulta Recibe solicitudes de otros servicios de Cloud Run, App Engine y funciones de Cloud Run.
Las solicitudes de recursos dentro de una red de VPC en el mismo proyecto son “internas” incluso si el recurso desde el que se originan tiene una dirección IP externa.
Las solicitudes de recursos locales conectados a la red de VPC mediante Cloud VPN y Cloud Interconnect se consideran “internas”.
Configura la entrada
Puedes configurar la entrada con cualquiera de los métodos admitidos en las siguientes pestañas:
Console
En la consola de Google Cloud, ve a la página Cloud Run:
Si quieres configurar un servicio nuevo, haz clic en Implementar contenedor y selecciona Servicio para mostrar el formulario Crear servicio. Completa la página de configuración inicial del servicio.
Si quieres configurar un servicio existente, haz clic en el servicio y, luego, en la pestaña Herramientas de redes.
Selecciona el tráfico de entrada que deseas permitir:
Haz clic en Crear o Guardar.
gcloud
Si implementas un servicio nuevo, impleméntalo con la marca
--ingress
:gcloud run deploy SERVICE --image IMAGE_URL --ingress INGRESS
Reemplazar
INGRESS
por una de las configuraciones de entrada disponiblesall
internal
internal-and-cloud-load-balancing
SERVICE
el nombre de tu servicio- IMAGE_URL por una referencia a la imagen del contenedor, como
us-docker.pkg.dev/cloudrun/container/hello:latest
Si usas Artifact Registry, el repositorio REPO_NAME debe estar creado. La URL tiene el formatoLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
.
Si cambias una entrada de servicio existente:
gcloud run services update SERVICE --ingress INGRESS
Reemplazar
INGRESS
por una de las configuraciones de entrada disponiblesall
internal
internal-and-cloud-load-balancing
SERVICE
el nombre de tu servicio
YAML
Si creas un servicio nuevo, omite este paso. Si actualizas un servicio existente, descarga su configuración de YAML:
gcloud run services describe SERVICE --format export > service.yaml
Actualiza la anotación
run.googleapis.com/ingress:
:apiVersion: serving.knative.dev/v1 kind: Service metadata: annotations: run.googleapis.com/ingress: INGRESS name: SERVICE spec: template: metadata: name: REVISION
Reemplazar
- SERVICE por el nombre del trabajo de Cloud Run.
- INGRESS por una de las configuraciones de entrada disponibles
all
internal
internal-and-cloud-load-balancing
- REVISION por un nombre de revisión nuevo o bórralo (si está presente). Si proporcionas un nuevo nombre de revisión, debe cumplir con los siguientes criterios:
- Comienza con
SERVICE-
- Solo contiene letras minúsculas, números y
-
- No termina con
-
- No supera los 63 caracteres
- Comienza con
Reemplaza el servicio por la configuración nueva mediante el siguiente comando:
gcloud run services replace service.yaml
Terraform
Si deseas obtener más información para aplicar o quitar una configuración de Terraform, consulta los comandos básicos de Terraform.
Agrega lo siguiente a tu archivo main.tf
:
Inhabilita la URL predeterminada
Inhabilita las URLs run.app
predeterminadas de un servicio de Cloud Run para permitir solo el tráfico de las otras rutas de entrada del servicio: Cloud Load Balancing y cualquier asignación de dominio configurada.
Para inhabilitar la URL predeterminada, sigue estos pasos:
Línea de comandos
Para inhabilitar la URL
run.app
de un servicio, ejecuta el comandogcloud beta run deploy
ogcloud beta run services update
con la marca--no-default-url
:gcloud beta run deploy SERVICE_NAME --no-default-url
En el ejemplo anterior, SERVICE_NAME es el nombre de tu servicio de Cloud Run.
En el resultado, la URL se muestra como None
.
Para restablecer la URL predeterminada, usa la marca --default-url
.
YAML
Si creas un servicio nuevo, omite este paso. Si actualizas un servicio existente, descarga su configuración de YAML:
gcloud run services describe SERVICE --format export > service.yaml
Para inhabilitar la URL
run.app
, usa la anotaciónrun.googleapis.com/default-url-disabled
:apiVersion: serving.knative.dev/v1 kind: Service metadata: annotations: run.googleapis.com/default-url-disabled: true run.googleapis.com/launch-stage: BETA name: SERVICE spec: template: metadata: name: REVISION
Reemplazar
- SERVICE por el nombre del servicio de Cloud Run
- REVISION por un nombre de revisión nuevo o bórralo (si está presente). Si proporcionas un nuevo nombre de revisión, debe cumplir con los siguientes criterios:
- Comienza con
SERVICE-
- Solo contiene letras minúsculas, números y
-
- No termina con
-
- No supera los 63 caracteres
- Comienza con
Crea o actualiza el servicio con el siguiente comando:
gcloud run services replace service.yaml
Para restablecer la URL predeterminada, quita la anotación run.googleapis.com/default-url-disabled
.
Los siguientes servicios de Google Cloud usan la URL run.app
predeterminada para invocar Cloud Run. Inhabilitar la URL predeterminada de run.app
evita que estos servicios funcionen como se espera:
- La URL
cloudfunctions.net
de funciones de Cloud Run (2ª gen.) basada en el servicio de Cloud Run - Cloud Scheduler
- Cloud Service Mesh
- Cloud Tasks
- Eventarc
- Firebase App Hosting
- Firebase Hosting
- Pub/Sub
- Monitores sintéticos y verificaciones de tiempo de actividad
- Workflows
¿Qué sigue?
- Más información sobre la configuración de salida
- Configura un balanceador de cargas de aplicaciones interno para Cloud Run.
- Configura un balanceador de cargas de aplicaciones externo con Cloud Run.
- Configura los métodos de autenticación de IAM para acceder a los servicios.