Activer l'autorisation binaire pour Cloud Run

Ce guide explique comment configurer l'autorisation binaire pour appliquer le déploiement basé sur des règles des services et des tâches Cloud Run.

Avant de commencer

Configurez Cloud Run et activez les API en procédant comme suit :

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. Enable the Cloud Run, Artifact Registry, Binary Authorization APIs.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the APIs

  5. Install the Google Cloud CLI.

  6. Si vous utilisez un fournisseur d'identité (IdP) externe, vous devez d'abord vous connecter à la gcloud CLI avec votre identité fédérée.

  7. Pour initialiser la gcloud CLI, exécutez la commande suivante :

    gcloud init
  8. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  9. Verify that billing is enabled for your Google Cloud project.

  10. Enable the Cloud Run, Artifact Registry, Binary Authorization APIs.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the APIs

  11. Install the Google Cloud CLI.

  12. Si vous utilisez un fournisseur d'identité (IdP) externe, vous devez d'abord vous connecter à la gcloud CLI avec votre identité fédérée.

  13. Pour initialiser la gcloud CLI, exécutez la commande suivante :

    gcloud init
  14. Activer l'autorisation binaire sur un service Cloud Run existant

    Vous pouvez activer l'application de l'autorisation binaire sur un service existant. Pour activer l'application après l'avoir activée, vous devrez peut-être déployer une révision ou un trafic de service mis à jour.

    Vous pouvez activer l'application de l'autorisation binaire sur un service existant à l'aide de la console Google Cloud ou de Google Cloud CLI :

    Console

    1. Accédez à la page Cloud Run de la console Google Cloud .

      Accédez à Cloud Run

    2. Cliquez sur le service.

    3. Cliquez sur l'onglet Sécurité.

    4. Pour activer l'application de l'autorisation binaire sur le service, cliquez sur Activer.

    5. Facultatif : Pour configurer la stratégie d'autorisation binaire, cliquez sur Configurer la stratégie.

    gcloud

    Activez l'autorisation binaire sur le service et déployez-la :

    gcloud run services update SERVICE_NAME --binary-authorization=default
    

    Remplacez SERVICE_NAME par le nom que vous souhaitez donner à votre compte de service.

    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/binary-authorization: comme suit :

      apiVersion: serving.knative.dev/v1
      kind: Service
      metadata:
        annotations:
          run.googleapis.com/binary-authorization: POLICY
        name: SERVICE
      spec:
        template:

      Remplacez les éléments suivants :

      • SERVICE : nom de votre job Cloud Run.
      • POLICY : défini sur default
    3. Remplacez la configuration du service en utilisant la commande suivante :

    gcloud run services replace service.yaml

    Activer l'autorisation binaire sur une tâche Cloud Run existante

    Vous pouvez activer l'application de l'autorisation binaire sur un job existant à l'aide de la consoleGoogle Cloud ou de Google Cloud CLI :

    Console

    1. Accédez à la page des jobs Cloud Run dans la console Google Cloud .

      Accédez à Cloud Run

    2. Cliquez sur le job pour en afficher les détails.

    3. Cliquez sur l'onglet Configuration.

    4. Sous Autorisation binaire, sélectionnez une règle dans la liste des stratégies.

    5. Cliquez sur Appliquer pour activer l'application de l'autorisation binaire sur le job.

    6. Facultatif : Pour configurer la stratégie d'autorisation binaire, cliquez sur Configurer la stratégie.

    gcloud

    Activez l'autorisation binaire sur le job :

    gcloud run jobs update JOB_NAME --binary-authorization=POLICY
    

    Remplacez les éléments suivants :

    • JOB_NAME : nom de votre job.
    • POLICY : règle que vous souhaitez appliquer. Définissez la valeur default pour utiliser la règle par défaut.

    Nous vous recommandons d'exiger l'autorisation binaire pour Cloud Run en configurant une règle d'administration. Si la règle n'est pas configurée, les développeurs Cloud Run peuvent désactiver l'autorisation binaire

    Afficher la règle

    Pour afficher la règle, cliquez sur Afficher la règle.

    Pour en savoir plus, consultez Configurer une règle d'autorisation binaire.

    Échec du déploiement du service ou du job

    Si le déploiement de votre service ou de votre tâche échoue parce qu'il ne respecte pas la stratégie d'autorisation binaire, vous pouvez rencontrer une erreur semblable à celle-ci :

    Revision REVISION_NAME uses an unauthorized container image.
    Container image IMAGE_NAME is not authorized by policy.
    

    L'erreur contient également des informations sur les raisons pour lesquelles l'image a enfreint la règle. Dans ce cas, vous pouvez utiliser le mode "bris de glace" pour contourner l'application des règles et déployer l'image.

    Activer l'autorisation binaire sur un nouveau service

    Vous pouvez activer l'autorisation binaire sur un nouveau service à l'aide de la console Google Cloud ou de Google Cloud CLI :

    Console

    1. Accéder à la page Cloud Run :

      Accédez à Cloud Run

    2. Cliquez sur Créer un service.

    3. Dans le formulaire Créer un service :

      1. Sélectionnez Cloud Run comme plate-forme de développement.
      2. Sélectionnez la région dans laquelle vous souhaitez créer votre service.
      3. Saisissez le nom du service.
      4. Cliquez sur Suivant pour passer à la page Configurer la première révision du service.
      5. Sélectionnez Déployer une révision à partir d'une image de conteneur existante.
      6. Saisissez ou sélectionnez l'image à déployer.
      7. Développez la section Paramètres avancés.
      8. Cliquez sur l'onglet Sécurité.
      9. Cochez la case Vérifier le déploiement du conteneur avec l'autorisation binaire.

      10. Facultatif : Pour configurer la stratégie d'autorisation binaire, cliquez sur Configurer la stratégie. Pour en savoir plus sur la configuration des règles, consultez Configurer une règle.

      11. Déployez le service.

    gcloud

    Activez l'autorisation binaire sur le service et déployez-la :

      gcloud run deploy SERVICE_NAME --image=IMAGE_URL --binary-authorization=default --region=REGION
    

    Remplacez les éléments suivants :

    • SERVICE_NAME : nom de votre service.
    • IMAGE_URL : image que vous souhaitez déployer.
    • REGION : région dans laquelle vous souhaitez déployer votre service.

    Activer l'autorisation binaire sur une nouvelle tâche

    Vous pouvez activer l'autorisation binaire sur un nouveau job à l'aide de l'une des méthodes suivantes :

    Console

    1. Accédez à la page des jobs Cloud Run :

      Accéder aux jobs Cloud Run

    2. Cliquez sur Créer un job pour afficher le formulaire Créer un job.

      1. Dans le formulaire, spécifiez l'image de conteneur contenant le code de la tâche ou sélectionnez-la dans la liste des conteneurs précédemment déployés.
      2. Le nom de la tâche est généré automatiquement à partir de l'image du conteneur. Vous pouvez modifier le nom du job si nécessaire. Un nom de tâche ne peut plus être modifié une fois que la tâche a été créée.
      3. Sélectionnez la région dans laquelle vous souhaitez créer votre job.
      4. Spécifiez le nombre de tâches que vous souhaitez exécuter dans le job. Toutes les tâches doivent réussir pour que le job aboutisse. Par défaut, les tâches s'exécutent en parallèle.
    3. Cliquez sur Conteneur, variables et secrets, connexions, sécurité pour définir d'autres propriétés de la tâche.

      • Cliquez sur l'onglet Paramètres. Dans la section Ressources, configurez les éléments suivants :

        1. Dans le menu Mémoire, spécifiez la quantité de mémoire requise. La valeur par défaut est la valeur minimale requise (512 Mio).
        2. Dans le menu déroulant Processeur, spécifiez la quantité de processeurs requise. La valeur par défaut est la configuration minimale requise (un processeur).
      • Dans la section Capacité de l'opération :

        1. Sous Délai avant expiration de la tâche, spécifiez la durée maximale en secondes pendant laquelle la tâche peut être exécutée, dans la limite de 168 heures (7 jours). Chaque tâche doit être terminée dans le délai spécifié. La valeur par défaut est de 10 minutes.

        2. Sous Nombre de nouvelles tentatives par tâche en échec, spécifiez le nombre de tentatives en cas d'échec de la tâche. La valeur par défaut est de trois nouvelles tentatives.

      • Dans la section Parallélisme :

        1. Dans la plupart des cas, vous pouvez sélectionner Exécuter simultanément autant de tâches que possible.
        2. Si vous devez définir une limite inférieure en raison de contraintes de scaling sur les ressources auxquelles votre job accède, sélectionnez Limiter le nombre maximal de tâches simultanées et spécifiez le nombre de tâches simultanées dans le champ Limite de parallélisme personnalisée.
    4. Une fois la tâche configurée, cliquez sur Créer pour créer la tâche dans Cloud Run.

    5. Pour exécuter le job, consultez la page Exécuter des jobs ou Exécuter des jobs selon un calendrier.

    gcloud

    1. Créez un job avec l'autorisation binaire activée :

      gcloud run jobs create JOB_NAME \
        --image IMAGE_URL OPTIONS \
        --binary-authorization=POLICY \
        --region=REGION

      Remplacez les éléments suivants :

      • JOB_NAME : nom du job que vous souhaitez créer. Vous pouvez omettre ce paramètre, mais dans ce cas, le nom de la tâche vous sera demandé.
      • POLICY : règle que vous souhaitez appliquer. Définissez la valeur default pour utiliser la règle par défaut.
      • IMAGE_URL : référence à l'image de conteneur (par exemple, us-docker.pkg.dev/cloudrun/container/job:latest).
      • REGION : région dans lequel le job sera exécuté.
      • OPTIONS : l'une des options disponibles décrites sur la page de création de job de Cloud Run.
    2. Patientez pendant la création de la tâche. Une fois l'opération achevée, la console affiche un message de réussite.

    3. Pour exécuter le job, consultez la page Exécuter des jobs ou Exécuter des jobs selon un calendrier.

    Lorsque vous créez un job, l'agent de service Cloud Run doit pouvoir accéder au conteneur, ce qui est le cas par défaut.

    YAML

    1. Créez un fichier job.yaml avec le contenu suivant :

      apiVersion: run.googleapis.com/v1
      kind: Job
      metadata:
        name: JOB
        annotations:
          run.googleapis.com/binary-authorization: POLICY
      spec:
        template:
          spec:
            containers:
            - image: IMAGE

      Remplacez les éléments suivants :

      • JOB : nom de votre job Cloud Run.
      • IMAGE : URL de votre image de conteneur
      • POLICY : défini sur default
    2. Déployez la nouvelle tâche à l'aide de la commande suivante :

      gcloud run jobs replace job.yaml

    Étapes suivantes