2024年12月17日より、Cloud Run を呼び出すための権限を持つ3つの事前定義ロールが新たに利用可能となりました。当記事ではロールの詳細や、従来から利用されてきた事前定義ロールとの違いなどを解説します。
はじめに
2024年12月17日より、Cloud Run を呼び出すための権限を持つ以下の3つの事前定義ロールが新たに利用可能となりました。
- Cloud Run サービス起動元(
roles/run.servicesInvoker
) - Cloud Run ジョブ エグゼキュータ(
roles/run.jobsExecutor
) - オーバーライドを使用する Cloud Run ジョブ エグゼキュータ(
roles/run.jobsExecutorWithOverrides
)
当記事ではロールの詳細や、従来から利用されてきた事前定義ロールとの違いなどを解説します。
新たな事前定義ロール
Cloud Run サービス起動元
Cloud Run サービス起動元(roles/run.servicesInvoker
、英名 Cloud Run Service Invoker)ロールは以下の権限のみが付与された事前定義ロールで、Cloud Run services のサービス呼び出し、および Cloud Run functions の関数呼び出しを可能にします。このロールを持っていても Cloud Run jobs のジョブ実行はできません。
- run.routes.invoke
Cloud Run ジョブ エグゼキュータ
Cloud Run ジョブ エグゼキュータ(roles/run.jobsExecutor
、英名 Cloud Run Jobs Executor)ロールは以下の2つの権限が付与された事前定義ロールで、Cloud Run jobs のジョブ実行とジョブのキャンセルを可能にします。このロールを持っていても、Cloud Run services のサービス呼び出し、および Cloud Run functions の関数呼び出しはできません。
- run.jobs.run
- run.executions.cancel
オーバーライドを使用する Cloud Run ジョブ エグゼキュータ
オーバーライドを使用する Cloud Run ジョブ エグゼキュータ(roles/run.jobsExecutorWithOverrides
、英名 Cloud Run Jobs Executor With Overrides)ロールは以下の3つの権限が付与された事前定義ロールで、Cloud Run jobs のジョブ実行、ジョブのキャンセルのほか、ジョブ構成をオーバーライドしたジョブの実行が可能です。
- run.jobs.run
- run.executions.cancel
- run.jobs.runWithOverrides
ジョブ構成をオーバーライドした実行の詳細については以下の記事で解説しています。
Cloud Run 起動元ロールとの比較
権限内容の比較
従来、Cloud Run のサービス・関数・ジョブの実行については、Cloud Run 起動元(roles/run.invoker
)ロールの使用が推奨されていました。この事前定義ロールには、以下の2つの権限が付与されています。これらの権限により、サービス・関数・ジョブのいずれも実行することができます。
- run.routes.invoke
- run.jobs.run
新しい事前定義ロール、特に「Cloud Run サービス起動元」と「Cloud Run ジョブ エグゼキュータ」の2つは、従来からある Cloud Run 起動元 ロールの役割を分割したような形になっています。これにより、「サービス・関数の呼び出しのみができるプリンシパル」と「ジョブの実行のみができるプリンシパル」といった最小権限の原則を意識した権限管理ができるようになります。
Cloud Run jobs のキャンセル、オーバーライドに関して
従来の Cloud Run 起動元ロールには、Cloud Run jobs のジョブ実行をキャンセルするための権限(run.executions.cancel)や、ジョブ構成をオーバーライドするための権限(run.jobs.runWithOverrides)がありません。そのため、ジョブのキャンセルやオーバーライドを行いたい場合は Cloud Run 開発者(roles/run.developer)ロールが必要でした。
しかし、Cloud Run 開発者 ロールは Cloud Run の作成、更新、削除の権限も持っているため、プリンシパルにジョブの実行に関することだけをさせたい場合、過剰な権限を与えてしまうことになります。
新たに追加された「Cloud Run ジョブ エグゼキュータ」および「オーバーライドを使用する Cloud Run ジョブ エグゼキュータ」ロールでは、ジョブの実行時に必要となる権限のみが付与されています。
そのため、たとえばワークフローから環境によって構成をオーバーライドしたジョブを実行するようなケースで、ワークフローが使用するサービスアカウントなどのプリンシパルに対して過剰な権限を持たせずに済みます。
参考リンク
佐々木 駿太 (記事一覧)
G-gen最北端、北海道在住のクラウドソリューション部エンジニア
2022年6月にG-genにジョイン。Google Cloud Partner Top Engineer 2025 Fellowに選出。好きなGoogle CloudプロダクトはCloud Run。
趣味はコーヒー、小説(SF、ミステリ)、カラオケなど。
Follow @sasashun0805