Sécuriser les jobs cron avec VPC Service Controls

VPC Service Controls est une fonctionnalité Google Cloud qui vous permet de configurer un périmètre sécurisé pour vous protéger contre l'exfiltration de données. Ce guide vous explique comment inclure des jobs Cloud Scheduler dans un périmètre VPC Service Controls.

Limites

Les limites suivantes s'appliquent à la compatibilité de VPC Service Controls avec Cloud Scheduler.

Actions appliquées

VPC Service Controls est appliqué aux actions suivantes :

  • Créations de jobs Cloud Scheduler
  • Mises à jour des jobs Cloud Scheduler

Pourquoi est-ce important ?

Étant donné que VPC Service Controls n'est appliqué qu'aux créations et mises à jour de jobs, il n'est pas appliqué automatiquement aux jobs créés avant que vous n'ayez ajouté Cloud Scheduler à votre périmètre VPC Service Controls. Les jobs continuent de s'exécuter même si les cibles de job ne font pas partie de votre périmètre VPC Service Controls ou ne sont pas des cibles compatibles. Pour appliquer VPC Service Controls à tous les jobs Cloud Scheduler :

  • Offres d'emploi avec des cibles non compatibles ou en dehors de votre périmètre : supprimez les offres d'emploi. Dans ce document, consultez la section Supprimer les jobs non conformes.
  • Tâches avec des cibles à la fois compatibles et à l'intérieur de votre périmètre : exécutez une mise à jour sur chaque tâche après avoir ajouté Cloud Scheduler à votre périmètre. Dans ce document, consultez la section Appliquer VPC Service Controls aux jobs préexistants.

Cibles compatibles

L'intégration de Cloud Scheduler à VPC Service Controls est compatible avec les cibles suivantes. Les points de terminaison HTTP sont acceptés s'ils sont listés. Toutefois, les points de terminaison HTTP arbitraires ne sont pas acceptés.

  • Services Cloud Run : vous devez utiliser le domaine run.app canonique par défaut. Les domaines et DNS personnalisés ne sont pas acceptés et entraîneront l'échec de la création du job.
  • Cloud Run Functions : vous devez utiliser le domaine canonique par défaut cloudfunctions.net ou run.app. Les domaines et DNS personnalisés ne sont pas acceptés et entraîneront l'échec de la création du job.
  • Les APIGoogle Cloud compatibles avec VPC Service Controls (en version Preview ou en disponibilité générale) peuvent se trouver dans un projet Google Cloud différent de celui de votre job Cloud Scheduler.

    • Vous devez utiliser le format de point de terminaison mondial (https://SERVICE.googleapis.com). Les points de terminaison régionaux (tels que *.rep.googleapis.com, LOCATION.SERVICE.googleapis.com et REGION-SERVICE.googleapis.com) et les points de terminaison mTLS (*.mtls.googleapis.com) sont refusés.
    • Pour les tâches Cloud Run, le format d'URI accepté est le suivant : https://run.googleapis.com/v2/projects/PROJECT_ID/locations/REGION/jobs/JOB_NAME:run

      Pour en savoir plus sur la différence entre les ressources de service et de job Cloud Run, consultez Services, jobs, pools de nœuds de calcul et instances : quatre façons d'exécuter votre code.

  • Pub/Sub

Cibles non acceptées

Lorsque Cloud Scheduler est un service restreint dans votre périmètre VPC Service Controls, toute tentative de création ou de mise à jour d'un job avec une cible non compatible échouera et générera un code d'erreur TARGET_TYPE_NOT_PERMITTED_FOR_VPC. Cette action ne génère pas de journal des cas de non-respect lorsque vous utilisez le mode de simulation.

Les domaines personnalisés (tels que les équilibreurs de charge d'application externes ou le DNS personnalisé) pour les points de terminaison serverless ne sont pas des cibles acceptées. Les appels d'exécution vers des domaines personnalisés sont bloqués par le service de destination en raison de l'absence d'identifiants dans le périmètre, même pour les jobs préexistants créés avant l'enregistrement du périmètre.

Pour éviter de bloquer vos charges de travail de manière inattendue, supprimez tous les jobs avec des cibles non compatibles ou avec des cibles en dehors du périmètre VPC Service Controls que vous prévoyez d'utiliser, avant de passer votre périmètre en mode appliqué.

Supprimer les tâches non conformes

Recommended. Supprimez les jobs Cloud Scheduler dont les cibles sont :

  • Non acceptée (voir Cibles acceptées)
  • En dehors du périmètre VPC Service Controls que vous prévoyez d'utiliser

Pour savoir comment supprimer des jobs, consultez Supprimer un job.

Si vous ne supprimez pas ces jobs avant d'ajouter Cloud Scheduler à votre périmètre VPC Service Controls, ils continueront de s'exécuter, mais VPC Service Controls ne leur sera pas appliqué. Dans ce document, consultez la section Actions appliquées.

Par exemple, si vous avez une tâche Cloud Scheduler qui cible une cible non compatible (telle qu'un point de terminaison HTTP arbitraire), la tâche continue de s'exécuter après l'ajout de Cloud Scheduler à votre périmètre VPC Service Controls, mais elle n'est pas protégée par VPC Service Controls. Il en va de même pour un job préexistant avec une cible en dehors de votre périmètre VPC Service Controls. Toutefois, si un job préexistant cible un domaine personnalisé sans serveur à l'intérieur de votre périmètre, le service de destination bloque les appels d'exécution.

Ajouter les rôles IAM requis

Obligatoire. Pour utiliser VPC Service Controls, le compte de service Cloud Scheduler doit disposer du rôle IAM Agent de service Cloud Scheduler. Le compte de service Cloud Scheduler est créé automatiquement pour votre projet. Pour vérifier qu'il dispose du rôle IAM Agent de service Cloud Scheduler ou pour accorder ce rôle, procédez comme suit :

  1. Dans la console Google Cloud , accédez à IAM.

    Accéder à IAM

  2. Cochez la case Inclure les attributions de rôles fournies par Google.

  3. Dans le filtre, saisissez Compte de service Cloud Scheduler, puis sélectionnez ce principal.

  4. Consultez la colonne Rôle pour le compte principal Compte de service Cloud Scheduler. Vous pouvez continuer si le rôle suivant est listé :

    • Agent de service Cloud Scheduler

    Si le rôle Compte de service Cloud Scheduler n'est pas listé, cliquez sur l'icône Modifier et attribuez le rôle Agent de service Cloud Scheduler au principal Compte de service Cloud Scheduler.

Spécifier un périmètre VPC Service Controls

Obligatoire. Vous pouvez utiliser un périmètre existant ou en créer un pour protéger vos jobs Cloud Scheduler qui comportent des cibles compatibles. Les deux approches vous permettent de spécifier les services à limiter. Spécifiez l'API Cloud Scheduler.

Appliquer VPC Service Controls aux jobs préexistants

Recommended. Pour appliquer VPC Service Controls aux jobs Cloud Scheduler que vous avez créés avant d'ajouter Cloud Scheduler à votre périmètre VPC Service Controls, exécutez un update sur le job. Vous n'avez pas besoin de modifier le job, mais vous devez exécuter la mise à jour pour que VPC Service Controls s'applique au job et à ses futures exécutions.

Vous pouvez exécuter une mise à jour du job à l'aide de la console Google Cloud (sélectionnez le job et cliquez sur Modifier), de l'API ou de la gcloud CLI.

Pour appliquer VPC Service Controls à un job préexistant à l'aide de gcloud CLI, exécutez la commande suivante :

Tâches HTTP Target

gcloud scheduler jobs update http JOB_ID

Remplacez JOB_ID par l'ID de votre job.

Cibles Pub/Sub

gcloud scheduler jobs update pubsub JOB_ID

Remplacez JOB_ID par l'ID de votre job.