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 red, se puede acceder al endpoint 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 carga de aplicación externo o interno configurado
Todas las rutas de entrada de la red están sujetas al ajuste de entrada del servicio. Las rutas de entrada y la configuración de entrada predeterminadas permiten que cualquier recurso de Internet acceda a tu servicio de Cloud Run. Puedes usar una restricción personalizada para restringir los ajustes de entrada de tu organización o de un conjunto de proyectos. La autenticación de gestión de identidades y accesos sigue aplicándose a las solicitudes que llegan a los endpoints de servicio desde cualquiera de las rutas de entrada de red anteriores. Para gestionar el acceso por capas, utiliza tanto la configuración de entrada de red como la autenticación de IAM.
Usa etiquetas de red para restringir el acceso de la VM del conector a los recursos de la VPC.
Ajustes de entrada de red disponibles
Están disponibles los siguientes ajustes:
Ajuste | Descripción |
---|---|
Interno |
Es el más restrictivo. Permite las solicitudes de las siguientes fuentes:
run.app . Las solicitudes
de otras fuentes, incluida Internet, no pueden acceder a tu servicio en
la URL run.app ni en los dominios personalizados. |
Balanceo de carga interno y de Cloud | Este ajuste permite las solicitudes de los siguientes recursos:
Nota: Para habilitar este ajuste en gcloud CLI, usa internal-and-cloud-load-balancing .
Para habilitar este ajuste en la consola de Google Cloud , selecciona
Interno > Permitir tráfico de balanceadores de carga de aplicaciones externos.
|
Todo |
La menos restrictiva. Permite todas las solicitudes, incluidas las que se envían directamente desde Internet a la URL de run.app .
|
Acceder a servicios internos
Se aplican las siguientes consideraciones adicionales:
Cuando accedas a servicios internos, llámalos como lo harías normalmente con su URL, ya sea la URL
run.app
predeterminada o un dominio personalizado configurado en Cloud Run.En el caso de las solicitudes de instancias de VM de Compute Engine, no es necesario realizar ninguna configuración adicional en las máquinas que tengan direcciones IP externas o que usen Cloud NAT. De lo contrario, consulta Recibir solicitudes de redes VPC.
Cuando se llama desde Cloud Run o App Engine a un servicio de Cloud Run que está configurado como "Internal" (Interno) o "Internal and Cloud Load Balancing" (Interno y balanceo de carga de Cloud), el tráfico debe enrutarse a través de una red de VPC que se considere interna. Consulta Recibir solicitudes de otros servicios de Cloud Run o App Engine.
Las solicitudes de recursos de redes VPC del mismo proyecto se consideran "internas" aunque el recurso del que procedan tenga una dirección IP externa.
Las solicitudes de recursos on-premise conectados a la red de VPC mediante Cloud VPN y Cloud Interconnect son "internas".
Definir Ingress
Puedes configurar el tráfico de entrada mediante la Google Cloud consola, la CLI de Google Cloud, YAML o Terraform.
Consola
En la Google Cloud consola, ve a la página Cloud Run:
Si va a configurar un servicio nuevo, seleccione Servicios en el menú y haga clic en Implementar contenedor para que se muestre el formulario Crear servicio. Rellena la página de configuración inicial del servicio.
Si vas a configurar un servicio, haz clic en él y, a continuación, en la pestaña Redes.
Selecciona el tráfico de entrada que quieras permitir:
Haz clic en Crear o en Guardar.
gcloud
Si vas a implementar un nuevo servicio, hazlo con la marca
--ingress
:gcloud run deploy SERVICE --image IMAGE_URL --ingress INGRESS
Haz los cambios siguientes:
INGRESS
: uno de los ajustes de entrada disponibles:all
internal
internal-and-cloud-load-balancing
SERVICE
: nombre de tu servicio- IMAGE_URL: una referencia a la imagen del contenedor, por ejemplo,
us-docker.pkg.dev/cloudrun/container/hello:latest
. Si usas Artifact Registry, el repositorio REPO_NAME ya debe estar creado. La URL sigue el formatoLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
.
Si vas a cambiar un ingreso de servicio:
gcloud run services update SERVICE --ingress INGRESS
Haz los cambios siguientes:
INGRESS
: uno de los ajustes de entrada disponibles:all
internal
internal-and-cloud-load-balancing
SERVICE
: nombre de tu servicio
YAML
Si va a crear un servicio, puede saltarse este paso. Si va a actualizar un servicio, descargue su configuración YAML:
gcloud run services describe SERVICE --format export > service.yaml
Actualiza la anotación de
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
Haz los cambios siguientes:
- SERVICE: el nombre de tu Cloud Run
- INGRESS: uno de los ajustes de entrada disponibles:
all
internal
internal-and-cloud-load-balancing
- REVISION con un nuevo nombre de revisión o elimínelo (si está presente). Si proporcionas un nuevo nombre de revisión, debe cumplir los siguientes criterios:
- Empieza por
SERVICE-
- Contiene solo letras minúsculas, números y
-
- No termina con
-
- No supera los 63 caracteres
- Empieza por
Sustituye el servicio por su nueva configuración con el siguiente comando:
gcloud run services replace service.yaml
Terraform
Para saber cómo aplicar o quitar una configuración de Terraform, consulta Comandos básicos de Terraform.
Añade lo siguiente a un recursogoogle_cloud_run_v2_service
en tu configuración de Terraform:Inhabilitar 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 dominios configurada.
Para inhabilitar la URL predeterminada, sigue estos pasos con la Google Cloud consola, la CLI de Google Cloud, YAML o Terraform.
Consola
En la Google Cloud consola, ve a la página Cloud Run:
Haz clic en un servicio.
Selecciona la pestaña Redes.
En la tarjeta Endpoints (Puntos de conexión), desmarca Enable (Habilitar) en Default HTTPS endpoint URL (URL del punto de conexión HTTPS predeterminado).
Haz clic en Guardar.
Para restaurar la URL predeterminada, selecciona Habilitar y haz clic en Guardar.
gcloud
En el caso de un servicio que ya tengas, ejecuta el comando
gcloud run services update
con la marca--no-default-url
. Por ejemplo:gcloud run services update SERVICE_NAME --no-default-url
En el caso de un servicio nuevo, ejecuta el comando
gcloud run deploy
con la marca--no-default-url
. Por ejemplo:gcloud run deploy SERVICE_NAME --no-default-url
donde SERVICE_NAME es el nombre de tu servicio de Cloud Run.
En el resultado, la URL se muestra como
None
.
Para restaurar la URL predeterminada, usa la marca --default-url
.
YAML
Si va a crear un servicio, puede saltarse este paso. Si va a actualizar un servicio, descargue su configuración 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 name: SERVICE spec: template: metadata: name: REVISION
Haz los cambios siguientes:
- SERVICE con el nombre de tu servicio de Cloud Run.
- REVISION con un nuevo nombre de revisión o elimínelo (si está presente). Si proporcionas un nuevo nombre de revisión, debe cumplir los siguientes criterios:
- Empieza por
SERVICE-
- Contiene solo letras minúsculas, números y
-
- No termina con
-
- No supera los 63 caracteres
- Empieza por
Crea o actualiza el servicio con el siguiente comando:
gcloud run services replace service.yaml
Para restaurar la URL predeterminada, elimina la anotación run.googleapis.com/default-url-disabled
.
Terraform
Para saber cómo aplicar o quitar una configuración de Terraform, consulta Comandos básicos de Terraform.
Añade lo siguiente a un recursogoogle_cloud_run_v2_service
en tu configuración de Terraform: resource "google_cloud_run_v2_service" "disable_default_url_service" {
name = "cloudrun-service"
location = "europe-west1"
default_uri_disabled = true
template {
containers {
image = "us-docker.pkg.dev/cloudrun/container/hello"
}
annotations = {
"run.googleapis.com/ingress" = "all" # "all" or "internal-only"
}
}
}
Verifica que las líneas launch_stage
y default_uri_disabled
estén en tu archivo main.tf
. El recurso google_cloud_run_v2_service
anterior especifica un servicio de Cloud Run con la URL predeterminada inhabilitada en Vista previa.
Para restaurar la URL predeterminada, quite los argumentos default_uri_disabled
y launch_stage
.
Los siguientes Google Cloud servicios usan la URL run.app
predeterminada
para invocar Cloud Run. Si inhabilitas la URL predeterminada de run.app
, estos servicios no funcionarán como deberían:
- La
cloudfunctions.net
URL de la API de Cloud Functions v2 basada en el servicio de Cloud Run. - Cloud Scheduler
- Cloud Service Mesh
- Cloud Tasks
- Dialogflow CX
- Eventarc
- Firebase App Hosting
- Firebase Hosting
- Pub/Sub
- Monitores sintéticos y comprobaciones de disponibilidad
- Workflows
Siguientes pasos
- Consulta información sobre los ajustes de salida.
- Configura un balanceador de carga de aplicación interno para Cloud Run.
- Configura un balanceador de carga de aplicación externo con Cloud Run.
- Configura los métodos de autenticación de IAM para acceder a los servicios.