IAM のロールと権限

このページでは、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 を表示できる

resources.

clouddeploy.*.get

clouddeploy.*.list

roles/clouddeploy.admin Google Cloud Deploy のリソースをすべて管理できる権限。 clouddeploy.*
roles/clouddeploy.developer 作成、取得、更新、

Google Cloud Deploy デリバリー パイプライン リソースを削除する。

clouddeploy.deliveryPipelines.get

clouddeploy.deliveryPipelines.list

clouddeploy.deliveryPipelines.create

clouddeploy.deliveryPipelines.delete

clouddeploy.deliveryPipelines.update

clouddeploy.deliveryPipelines.getIamPolicy

clouddeploy.releases.*

clouddeploy.rollouts.get

clouddeploy.rollouts.list

clouddeploy.operations.*

roles/clouddeploy.operator 作成、取得、更新、削除

Google Cloud Deploy のターゲット リソース。

リリース リソースとロールアウト リソースを作成、取得、削除できます。

clouddeploy.deliveryPipelines.get

clouddeploy.deliveryPipelines.list

clouddeploy.deliveryPipelines.create

clouddeploy.deliveryPipelines.delete

clouddeploy.deliveryPipelines.update

clouddeploy.deliveryPipelines.getIamPolicy

clouddeploy.releases.*

clouddeploy.targets.*

clouddeploy.rollouts.list

clouddeploy.rollouts.get

clouddeploy.rollouts.create

clouddeploy.operations.*

roles/clouddeploy.approver Google Cloud Deploy の表示と承認が可能

ロールアウト リソースのみ。

clouddeploy.rollouts.get

clouddeploy.rollouts.list

clouddeploy.rollouts.approve

clouddeploy.operations.*

roles/clouddeploy.jobRunner Google Cloud Deploy 作業を実行可能

(ターゲットにデプロイする権限は不要)。

logging.logEntries.create

storage.objects.create

storage.objects.list

storage.objects.get

roles/clouddeploy.releaser リリースとロールアウトの作成と取得が可能 clouddeploy.deliveryPipelines.get

clouddeploy.targets.get

clouddeploy.releases.list

clouddeploy.releases.get

clouddeploy.releases.create

clouddeploy.rollouts.list

clouddeploy.rollouts.get

clouddeploy.rollouts.create

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 既存のデリバリー パイプライン リソースを更新します。
operations.cancel() clouddeploy.operations.cancel 長時間実行オペレーションをキャンセルします。
operation.delete() clouddeploy.operations.delete 長時間実行オペレーションを削除します。
operations.get() clouddeploy.operations.get 特定の長時間実行オペレーションを取得します(たとえば、リリース作成のステータスを返すため)。
operations.list() clouddeploy.operations.list 長時間実行オペレーションを一覧表示します。
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 ロールアウトとメタデータを一覧表示します。
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 リソースに対する次のアクションを制限できます。

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

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

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

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

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

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

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

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

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

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

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

次のステップ