Sécuriser les jobs cron avec VPC Service Controls

VPC Service Controls vous permet de configurer un périmètre sécurisé autour des ressources Google Cloud pour vous protéger contre l'exfiltration de données. Vous pouvez inclure des jobs Cloud Scheduler dans un périmètre VPC Service Controls pour protéger vos charges de travail planifiées et limiter les cibles des jobs.

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 ?

Comme VPC Service Controls n'est appliqué que lors de la création et de la mise à jour des jobs, il n'est pas automatiquement appliqué aux jobs créés avant que vous n'ajoutiez Cloud Scheduler à votre périmètre VPC Service Controls. Les jobs continuent de s'exécuter même si leurs cibles 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 :

  • Jobs avec des cibles non compatibles ou situées en dehors de votre périmètre : supprimez les jobs. Dans ce document, consultez la section Supprimer les jobs non conformes.
  • Jobs dont les cibles sont à la fois compatibles et situées dans votre périmètre : exécutez une mise à jour sur chaque job 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 : doivent utiliser le domaine canonique par défaut run.app. Les domaines et DNS personnalisés ne sont pas acceptés et entraîneront l'échec de la création de la tâche.
  • Fonctions Cloud Run : doivent 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 de la tâche.
  • 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 global (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.

      Cette exigence ne s'applique qu'aux URI cibles des jobs. Pour envoyer vos propres requêtes à l'API Cloud Scheduler via un point de terminaison régional, consultez Utiliser des points de terminaison régionaux.

    • Pour les jobs 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 échoue avec un code d'erreur TARGET_TYPE_NOT_PERMITTED_FOR_VPC. Cette action ne génère pas de journal des cas de non-conformité lorsque vous utilisez le mode dry run.

Les domaines personnalisés (tels que les équilibreurs de charge d'application externes ou les DNS personnalisés) pour les points de terminaison sans serveur ne sont pas des cibles compatibles. Les appels d'exécution vers des domaines personnalisés sont bloqués par le service de destination en raison d'identifiants manquants 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 dont les cibles ne sont pas compatibles ou se trouvent en dehors du périmètre VPC Service Controls que vous prévoyez d'utiliser, avant de passer votre périmètre en mode forcé.

Supprimer les jobs non conformes

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

  • Non compatible (voir Cibles compatibles)
  • 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 continuent de s'exécuter, mais VPC Service Controls ne leur est pas appliqué. Dans ce document, consultez la section Mesures coercitives.

Par exemple, si vous avez un job Cloud Scheduler qui cible une cible non compatible (comme un point de terminaison HTTP arbitraire), le job continue de s'exécuter après l'ajout de Cloud Scheduler à votre périmètre VPC Service Controls, mais il n'est pas protégé par VPC Service Controls. Il en va de même pour un job préexistant dont la cible se trouve en dehors de votre périmètre VPC Service Controls. Toutefois, si un job préexistant cible un domaine personnalisé sans serveur dans 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 d'agent de service Cloud Scheduler ou pour lui 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 compte principal.

  4. Consultez la colonne Rôle du 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 d'agent 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 compte principal du 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 ont des cibles compatibles. Ces 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 une commande 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 mettre à jour le job à l'aide de la console Google Cloud (sélectionnez le job, puis cliquez sur Modifier), de l'API ou de la gcloud CLI.

Pour appliquer VPC Service Controls à un job préexistant à l'aide de la 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.