Restringe la entrada de extremos de red para los servicios y las instancias de Cloud Run

En esta página, se describe cómo usar la configuración de entrada para restringir el acceso de red a tus servicios y instanciasde Cloud Run.

A nivel de la red, se puede acceder al extremoo de instancia 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 recurso. Las rutas de entrada y la configuración de entrada predeterminadas permiten que cualquier recurso de Internet llegue a tu recurso 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 o de instancia 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.

Usa etiquetas de red para restringir el acceso de la VM del conector a los recursos de VPC.

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:
  • Balanceador de cargas de aplicaciones interno, incluidas las solicitudes de redes de VPC compartida cuando se enrutan a través del balanceador de cargas de aplicaciones interno
  • Recursos permitidos por cualquier perímetro de los Controles del servicio de VPC que contenga tu servicio o instanciade Cloud Run. Cloud Run se debe configurar como un servicio restringido.
  • Redes de VPC que se encuentran en el mismo proyecto que tu servicio o instanciade Cloud Run
  • Entrada de VPC compartida: La red de VPC compartida a la que está configurada tu revisión del servicio o instancia de Cloud Run para enviar tráfico. Para obtener información sobre cuándo se reconoce el tráfico de VPC compartida como “interno”, consulta Consideraciones especiales para la VPC compartida.
  • Los siguientes Google Cloud productos, si están en el mismo proyecto o perímetro de los Controles del servicio de VPC que tu servicio de Cloud Run o instancia, y si usan la URL run.app predeterminada y no un dominio personalizado:
Las solicitudes de estas fuentes permanecen dentro de la red de Google, incluso si acceden a tu servicio o instancia en la URLrun.app. Las solicitudes de otras fuentes, incluido Internet, no pueden llegar a tu servicio ni a tu instancia en la URLrun.appni en dominios personalizados.

Balanceo de cargas interno y en la nube Esta configuración permite solicitudes de los siguientes recursos:
  • Recursos permitidos por la configuración "interna" más restrictiva
  • Balanceador de cargas de aplicaciones externo
Usa este parámetro de configuración para hacer lo siguiente:
  • Acepta solicitudes de Internet a través del balanceador de cargas de aplicaciones externo. No se permiten solicitudes directas a la URL run.app desde Internet.
  • Asegúrate de que las solicitudes de Internet estén sujetas a funciones del balanceador de cargas de aplicaciones externo, como Identity-Aware Proxy, Google Cloud Armor y Cloud CDN.

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 o App Engine 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 o App Engine.

  • 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

En las siguientes secciones, se muestra cómo configurar la entrada para los servicios y las instanciasde Cloud Run.

Configura la entrada para los servicios de Cloud Run

Puedes configurar el tráfico de entrada para un servicio de Cloud Run con laGoogle Cloud consola, Google Cloud CLI, YAML o Terraform.

Console

  1. En la consola de Google Cloud , ve a la página Servicios de Cloud Run:

    Ir a Cloud Run

  2. Si quieres configurar un servicio nuevo, haz clic en Implementar contenedor para mostrar el formulario Crear servicio. Completa la página de configuración inicial del servicio.

  3. Si quieres configurar un servicio existente, haz clic en el servicio y, luego, en la pestaña Herramientas de redes.

  4. Selecciona el tráfico de entrada que deseas permitir.

  5. Haz clic en Crear para un servicio nuevo. Haz clic en Ver diferencia y volver a implementar y, luego, en Implementar cambios para un servicio existente.

gcloud

  1. Si implementas un servicio nuevo, impleméntalo con la marca --ingress:

    gcloud run deploy SERVICE \
        --image IMAGE_URL \
        --ingress INGRESS

    Reemplaza lo siguiente:

    • SERVICE: El 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 debe estar creado. La URL sigue el formato LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG.
    • INGRESS: Una de las configuraciones de entrada disponibles:
      • all
      • internal
      • internal-and-cloud-load-balancing
  2. Si cambias una entrada de servicio existente:

    gcloud run services update SERVICE \
        --ingress INGRESS

    Reemplaza lo siguiente:

YAML

  1. 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
  2. Actualiza la anotación run.googleapis.com/ingress::

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: SERVICE
      annotations:
        run.googleapis.com/ingress: INGRESS
    spec:
      template:
        metadata:
          name: REVISION

    Reemplaza lo siguiente:

    • SERVICE: el nombre de tu servicio de Cloud Run.
    • INGRESS: Una de las configuraciones de entrada disponibles:
      • all
      • internal
      • internal-and-cloud-load-balancing
    • REVISION: 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
  3. 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 un recurso google_cloud_run_v2_service en tu configuración de Terraform:
resource "google_cloud_run_v2_service" "default" {
  provider = google-beta
  name     = "ingress-service"
  location = "us-central1"

  deletion_protection = false # set to "true" in production

  # For valid annotation values and descriptions, see
  # https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/cloud_run_v2_service#ingress
  ingress = "INGRESS_TRAFFIC_INTERNAL_ONLY"

  template {
    containers {
      image = "us-docker.pkg.dev/cloudrun/container/hello" #public image for your service
    }
  }
}

Configura la entrada para las instancias de Cloud Run

Puedes configurar el tráfico de entrada para una instancia de Cloud Run con Google Cloud CLI o YAML:

gcloud

  1. Si creas una instancia nueva, impleméntala con la marca --ingress:

    gcloud beta run instances deploy INSTANCE \
        --image IMAGE_URL \
        --ingress INGRESS

    Reemplaza lo siguiente:

    • INSTANCE: El nombre de tu instancia
    • IMAGE_URL: Una referencia a la imagen del contenedor, como us-docker.pkg.dev/cloudrun/container/hello:latest.
    • INGRESS: Una de las configuraciones de entrada disponibles:
      • all
      • internal
      • internal-and-cloud-load-balancing
  2. Si cambias una entrada de instancia existente, haz lo siguiente:

    gcloud beta run instances update INSTANCE \
        --ingress INGRESS

    Reemplaza lo siguiente:

YAML

  1. Si creas una instancia nueva, omite este paso. Si actualizas una instancia existente, descarga su configuración de YAML:

    gcloud beta run instances describe INSTANCE --format export > instance.yaml
  2. Actualiza la anotación run.googleapis.com/ingress::

    apiVersion: run.googleapis.com/v1
    kind: Instance
    metadata:
      name: INSTANCE
      annotations:
        run.googleapis.com/ingress: INGRESS
        run.googleapis.com/launch-stage: BETA
    spec:
      containers:
      - name: CONTAINER_NAME
        image: IMAGE_URL

    Reemplaza lo siguiente:

    • INSTANCE: el nombre de tu instancia de Cloud Run.
    • INGRESS: Una de las configuraciones de entrada disponibles:
      • all
      • internal
      • internal-and-cloud-load-balancing
    • CONTAINER_NAME: Es el nombre del contenedor.
    • IMAGE_URL: Una referencia a la imagen del contenedor, como us-docker.pkg.dev/cloudrun/container/hello:latest.
  3. Crea o actualiza la instancia con el siguiente comando:

    gcloud beta run instances replace instance.yaml

Inhabilita la URL predeterminada

Antes de inhabilitar la URL predeterminada, ten en cuenta que los siguientesGoogle Cloud servicios o instancias usan la URL run.app predeterminada para invocar Cloud Run. Inhabilitar la URL predeterminada de run.app impide que estos servicios o instancias funcionen como se espera:

Consulta las siguientes secciones para aprender a inhabilitar la URL predeterminada para los servicios y las instanciasde Cloud Run.

Inhabilita la URL predeterminada para los servicios de Cloud Run

Inhabilita la URL run.app predeterminada de un servicio o instancia 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 con la Google Cloud consola, Google Cloud CLI, YAML o Terraform.

Console

  1. En la consola de Google Cloud , ve a la página Servicios de Cloud Run:

    Ir a Cloud Run

  2. Haz clic en un servicio existente.

  3. Selecciona la pestaña Herramientas de redes.

  4. En la tarjeta Endpoints, desmarca Enable en Default HTTPS endpoint URL.

  5. Haz clic en Ver diferencia y volver a implementar y, luego, en Implementar cambios.

Para restablecer la URL predeterminada, selecciona Habilitar.

gcloud

  • Para un servicio existente, ejecuta el comando gcloud run services update con la marca --no-default-url, por ejemplo:

    gcloud run services update SERVICE_NAME --no-default-url
  • Para 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

    Reemplaza SERVICE_NAME por 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

  1. 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
  2. Para inhabilitar la URL run.app, usa la anotación run.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

    Reemplaza lo siguiente:

    • SERVICE: el nombre de tu servicio de Cloud Run.
    • REVISION: 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
  3. Crea o actualiza el servicio con el siguiente comando:

    gcloud run services replace service.yaml

    El comando gcloud run services replace usa de forma predeterminada el archivo service.yaml si está presente.

Para restablecer la URL predeterminada, quita la anotación run.googleapis.com/default-url-disabled.

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 un recurso google_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 la versión preliminar.

Para restablecer la URL predeterminada, quita los argumentos default_uri_disabled y launch_stage.

Inhabilita la URL predeterminada para las instancias de Cloud Run

Inhabilita la URL run.app predeterminada de una instancia de Cloud Run para permitir solo el tráfico de las otras rutas de entrada de la instancia: Cloud Load Balancing y cualquier asignación de dominio configurada.

gcloud

  • Para una instancia existente, ejecuta el comando gcloud beta run instances update con la marca --no-default-url, por ejemplo:

    gcloud beta run instances update INSTANCE --no-default-url
  • Para una instancia nueva, ejecuta el comando gcloud beta run instances deploy con la marca --no-default-url, por ejemplo:

    gcloud beta run instances deploy INSTANCE \
        --image IMAGE_URL \
        --no-default-url

    Reemplaza INSTANCE por el nombre de tu instancia de Cloud Run.

    En el resultado, la URL se muestra como None.

Para restablecer la URL predeterminada, usa la marca --default-url.

YAML

  1. Si creas una instancia nueva, omite este paso. Si actualizas una instancia existente, descarga su configuración de YAML:

    gcloud beta run instances describe INSTANCE --format export > instance.yaml
  2. Para inhabilitar la URL predeterminada, establece la anotación run.googleapis.com/default-url-disabled en 'true':

    apiVersion: run.googleapis.com/v1
    kind: Instance
    metadata:
      name: INSTANCE
      annotations:
        run.googleapis.com/default-url-disabled: 'true'
        run.googleapis.com/launch-stage: BETA
    spec:
      containers:
      - name: CONTAINER_NAME
        image: IMAGE_URL

    Reemplaza lo siguiente:

    • INSTANCE: Es el nombre de tu instancia de Cloud Run.
    • CONTAINER_NAME: Es el nombre del contenedor.
    • IMAGE_URL: Es una referencia a la imagen del contenedor, como us-docker.pkg.dev/cloudrun/container/hello:latest.
  3. Crea o actualiza la instancia con el siguiente comando:

    gcloud beta run instances replace instance.yaml

Para restablecer la URL predeterminada, configura la anotación run.googleapis.com/default-url-disabled en false o quítala.

¿Qué sigue?