Restreindre l'entrée pour Cloud Run

Cette page explique comment utiliser les paramètres d'entrée pour restreindre l'accès réseau à votre service Cloud Run. Au niveau du réseau, par défaut, toutes les ressources d'Internet peuvent atteindre votre service Cloud Run sur son URL run.app ou sur un domaine personnalisé configuré dans Cloud Run. Vous pouvez modifier cette valeur par défaut en spécifiant un autre paramètre pour l'entrée. Tous les chemins d'entrée, y compris l'URL run.app par défaut, sont soumis à votre paramètre d'entrée. L'entrée est définie au niveau du service.

Les paramètres d'entrée et les méthodes d'authentification IAM permettent de gérer l'accès à un service. Ils sont indépendants les uns des autres. Pour une approche multicouche de la gestion des accès, utilisez les deux.

Paramètres d'entrée disponibles

Voici les paramètres disponibles :

Paramètre Description
Interne La plus restrictive. Elle autorise les requêtes provenant des sources suivantes :
  • Équilibreur de charge d'application interne, y compris les requêtes provenant de réseaux VPC partagés lorsqu'ils sont acheminés via l'équilibreur de charge d'application interne
  • Ressources autorisées par tout périmètre VPC Service Controls contenant votre service Cloud Run. Cloud Run doit être configuré en tant que service restreint.
  • Réseaux VPC situés dans le même projet que votre service Cloud Run
  • Entrée VPC partagé : réseau VPC partagé vers lequel votre révision est configurée pour envoyer du trafic. Pour savoir dans quelles situations le trafic de VPC partagé est reconnu comme du trafic "interne", consultez la section Informations spécifiques aux VPC partagés.
  • Les produits Google Cloud suivants, s'ils se trouvent dans le même projet ou le même périmètre VPC Service Controls que votre service Cloud Run, et s'ils utilisent l'URL run.app par défaut et non un domaine personnalisé :
  • Équilibreur de charge d'application interne, y compris les requêtes provenant de réseaux VPC partagés lorsqu'ils sont acheminés via l'équilibreur de charge d'application interne.
  • Requêtes autorisées par VPC Service Controls.

Les requêtes provenant de ces sources restent dans le réseau Google, même si elles accèdent à votre service à l'URL run.app. Les requêtes provenant d'autres sources, y compris Internet, ne peuvent pas atteindre votre service via l'URL run.app ou les domaines personnalisés.

Pour les requêtes envoyées depuis Cloud Scheduler, Cloud Tasks, Eventarc, Pub/Sub, BigQuery et Workflows à un service interne, vous devez utiliser l'URL Cloud Run par défaut run.app pour ce service. Vous ne pouvez pas utiliser de domaine personnalisé.
Équilibrage de charge interne et cloud Ce paramètre autorise les requêtes provenant des ressources suivantes: 
  • Ressources autorisées par le paramètre "interne" plus restrictif
  • Équilibreur de charge d'application externe
Utilisez ce paramètre pour effectuer les opérations suivantes :
  • Accepte les requêtes provenant d'Internet via l'équilibreur de charge d'application externe. Les requêtes directes vers l'URL run.app provenant d'Internet ne sont pas autorisées ;
  • Assurez-vous que les requêtes provenant d'Internet sont soumises à des fonctionnalités d'équilibreur de charge d'application externe telles que Identity-Aware Proxy, Google Cloud Armor et Cloud CDN.

Remarque : Pour activer ce paramètre dans gcloud CLI, utilisez internal-and-cloud-load-balancing. Pour activer ce paramètre dans la console Google Cloud, sélectionnez Interne > Autoriser le trafic provenant d'équilibreurs de charge d'application externes.
Tous La moins restrictive. Autorise toutes les requêtes, y compris les requêtes provenant directement d'Internet vers l'URL run.app.

Accéder aux services internes

Les considérations supplémentaires suivantes s'appliquent :

  • Lorsque vous accédez à des services internes, appelez-les comme vous le feriez habituellement avec leurs URL publiques, soit l'URL par défaut run.app, soit un domaine personnalisé configuré dans Cloud Run.

  • Pour les requêtes provenant d'instances de VM Compute Engine, aucune configuration supplémentaire n'est requise pour les machines disposant d'adresses IP publiques ou qui utilisent Cloud NAT. Sinon, consultez la section Recevoir des requêtes à partir de réseaux VPC.

  • Lors d'un appel depuis Cloud Run, App Engine ou Cloud Functions vers un service Cloud Run défini sur "Interne" ou "Interne et Cloud Load Balancing", le trafic doit être acheminé via un réseau VPC considéré comme interne. Consultez la section Recevoir des requêtes d'autres services Cloud Run, d'App Engine et de Cloud Functions.

  • Les requêtes provenant de ressources situées au sein de réseaux VPC dans le même projet sont "internes", même si la ressource dont elles proviennent a une adresse IP externe.

  • Les requêtes provenant de ressources sur site connectées au réseau VPC via Cloud VPN et Cloud Interconnect sont considérées des requêtes "internes".

Définir le trafic entrant

Vous pouvez définir le trafic entrant à l'aide de l'une des méthodes acceptées dans ces onglets :

Console

  1. Accédez à Cloud Run

  2. Si vous configurez un nouveau service, cliquez sur Créer un service et remplissez la page initiale des paramètres du service selon vos besoins.

  3. Si vous configurez un service existant, cliquez sur celui-ci, puis sur l'onglet Réseau.

  4. Sélectionnez le trafic entrant que vous souhaitez autoriser :

    Image

  5. Cliquez sur Créer ou sur Enregistrer.

Ligne de commande

  1. Si vous déployez un nouveau service, déployez votre service avec l'option --ingress :

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

    Remplacer

    • INGRESS par l'un des paramètres d'entrée disponibles :
      • all
      • internal
      • internal-and-cloud-load-balancing
    • SERVICE par le nom de votre service
    • IMAGE_URL par une référence à l'image de conteneur, par exemple us-docker.pkg.dev/cloudrun/container/hello:latest. Si vous utilisez Artifact Registry, le dépôt REPO_NAME doit déjà être créé. L'URL se présente sous la forme suivante : LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
  2. Si vous modifiez une entrée de service existante, procédez comme suit :

    gcloud run services update SERVICE --ingress INGRESS

    Remplacer

YAML

  1. Si vous créez un service, ignorez cette étape. Si vous mettez à jour un service existant, téléchargez sa configuration YAML :

    gcloud run services describe SERVICE --format export > service.yaml
  2. Mettez à jour l'annotation 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

    Remplacer

    • SERVICE par le nom de votre service Cloud Run
    • INGRESS par l'un des paramètres d'entrée disponibles :
      • all
      • internal
      • internal-and-cloud-load-balancing
    • REVISION par un nouveau nom de révision ou supprimez-le (le cas échéant). Si vous indiquez un nouveau nom de révision, il doit répondre aux critères suivants :
      • Commencer par SERVICE-
      • Ne contenir que des lettres minuscules, des chiffres et -
      • Ne pas se terminer par -
      • Ne pas dépasser 63 caractères
  3. Remplacez la configuration du service en utilisant la commande suivante :

    gcloud run services replace service.yaml

Terraform

Pour savoir comment appliquer ou supprimer une configuration Terraform, consultez la page Commandes Terraform de base.

Ajoutez le code ci-dessous à votre fichier main.tf :

resource "google_cloud_run_v2_service" "default" {
  provider = google-beta
  name     = "ingress-service"
  location = "us-central1"

  # 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
    }
  }
}

Étape suivante