IAM のロールと権限

このページでは、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 がリソースの使用に必要な権限を保持していることが要求されます。権限を付与するには、プロジェクトのプリンシパル(ユーザー、グループ、またはサービス アカウント)にロールを付与するポリシーを設定します。同じリソースのプリンシパルに複数のロールを付与できます。

IAM のドキュメントには、すべての事前定義ロールの検索可能なリファレンスが含まれています。

次の表に、Cloud Deploy IAM のロールとそこに含まれる権限を示します。

権限

roles/clouddeploy.admin

Cloud Deploy のリソースをすべて管理できる権限。

clouddeploy.*

resourcemanager.projects.get

resourcemanager.projects.list

roles/clouddeploy.approver

ロールアウトを承認または拒否する権限。

clouddeploy.config.get

clouddeploy.jobRuns.get

clouddeploy.jobRuns.list

clouddeploy.locations.*

clouddeploy.operations.*

clouddeploy.rollouts.approve

clouddeploy.rollouts.get

clouddeploy.rollouts.list

resourcemanager.projects.get

resourcemanager.projects.list

roles/clouddeploy.customTargetTypeAdmin)。

CustomTargetType リソースの管理権限

clouddeploy.config.get

clouddeploy.customTargetTypes.*

resourcemanager.projects.get

resourcemanager.projects.list

roles/clouddeploy.developer

デプロイ構成を管理する権限。ターゲットなどの運用リソースにアクセスする権限はありません。

clouddeploy.automationRuns.get

clouddeploy.automationRuns.list

clouddeploy.automations.get

clouddeploy.automations.list

clouddeploy.config.get

clouddeploy.deliveryPipelines.create

clouddeploy.deliveryPipelines.delete

clouddeploy.deliveryPipelines.get

clouddeploy.deliveryPipelines.getIamPolicy

clouddeploy.deliveryPipelines.list

clouddeploy.deliveryPipelines.update

clouddeploy.jobRuns.get

clouddeploy.jobRuns.list

clouddeploy.locations.*

clouddeploy.operations.*

clouddeploy.releases.*

clouddeploy.rollouts.get

clouddeploy.rollouts.list

resourcemanager.projects.get

resourcemanager.projects.list

roles/clouddeploy.jobRunner

Cloud Deploy の作業を実行する権限です。ターゲットに提供する権限はありません。

clouddeploy.config.get

logging.logEntries.create

storage.objects.create

storage.objects.get

storage.objects.list

roles/clouddeploy.operator

デプロイ構成を管理する権限。

clouddeploy.automationRuns.*

clouddeploy.automations.*

clouddeploy.config.get

clouddeploy.customTargetTypes.get

clouddeploy.customTargetTypes.getIamPolicy

clouddeploy.customTargetTypes.list

clouddeploy.deliveryPipelines.create

clouddeploy.deliveryPipelines.delete

clouddeploy.deliveryPipelines.get

clouddeploy.deliveryPipelines.getIamPolicy

clouddeploy.deliveryPipelines.list

clouddeploy.deliveryPipelines.update

clouddeploy.jobRuns.*

clouddeploy.locations.*

clouddeploy.operations.*

clouddeploy.releases.*

clouddeploy.rollouts.advance

clouddeploy.rollouts.cancel

clouddeploy.rollouts.create

clouddeploy.rollouts.get

clouddeploy.rollouts.ignoreJob

clouddeploy.rollouts.list

clouddeploy.rollouts.retryJob

clouddeploy.rollouts.rollback

clouddeploy.targets.create

clouddeploy.targets.delete

clouddeploy.targets.get

clouddeploy.targets.getIamPolicy

clouddeploy.targets.list

clouddeploy.targets.update

resourcemanager.projects.get

resourcemanager.projects.list

roles/clouddeploy.releaser

Cloud Deploy のリリースとロールアウトを作成する権限。

clouddeploy.config.get

clouddeploy.customTargetTypes.get

clouddeploy.deliveryPipelines.get

clouddeploy.jobRuns.get

clouddeploy.jobRuns.list

clouddeploy.locations.*

clouddeploy.operations.*

clouddeploy.releases.create

clouddeploy.releases.get

clouddeploy.releases.list

clouddeploy.rollouts.advance

clouddeploy.rollouts.cancel

clouddeploy.rollouts.create

clouddeploy.rollouts.get

clouddeploy.rollouts.list

clouddeploy.rollouts.rollback

clouddeploy.targets.get

resourcemanager.projects.get

resourcemanager.projects.list

roles/clouddeploy.viewer

Cloud Deploy リソースを閲覧できます。

clouddeploy.automationRuns.get

clouddeploy.automationRuns.list

clouddeploy.automations.get

clouddeploy.automations.list

clouddeploy.config.get

clouddeploy.customTargetTypes.get

clouddeploy.customTargetTypes.getIamPolicy

clouddeploy.customTargetTypes.list

clouddeploy.deliveryPipelines.get

clouddeploy.deliveryPipelines.getIamPolicy

clouddeploy.deliveryPipelines.list

clouddeploy.jobRuns.get

clouddeploy.jobRuns.list

clouddeploy.locations.*

clouddeploy.operations.get

clouddeploy.operations.list

clouddeploy.releases.get

clouddeploy.releases.list

clouddeploy.rollouts.get

clouddeploy.rollouts.list

clouddeploy.targets.get

clouddeploy.targets.getIamPolicy

clouddeploy.targets.list

resourcemanager.projects.get

resourcemanager.projects.list

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 自動化の実行とそのメタデータを一覧表示します。
customTargetTypes.create() clouddeploy.customTargetType.create カスタム ターゲット タイプのリソースを作成します。
customTargetTypes.delete() clouddeploy.customTargetType.delete カスタム ターゲット タイプのリソースを削除します。
customTargetTypes.get() clouddeploy.customTargetType.get カスタム ターゲット タイプの詳細を取得します。
customTargetTypes.getIamPolicy() clouddeploy.customTargetType.getIamPolicy カスタム ターゲット タイプのリソースの IAM ポリシーを取得します。
customTargetTypes.list() clouddeploy.customTargetType.list 使用可能なカスタム ターゲット タイプとメタデータを一覧表示します。
customTargetTypes.patch() clouddeploy.customTargetType.patch 既存のカスタム ターゲット タイプを更新します。
customTargetTypes.setIamPolicy() clouddeploy.customTargetType.setIamPolicy カスタム ターゲット タイプのリソースの IAM ポリシーを設定します。
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 リソースに対して次のアクションを制限できます。

  • デリバリー パイプラインまたはターゲットを作成する

    このアクセス権は、特定のユーザーまたはグループに付与できます。

  • 特定のデリバリー パイプラインを更新または削除する

    このアクセス権は、特定のユーザーまたはグループに付与できます。

  • 特定のデリバリー パイプラインのリリースを作成する

    このアクセス権は、特定のユーザーまたはグループに付与できます。

  • 特定のターゲットの更新または削除を行う

    このアクセス権は、特定のユーザーまたはグループに付与できます。

  • ロールアウトの作成または承認、リリースの昇格を行う

    このアクセス権は、特定のターゲットまたはデリバリー パイプラインに対して特定のユーザーまたはグループに付与できます。

    指定した時間枠内にこのアクセスを制限する条件を設定することもできます。

次のステップ