このページでは、Google Cloud Deploy のサービス アカウント、ロール、権限について説明します。
Google Cloud Deploy におけるアクセスは、Identity and Access Management(IAM)を使用して制御されます。IAM を使用すると、Google Cloud リソースに関する権限を作成し、管理できます。Google Cloud Deploy では、事前定義の IAM ロールのセットが用意されています。各ロールには、一連の権限が含まれています。これらのロールを使用すると、特定の Google Cloud リソースへのアクセスを細かく制限し、他のリソースへの不要なアクセスを防ぐことができます。IAM を使用すると、セキュリティに関する最小権限の原則を導入できるため、リソースに対する必要なアクセス権のみを付与できます。
高度なアクセス制御のセキュリティ機能については、IAM を使用して Google Cloud Deploy アクセスを制限するをご覧ください。
Google Cloud Deploy のサービス アカウント
デフォルトでは、Google Cloud Deploy はデフォルトの Compute Engine サービス アカウントを使用して実行されます。そのサービス アカウントには、マニフェストをレンダリングしターゲットにデプロイするための十分な権限があります。
Google Cloud Deploy でサービス アカウントがどのように使用されるかについて確認する。
事前定義された Google Cloud Deploy のロール
IAM では、Google Cloud Deploy API のすべての API メソッドで、API リクエストを行う ID がリソースの使用に必要な権限を保持していることが要求されます。権限を付与するには、プロジェクトのプリンシパル(ユーザー、グループ、またはサービス アカウント)にロールを付与するポリシーを設定します。同じリソースのプリンシパルに複数のロールを付与できます。
次の表に、Google Cloud Deploy の IAM ロールと、それに含まれる権限を示します。
ロール | 説明 | 権限 |
---|---|---|
roles/clouddeploy.viewer
|
Google Cloud Deploy の表示が可能
リソース。 |
clouddeploy.*.get
|
roles/clouddeploy.admin |
Google Cloud Deploy のリソースをすべて管理できる権限。 | clouddeploy.* |
roles/clouddeploy.developer
|
作成、取得、更新、 Google Cloud Deploy デリバリー パイプライン リソースを削除する。 |
clouddeploy.deliveryPipelines.get
|
roles/clouddeploy.operator
|
作成、取得、更新、削除が可能
Google Cloud Deploy のデリバリー パイプラインとターゲット リソース。 リリース、ロールアウト、ジョブ実行のリソースの作成および取得が可能。 |
clouddeploy.deliveryPipelines.get
|
roles/clouddeploy.approver
|
Google Cloud Deploy の表示と承認が可能
ロールアウト リソースのみ。 |
clouddeploy.rollouts.get
|
roles/clouddeploy.jobRunner
|
Google Cloud Deploy 作業を実行可能 (ターゲットにデプロイする権限は不要)。 |
logging.logEntries.create
|
roles/clouddeploy.releaser
|
リリースとロールアウトの作成と取得が可能 | clouddeploy.deliveryPipelines.get
|
Google Cloud Deploy の事前定義ロールに加えて、基本閲覧者、編集者、オーナーのロールには、Google Cloud Deploy に関連する権限も含まれています。 ただし、最小権限のセキュリティ原則に準拠するように、事前定義されたロールを付与することをおすすめします。
権限
次の表に、各メソッドを呼び出すために呼び出し元が持っている必要のある権限のリストを示します。
API メソッド | 必要な権限 | 説明 |
---|---|---|
deliveryPipelines.create() |
clouddeploy.deliveryPipelines.create |
新しいデリバリー パイプライン リソースを作成します。 |
deliveryPipelines.delete() |
clouddeploy.deliveryPipelines.delete |
既存のデリバリー パイプライン リソースを削除します。 |
deliveryPipelines.get() |
clouddeploy.deliveryPipelines.get |
個々のデリバリー パイプラインの詳細を取得します。 |
deliveryPipelines.getIamPolicy() |
clouddeploy.deliveryPipelines.getIamPolicy |
デリバリー パイプライン リソースの IAM ポリシーを取得します。 |
deliveryPipelines.list() |
clouddeploy.deliveryPipelines.list |
デリバリー パイプラインとそのメタデータを一覧表示します。 |
deliveryPipelines.setIamPolicy() |
clouddeploy.deliveryPipelines.setIamPolicy |
デリバリー パイプライン リソースの IAM ポリシーを設定します。 |
deliveryPipelines.update() |
clouddeploy.deliveryPipelines.update |
既存のデリバリー パイプライン リソースを更新します。 |
jobRuns.get() |
clouddeploy.jobRuns.get |
JobRuns リソースを取得します。 |
jobRuns.list() |
clouddeploy.jobRuns.list |
JobRuns リソースとそのメタデータを一覧表示します。 |
operations.cancel() |
clouddeploy.operations.cancel |
長時間実行オペレーションをキャンセルします。 |
operation.delete() |
clouddeploy.operations.delete |
長時間実行オペレーションを削除します。 |
operations.get() |
clouddeploy.operations.get |
特定の長時間実行オペレーションを取得します(たとえば、リリース作成のステータスを返すため)。 |
operations.list() |
clouddeploy.operations.list |
長時間実行オペレーションを一覧表示します。 |
releases.abandon() |
clouddeploy.releases.abandon |
リリースを放棄し、そのリリース以降はロールアウトされないようにします。 |
releases.create() |
clouddeploy.releases.create |
新しいリリース リソースを作成します。呼び出し元には、マニフェストのレンダリングに使用されたサービス アカウントに対する iam.serviceAccounts.actAs 権限も必要です。 |
releases.get() |
clouddeploy.releases.get |
個々のリリースの詳細を取得します。 |
releases.list() |
clouddeploy.releases.list |
リリースとメタデータを一覧表示します。 |
releases.promote() |
clouddeploy.rollouts.create |
リリースを次のターゲットに昇格させます。 |
rollouts.approve() |
clouddeploy.rollouts.approve |
承認状態が required のロールアウトを承認または拒否します。 |
rollouts.create() |
clouddeploy.rollouts.create |
新しいロールアウト リソースを作成します。呼び出し元には、デプロイに使用したプロジェクトまたはサービス アカウントに対する iam.serviceAccounts.actAs 権限も必要です。 |
rollouts.get() |
clouddeploy.rollouts.get |
個々のロールアウトの詳細を取得します。 |
rollouts.list() |
clouddeploy.rollouts.list |
ロールアウトとメタデータを一覧表示します。 |
rollouts.retryJob() |
clouddeploy.rollouts.retryJob |
失敗したジョブを再試行します。 |
targets.create() |
clouddeploy.targets.create |
新しいターゲット リソースを作成します。 |
targets.delete() |
clouddeploy.targets.delete |
既存のターゲット リソースを削除します。 |
targets.get() |
clouddeploy.targets.get |
個々のターゲットの詳細を取得します。 |
targets.getIamPolicy() |
clouddeploy.targets.getIamPolicy |
ターゲット リソースの IAM ポリシーを取得します。 |
targets.list() |
clouddeploy.targets.list |
ターゲットとそのメタデータを一覧表示します。 |
targets.setIamPolicy() |
clouddeploy.targets.setIamPolicy |
ターゲット リソースの IAM ポリシーを設定します。 |
targets.update() |
clouddeploy.targets.update |
既存のターゲット リソースを更新します。 |
IAM を使用して Google Cloud Deploy リソースに対するアクションを制限する
次の方法で IAM を使用すると、Google Cloud Deploy リソースを保護できます。
IAM メタ API
Google Cloud Deploy リソースに対して
setIamPolicy
を使用して、これらのリソースに対するアクションを制限します。条件付き IAM
これらのポリシーと条件を使用して、Google Cloud Deploy リソースに対する次のアクションを制限できます。
デリバリー パイプラインまたはターゲットを作成する
このアクセス権は、特定のユーザーまたはグループに付与できます。
特定のデリバリー パイプラインを更新または削除する
このアクセス権は、特定のユーザーまたはグループに付与できます。
特定のデリバリー パイプラインのリリースを作成する
このアクセス権は、特定のユーザーまたはグループに付与できます。
特定のターゲットの更新または削除を行う
このアクセス権は、特定のユーザーまたはグループに付与できます。
ロールアウトの作成または承認、リリースの昇格を行う
このアクセス権は、特定のターゲットまたはデリバリー パイプラインに対して特定のユーザーまたはグループに付与できます。
指定した時間枠内にこのアクセスを制限する条件を設定することもできます。
次のステップ
- IAM について学習する。
- IAM で条件を使用する方法を確認する
- Google Cloud Deploy サービス アカウントについて詳細を確認する。