Compilations de portes basées sur la règle d'administration

Cloud Build vous permet de définir une règle d'administration (constraints/cloudbuild.allowedIntegrations) pour contrôler les services externes qui peuvent appeler des déclencheurs de compilation. Par exemple, si votre déclencheur écoute les modifications apportées à un dépôt GitHub et que GitHub est refusé dans la règle d'administration, votre déclencheur ne sera pas exécuté. Vous pouvez spécifier un nombre illimité de valeurs autorisées ou refusées pour votre organisation ou votre projet.

Cette page explique comment configurer la règle d'administration (constraints/cloudbuild.allowedIntegrations) pour les intégrations à l'aide de la console Google Cloud et de l'outil de ligne de commande gcloud.

Avant de commencer

  • Activer les API Cloud Build and Organization Policy.

    Activer les API

  • Pour utiliser les exemples de ligne de commande de ce guide, installez et configurez le SDK Google Cloud.

  • Pour définir, modifier ou supprimer une règle d'administration, vous devez disposer du rôle Administrateur des règles d'administration (roles/orgpolicy.policyAdmin). Pour savoir comment ajouter le rôle à votre compte, consultez Ajouter un administrateur des règles d'administration.

Configurer une règle d'administration pour les intégrations autorisées

Cette section explique comment configurer la règle d'administration (constraints/cloudbuild.allowedIntegrations) pour définir des builds pour les intégrations autorisées.

Console

  1. Ouvrez la page Règles d'administration dans la console Google Cloud.

    Ouvrir la page Règles d'administration

  2. Cliquez sur la ligne contenant la règle Intégrations autorisées (Cloud Build).

    La page Détails des règles s'affiche.

  3. Pour modifier la règle, cliquez sur Modifier.

    La page Modifier la règle s'affiche.

  4. Dans la section S'applique à, sélectionnez Personnaliser pour définir la définition de votre règle.

  5. Dans la section Application des règles, sélectionnez Remplacer pour définir vos propres règles. Sinon, sélectionnez Merge with parent (Fusionner avec le parent) pour vous assurer que les règles de la ressource parente sont appliquées à vos paramètres. Pour en savoir plus, consultez Comprendre l'évaluation hiérarchique.

  6. Dans la section Règles, cliquez sur Ajouter une règle pour ajouter une nouvelle règle à votre stratégie.

  7. Sous Valeurs de règle, sélectionnez Tout autoriser pour autoriser les compilations de tous les services, Refuser tout pour refuser les compilations de tous les services, ou Personnalisé pour autoriser ou refuser les compilations à partir de services spécifiques.

    Si vous sélectionnez Personnalisée, procédez comme suit:

    1. Dans la section Type de règle, sélectionnez Autoriser ou Refuser.

    2. Dans la section Valeurs personnalisées, saisissez l'URL hôte de l'instance ou du dépôt à partir duquel vous souhaitez autoriser ou refuser les compilations. Par exemple, pour autoriser ou refuser les compilations depuis GitHub, saisissez votre URL github.com ou www.github.com.

      Vous pouvez également saisir plusieurs URL en les séparant par un espace. (par exemple, github.com ghe.staging-test.com)

      En fonction de l'événement, l'URL d'hôte que vous spécifiez est l'une des suivantes:

      • Événement RepoSync: l'hôte est source.developers.google.com.
      • Événement d'application GitHub: l'hôte est dérivé du champ repository.html_url de votre charge utile JSON, qui est toujours github.com.
      • Événement GitHub Enterprise: l'hôte est dérivé du champ repository.html_url de votre charge utile JSON. Par exemple, ghe.staging-test.com.
      • Événement Pub/Sub: l'hôte est dérivé de la source spécifiée dans votre déclencheur. Si aucune source n'est spécifiée dans votre déclencheur, les règles d'administration ne sont pas vérifiées.
      • Événement de webhook: l'hôte est dérivé de la source spécifiée dans votre déclencheur. Si aucune source n'est spécifiée dans votre déclencheur, les règles d'administration sont vérifiées.
  8. Pour enregistrer votre règle, cliquez sur OK.

  9. Pour ajouter une autre règle, cliquez sur Ajouter une règle. Sinon, pour enregistrer votre règle, cliquez sur Enregistrer.

gcloud

  1. Ouvrez une fenêtre de terminal.

  2. Si vous souhaitez autoriser ou refuser les compilations depuis tous les services, créez un fichier YAML avec le contenu suivant:

    name: projects/PROJECT_NUMBER/policies/cloudbuild.allowedIntegrations
    spec:
      inheritFromParent: INHERIT
      rules:
        - ALLOW_OR_DENY: true
    

    Où :

    • PROJECT_NUMBER est le numéro de votre projet.
    • INHERIT est défini sur true si vous souhaitez que les règles de stratégie soient héritées de la ressource parente. Sinon, cette valeur est false.
    • ALLOW_OR_DENY est défini sur allowAll si vous souhaitez autoriser les compilations à partir de toutes les URL hôtes. Sinon, vous devez utiliser denyAll.
    • HOST_URL est l'URL de votre hôte. Exemple : github.com. Vous pouvez également spécifier des URL supplémentaires sur les lignes suivantes.

    Si vous souhaitez autoriser ou refuser les compilations à partir de services sélectionnés, créez un fichier YAML avec le contenu suivant:

    name: projects/PROJECT_NUMBER/policies/cloudbuild.allowedIntegrations
    spec:
      inheritFromParent: INHERIT
      rules:
        - values:
            ALLOW_OR_DENY:
              HOST_URL
              ...
    

    Où :

    • PROJECT_NUMBER est le numéro de votre projet.
    • INHERIT est défini sur true si vous souhaitez que les règles de stratégie soient héritées de la ressource parente. Sinon, cette valeur est false.
    • ALLOW_OR_DENY est allowedValues si vous souhaitez spécifier des URL d'hôte à partir desquelles autoriser les compilations. Sinon, cette valeur est deniedValues.
    • HOST_URL est l'URL de votre hôte. Exemple : github.com. Vous pouvez également spécifier des URL supplémentaires sur les lignes suivantes.
  3. Pour définir votre règle d'administration, exécutez la commande suivante, où FILE_NAME est le nom de votre fichier YAML:

     gcloud org-policies set-policy FILE_NAME
    
  4. Pour vérifier que votre stratégie a bien été définie, exécutez la commande suivante, où PROJECT_ID correspond à l'ID de votre projet:

     gcloud org-policies describe cloudbuild.allowedIntegrations --effective --project PROJECT_ID
    

Tester la règle d'administration pour les intégrations autorisées

Cette section explique comment tester votre règle d'administration (constraints/cloudbuild.allowedIntegrations) à l'aide de déclencheurs de compilation.

  1. Si vous ne l'avez pas déjà fait, créez un déclencheur de compilation.

  2. Appliquez une modification à votre source.

  3. Si votre règle est configurée pour autoriser les compilations à partir de votre source, vous pouvez afficher les exécutions de compilation à partir de votre déclencheur sur la page Historique de compilation. Sinon, votre compilation ne s'exécutera pas. Pour afficher l'historique des compilations limitées par votre définition de règle, consultez la page Explorateur de journaux pour connaître le motif de la charge utile JSON et le motif du refus.

Étapes suivantes