新しく追加されたCloud Run実行用の事前定義ロールを解説

記事タイトルとURLをコピーする

2024年12月17日より、Cloud Run を呼び出すための権限を持つ3つの事前定義ロールが新たに利用可能となりました。当記事ではロールの詳細や、従来から利用されてきた事前定義ロールとの違いなどを解説します。

はじめに

2024年12月17日より、Cloud Run を呼び出すための権限を持つ以下の3つの事前定義ロールが新たに利用可能となりました。

  1. Cloud Run サービス起動元(roles/run.servicesInvoker
  2. Cloud Run ジョブ エグゼキュータ(roles/run.jobsExecutor
  3. オーバーライドを使用する 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

ジョブ構成をオーバーライドした実行の詳細については以下の記事で解説しています。

blog.g-gen.co.jp

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、ミステリ)、カラオケなど。