組織のポリシーに基づくゲートビルド

Cloud Build では、組織のポリシー(constraints/cloudbuild.allowedIntegrations)を定義して、ビルドトリガーを呼び出すことができる外部サービスを制御できます。たとえば、トリガーが GitHub リポジトリの変更をリッスンし、GitHub が組織のポリシーで拒否された場合、トリガーは実行されません。組織またはプロジェクトで、任意の数の許可値または拒否値を指定できます。

このページでは、Google Cloud コンソールと gcloud コマンドライン ツールを使用して統合するための組織のポリシー(constraints/cloudbuild.allowedIntegrations)を設定する方法について説明します。

始める前に

  • Enable the Cloud Build and Organization Policy APIs.

    Enable the APIs

  • このガイドのコマンドラインの例を使用するには、Google Cloud SDK をインストールして構成します。

  • 組織ポリシーの設定、変更、削除を行うには、組織ポリシー管理者(roles/orgpolicy.policyAdmin)の役割が必要です。アカウントにロールを追加する方法については、組織ポリシー管理者を追加するをご覧ください。

許可された統合の組織のポリシーの設定

このセクションでは、組織のポリシー(constraints/cloudbuild.allowedIntegrations)を設定して、許可された統合のビルドを定義する方法について説明します。

Console

  1. Cloud コンソールで [組織のポリシー] ページを開きます。

    [組織のポリシー] ページを開く

  2. 許可された統合(Cloud Build)ポリシーを含む行をクリックします。

    [ポリシーの詳細] ページが表示されます。

  3. ポリシーを編集するには、[編集] をクリックします。

    [トリガーの編集] ページが表示されます。

  4. [適用先] セクションで、[カスタマイズ] を選択してポリシーの定義を設定します。

  5. [ポリシーの適用] セクションで、[置換] を選択して、ポリシーに対する独自のルールを定義します。それ以外の場合は、[親と結合する] を選択して、親リソースのルールが設定に適用されるようにします。詳細については、階層評価についてをご覧ください。

  6. [ルール] セクションで [ルールを追加] をクリックして、ポリシーの新しいルールを追加します。

  7. [ポリシーの値] で、[すべて許可] を選択してすべてのサービスからのビルドを許可するか、[すべて拒否] を選択してすべてのサービスからのビルドを拒否するか、[カスタム] を選択して特定のサービスからのビルドを許可または拒否します。

    値として [カスタム] を選択した場合は、次の手順を実行します。

    1. [ポリシータイプ] セクションで、[許可] または [拒否] を選択します。

    2. [カスタム値] セクションで、ビルドを許可または拒否するインスタンスまたはリポジトリのホスト URL を入力します。たとえば、GitHub からのビルドを許可または拒否するには、URL を github.com または www.github.com として入力します。

      複数の URL をスペースで区切って入力することもできます。例: github.com ghe.staging-test.com

      イベントに基づいて、指定するホスト URL は次のいずれかです。

      • RepoSync イベント: ホストは source.developers.google.com です。
      • GitHub アプリイベント: ホストは、JSON ペイロードの repository.html_url フィールド(常に github.com)から派生します。
      • GitHub Enterprise イベント: ホストは JSON ペイロードの repository.html_url フィールドから派生します。例: ghe.staging-test.com
      • Pub/Sub イベント: ホストはトリガーで指定されたソースから派生します。トリガーでソースが指定されていない場合、組織のポリシーのチェックは行われません。
      • Webhook イベント: ホストはトリガーで指定されたソースから派生します。トリガーでソースが指定されていない場合は、組織のポリシーのチェックが行われます。
  8. ルールを保存するには、[完了] をクリックします。

  9. 別のルールを追加するには、[ルールを追加] をクリックします。それ以外の場合、ポリシーを保存するには [保存] をクリックします。

gcloud

  1. ターミナル ウィンドウを開きます。

  2. すべてのサービスからのビルドを許可または拒否する場合は、次の内容の YAML ファイルを作成します。

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

    ここで

    • PROJECT_NUMBER はプロジェクト番号です。
    • INHERIT は、ポリシールールを親リソースから継承する場合、true になります。それ以外の場合は false です。
    • すべてのホスト URL からのビルドを許可する場合、ALLOW_OR_DENYallowAll です。それ以外の場合は denyAll です。
    • HOST_URL はホスト URL です。例: github.com。次の行に追加の URL を指定することもできます。

    選択したサービスからのビルドを許可または拒否する場合は、次の内容の YAML ファイルを作成します。

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

    ここで

    • PROJECT_NUMBER はプロジェクト番号です。
    • INHERIT は、ポリシールールを親リソースから継承する場合、true になります。それ以外の場合は false です。
    • ビルドを許可するホスト URL を指定する場合、ALLOW_OR_DENYallowedValues です。それ以外の場合は deniedValues です。
    • HOST_URL はホスト URL です。例: github.com。次の行に追加の URL を指定することもできます。
  3. 次のコマンドを実行して、組織のポリシーを設定します。ここで、FILE_NAME は YAML ファイルの名前です。

     gcloud org-policies set-policy FILE_NAME
    
  4. ポリシーが設定されていることを確認するには、次のコマンドを実行します。ここで、PROJECT_ID はプロジェクト ID です。

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

許可された統合の組織のポリシーのテスト

このセクションでは、ビルドトリガーを使用して組織のポリシー(constraints/cloudbuild.allowedIntegrations)をテストする方法について説明します。

  1. まだ作成していない場合は、ビルドトリガーを作成します。

  2. 変更をソースに push します。

  3. ソースからのビルドを許可するようにポリシーが設定されている場合は、[ビルド履歴] ページでトリガーからのビルドの実行を表示できます。それ以外の場合、ビルドは実行されません。ポリシー定義によって制限されたビルドの履歴を表示するには、ログ エクスプローラ ページで JSON ペイロードの理由と拒否の理由を確認してください。

次のステップ