Cloud Build では、組織のポリシー(constraints/cloudbuild.allowedIntegrations
)を定義して、ビルドトリガーを呼び出せる外部サービスを制御できます。たとえば、トリガーが GitHub リポジトリの変更をリッスンしていて、GitHub が組織のポリシーで拒否されている場合、トリガーは実行されません。組織またはプロジェクトで、任意の数の許可値または拒否値を指定できます。
このページでは、Google Cloud コンソールと gcloud
コマンドライン ツールを使用して統合するための組織のポリシー(constraints/cloudbuild.allowedIntegrations
)を設定する方法について説明します。
始める前に
-
Enable the Cloud Build and Organization Policy APIs.
このガイドのコマンドラインの例を使用するには、Google Cloud SDK をインストールして構成します。
組織ポリシーの設定、変更、削除を行うには、組織ポリシー管理者(
roles/orgpolicy.policyAdmin
)の役割が必要です。アカウントにロールを追加する方法については、組織ポリシー管理者を追加するをご覧ください。
許可された統合の組織のポリシーの設定
このセクションでは、許可された統合のビルドを定義する組織のポリシー(constraints/cloudbuild.allowedIntegrations
)を設定する方法について説明します。
コンソール
Google Cloud コンソールで [組織のポリシー] ページを開きます。
許可された統合(Cloud Build)ポリシーを含む行をクリックします。
[ポリシーの詳細] ページが表示されます。
ポリシーを編集するには、[編集] をクリックします。
[トリガーの編集] ページが表示されます。
[適用先] セクションで、[カスタマイズ] を選択してポリシーの定義を設定します。
[ポリシーの適用] セクションで [置換] を選択し、ポリシーに独自のルールを定義します。それ以外の場合は、[親と結合する] を選択して、親リソースのルールが設定に適用されるようにします。詳細については、階層評価についてをご覧ください。
[ルール] セクションで、[ルールを追加] をクリックして、ポリシーに新しいルールを追加します。
[ポリシーの値] で、[すべて許可] を選択してすべてのサービスからのビルドを許可するか、[すべて拒否] を選択してすべてのサービスからのビルドを拒否するか、[カスタム] を選択して特定のサービスからのビルドを許可または拒否します。
値として [カスタム] を選択した場合は、次の手順を実行します。
[ポリシーの種類] セクションで、[許可] または [拒否] を選択します。
[カスタム値] セクションで、ビルドを許可または拒否するインスタンスまたはリポジトリのホスト 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 イベント: ホストは、トリガーで指定されたソースから取得されます。トリガーにソースが指定されていない場合は、組織のポリシーがチェックされます。
- RepoSync イベント: ホストは
ルールを保存するには、[完了] をクリックします。
別のルールを追加するには、[ルールを追加] をクリックします。それ以外の場合、ポリシーを保存するには [保存] をクリックします。
gcloud
ターミナル ウィンドウを開きます。
すべてのサービスからのビルドを許可または拒否する場合は、次の内容の YAML ファイルを作成します。
name: projects/PROJECT_NUMBER/policies/cloudbuild.allowedIntegrations spec: inheritFromParent: INHERIT rules: - ALLOW_OR_DENY: true
ここで
PROJECT_NUMBER
はプロジェクト番号です。- ポリシールールを親リソースから継承する場合、
INHERIT
はtrue
です。それ以外の場合はfalse
です。 - すべてのホスト URL からのビルドを許可する場合、
ALLOW_OR_DENY
はallowAll
です。それ以外の場合は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_DENY
はallowedValues
です。それ以外の場合はdeniedValues
です。 HOST_URL
はホスト URL です。例:github.com
。次の行で追加の URL を指定することもできます。
次のコマンドを実行して組織のポリシーを設定します。ここで、FILE_NAME は YAML ファイルの名前です。
gcloud org-policies set-policy FILE_NAME
ポリシーが設定されていることを確認するには、次のコマンドを実行します。ここで、PROJECT_ID はプロジェクト ID です。
gcloud org-policies describe cloudbuild.allowedIntegrations --effective --project PROJECT_ID
許可された統合の組織のポリシーのテスト
このセクションでは、ビルドトリガーを使用して組織のポリシー(constraints/cloudbuild.allowedIntegrations
)をテストする方法について説明します。
まだ作成していない場合は、ビルドトリガーを作成します。
ソースに変更を push します。
ソースからのビルドを許可するようにポリシーが設定されている場合は、[ビルド履歴] ページでトリガーからのビルドの実行を表示できます。そうしないと、ビルドは実行されません。ポリシー定義によって制限されているビルドの履歴を表示するには、ログ エクスプローラ ページで JSON ペイロードの理由と拒否の理由を確認します。
次のステップ
- ビルドトリガーを作成および管理する方法を学習する。
- 承認時にゲートビルドする方法を学習する。
- ビルドログの表示に必要な権限を学習する。
- Cloud Build によって作成される監査ログについて学習する。