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