Builds einschränken, die von externen Diensten ausgelöst werden

Mit Cloud Build können Sie eine Organisationsrichtlinie (constraints/cloudbuild.allowedIntegrations) definieren, um zu steuern, welche externen Dienste Build-Trigger aufrufen können. Wenn der Trigger beispielsweise Änderungen an einem GitHub-Repository überwacht und GitHub in der Organisationsrichtlinie abgelehnt wurde, wird Ihr Trigger nicht ausgeführt. Sie können für Ihre Organisation oder Ihr Projekt eine beliebige Anzahl von zulässigen oder abgelehnten Werten angeben.

Auf dieser Seite wird erläutert, wie du die Organisationsrichtlinie (constraints/cloudbuild.allowedIntegrations) für Integrationen über die Google Cloud Console und das gcloud-Befehlszeilentool einrichtest.

Vorbereitung

  • Cloud Build and Organization Policy APIs aktivieren.

    Aktivieren Sie die APIs

  • Installieren und konfigurieren Sie das Google Cloud SDK, um die Befehlszeilenbeispiele in dieser Anleitung zu verwenden.

  • Sie benötigen die Rolle „Administrator für Organisationsrichtlinien“ (roles/orgpolicy.policyAdmin), um eine Organisationsrichtlinie festzulegen, zu ändern oder zu löschen. Hier erfahren Sie, wie Sie Ihrem Konto die Rolle hinzufügen.

Organisationsrichtlinie für zulässige Integrationen einrichten

In diesem Abschnitt wird erläutert, wie Sie die Organisationsrichtlinie constraints/cloudbuild.allowedIntegrations festlegen, um Builds für zulässige Integrationen zu definieren.

Console

  1. Öffnen Sie in der Google Cloud Console die Seite Organisationsrichtlinien.

    Seite "Organisationsrichtlinien" öffnen

  2. Klicken Sie auf die Zeile mit der Richtlinie Zulässige Integrationen (Cloud Build).

    Es wird die Seite Richtliniendetails angezeigt.

  3. Klicken Sie auf Bearbeiten, um die Richtlinie zu ändern.

    Es wird die Seite Richtlinie bearbeiten angezeigt.

  4. Wählen Sie im Abschnitt Gilt für die Option Anpassen aus, um die Definition für Ihre Richtlinie festzulegen.

  5. Wählen Sie im Abschnitt Erzwingung der Richtlinien die Option Ersetzen aus, um eigene Regeln für die Richtlinie zu definieren. Wählen Sie andernfalls Mit übergeordnetem Element zusammenführen aus, damit die Regeln in der übergeordneten Ressource auf Ihre Einstellungen angewendet werden. Weitere Informationen zur Hierarchiebewertung

  6. Klicken Sie im Abschnitt Regeln auf Regel hinzufügen, um eine neue Regel für die Richtlinie hinzuzufügen.

  7. Wählen Sie unter Richtlinienwerte die Option Alle zulassen aus, um Builds von allen Diensten zuzulassen. Wählen Sie Alle ablehnen aus, um Builds von allen Diensten abzulehnen, oder Benutzerdefiniert, um Builds von bestimmten Diensten zuzulassen oder abzulehnen.

    Wenn Sie Benutzerdefiniert als Wert auswählen, gehen Sie so vor:

    1. Wählen Sie im Abschnitt Richtlinientyp die Option Zulassen oder Ablehnen aus.

    2. Geben Sie im Abschnitt Benutzerdefinierte Werte die Host-URL der Instanz oder des Repositorys ein, von dem aus Sie Builds zulassen oder ablehnen möchten. Wenn Sie beispielsweise Builds aus GitHub zulassen oder ablehnen möchten, geben Sie Ihre URL als github.com oder www.github.com ein.

      Du kannst auch mehrere durch ein Leerzeichen getrennte URLs eingeben. Beispiel: github.com ghe.staging-test.com

      Basierend auf dem Ereignis ist die Host-URL eine der folgenden:

      • RepoSync-Ereignis: Der Organisator ist source.developers.google.com.
      • GitHub-Anwendungsereignis: Der Host wird aus dem Feld repository.html_url in Ihrer JSON-Nutzlast abgeleitet, das immer github.com ist.
      • GitHub Enterprise-Ereignis: Der Host wird aus dem Feld repository.html_url in Ihrer JSON-Nutzlast abgeleitet. Beispiel: ghe.staging-test.com
      • Pub/Sub-Ereignis: Der Host wird aus der Quelle abgeleitet, die im Trigger angegeben ist. Wenn im Trigger keine Quelle angegeben ist, erfolgt keine Prüfung der Organisationsrichtlinie.
      • Webhook-Ereignis: Der Host wird aus der Quelle abgeleitet, die im Trigger angegeben ist. Wenn im Trigger keine Quelle angegeben ist, wird die Organisationsrichtlinie geprüft.
  8. Klicken Sie zum Speichern der Regel auf Fertig.

  9. Klicken Sie auf Regel hinzufügen, um eine weitere Regel anzugeben. Klicken Sie andernfalls auf Speichern.

gcloud

  1. Öffnen Sie ein Terminalfenster.

  2. Wenn Sie Builds für alle Dienste zulassen oder ablehnen möchten, erstellen Sie eine YAML-Datei mit dem folgenden Inhalt:

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

    Dabei gilt:

    • PROJECT_NUMBER Ihre Projektnummer.
    • INHERIT ist true, wenn die Richtlinienregeln von der übergeordneten Ressource übernommen werden sollen. Andernfalls false.
    • ALLOW_OR_DENY ist allowAll, wenn Sie Builds von allen Host-URLs zulassen möchten. Andernfalls lautet denyAll.
    • HOST_URL ist Ihre Host-URL. Beispiel: github.com Du kannst auch zusätzliche URLs in den folgenden Zeilen angeben.

    Wenn Sie Builds aus ausgewählten Diensten zulassen oder ablehnen möchten, erstellen Sie eine YAML-Datei mit dem folgenden Inhalt:

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

    Dabei gilt:

    • PROJECT_NUMBER Ihre Projektnummer.
    • INHERIT ist true, wenn die Richtlinienregeln von der übergeordneten Ressource übernommen werden sollen. Andernfalls false.
    • ALLOW_OR_DENY ist allowedValues, wenn Sie Host-URLs angeben möchten, aus denen Builds zugelassen werden sollen. Andernfalls deniedValues.
    • HOST_URL ist Ihre Host-URL. Beispiel: github.com Du kannst auch zusätzliche URLs in den folgenden Zeilen angeben.
  3. Legen Sie die Organisationsrichtlinie fest, indem Sie den folgenden Befehl ausführen, wobei FILE_NAME der Name Ihrer YAML-Datei ist:

     gcloud org-policies set-policy FILE_NAME
    
  4. Führen Sie den folgenden Befehl aus, um zu prüfen, ob die Richtlinie festgelegt wurde, wobei PROJECT_ID Ihre Projekt-ID ist:

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

Organisationsrichtlinie für zulässige Integrationen testen

In diesem Abschnitt wird erläutert, wie Sie Ihre Organisationsrichtlinie (constraints/cloudbuild.allowedIntegrations) mit Build-Triggern testen können.

  1. Erstellen Sie einen Build-Trigger, falls noch nicht geschehen.

  2. Übertragen Sie eine Änderung an der Quelle.

  3. Wenn die Richtlinie so eingerichtet ist, dass Builds aus Ihrer Quelle zugelassen werden, können Sie sich Ausführungen aus Ihrem Trigger auf der Seite Build-Verlauf ansehen. Andernfalls wird der Build nicht ausgeführt. Auf der Seite Log-Explorer können Sie den Verlauf für Builds, die durch Ihre Richtliniendefinition eingeschränkt sind, aufrufen und den Grund für die JSON-Nutzlast sowie den Grund für die Ablehnung abrufen.

Weitere Informationen