デフォルトでは、プロジェクトのオーナーと編集者のみがサービスとジョブの作成、更新、削除、呼び出しを行うことができます。また、プロジェクトのオーナーと Cloud Run 管理者のみが Identity and Access Management(IAM)ポリシーを変更できます(サービスを一般公開するなど)。詳細については、Cloud Run IAM ロールをご覧ください。
これらの操作を他のプリンシパルまたはグループに許可するには、IAM を使用してさまざまなプリンシパルにロールを付与します。
Cloud Run の事前定義ロール
次の事前定義ロールは、基本ロール(オーナー、編集者、閲覧者)と比べてよりきめ細かなアクセス制御を行い、Cloud Run リソースにアクセスすることができます。
ロール | 説明 |
---|---|
Cloud Run 管理者(roles/run.admin ) |
サービスとジョブの作成、更新、削除、ジョブ実行の取得、一覧表示、削除を実行できます。 サービスとジョブの呼び出し、ジョブ実行のキャンセルを実行できます。 IAM ポリシーの取得および設定を実行できます。 推奨事項の表示、適用、拒否を実行できます。 サービスをデプロイするには、追加構成が必要です。 |
Cloud Run デベロッパー(roles/run.developer ) |
サービスとジョブの作成、更新、削除、ジョブ実行の取得、一覧表示、削除を実行できます。 IAM ポリシーを取得できますが、設定することはできません。 推奨事項を表示、適用、拒否できます。 |
Cloud Run 閲覧者(roles/run.viewer ) |
サービス、ジョブ、ジョブ実行を表示できます。 IAM ポリシーを取得できます。 推奨事項を表示できます。 |
Cloud Run 起動元(roles/run.invoker ) |
サービスとジョブの呼び出し、およびジョブ実行のキャンセルを実行できます。 |
個々のサービスやジョブに対するアクセスを制御する
IAM を使用して、サービス単位またはジョブ単位でアクセスを制御できます。
サービスを公開する
このオプションは、公開 API またはウェブサイトの Cloud Run サービス向けです。
Cloud Run Invoker IAM ロールを allUsers
メンバータイプに割り当てると、認証を行わずにサービスを呼び出すことができます。
Cloud Run サービスで認証を構成するには、run.services.setIamPolicy
権限が必要です。この権限は、オーナーと Cloud Run 管理者の両方のロールに含まれています。ロールの一覧とそれに関連する権限については、Cloud Run IAM のロールをご覧ください。
コンソール UI
既存の Cloud Run サービスの場合:
Google Cloud コンソールに移動します。
公開するサービスの左側にあるチェックボックスをオンにします(サービス自体はクリックしないでください)。
右上の情報ペインで、[権限] タブをクリックします。情報ペインが表示されていない場合は、[情報パネルを表示] をクリックしてから [権限] をクリックします。
[プリンシパルを追加] をクリックします。
[新しいプリンシパル] フィールドに値 allUsers
を入力します。
[ロール] プルダウン メニューから Cloud Run 起動元ロールを選択します。
[保存] をクリックします。
このリソースを公開することの確認を求めるメッセージが表示されます。[一般公開アクセスを許可] をクリックして、サービスの IAM 設定に変更を適用します。
作成する新しいサービスの場合は、サービスを作成します。ただし、[認証] タブで [未認証の呼び出しを許可する] を選択します。これにより、サービスが一般公開されます。[認証が必要] を選択すると、サービスは非公開になります。
gcloud
サービスを一般公開するには、gcloud run services
コマンドを使用して、特別な allUsers
メンバータイプをサービスに追加し、roles/run.invoker
ロールを付与します。
gcloud run services add-iam-policy-binding [SERVICE_NAME] \ --member="allUsers" \ --role="roles/run.invoker"
サービスのデプロイ時に gcloud run deploy
コマンドを実行すると、サービスは一般公開されます。
gcloud run deploy [SERVICE_NAME] ... --allow-unauthenticated
YAML
次の内容で policy.yaml
という名前のファイルを作成します。
bindings:
- members:
- allUsers
role: roles/run.invoker
以下を使用して、既存の SERVICE に対する未認証の呼び出しを許可します。
gcloud run services set-iam-policy SERVICE policy.yaml
Terraform
Cloud Run サービスを作成するには、既存の main.tf
ファイルに次の行を追加します。
roles/run.invoker
のサービス IAM バインディングを更新するには、Cloud Run サービスを参照する次のリソースを追加します。
このバインディングは、特定のロールに対してのみ有効です。サービス IAM ポリシー内のその他の IAM バインディングは保持されます。
ドメインで制限された共有
プロジェクトが組織のポリシーにおけるドメインで制限された共有制約の適用対象となっている場合は、公開サービスを作成できません。タグと条件付きポリシーを使用して、特定のサービスをこの制約から除外できます。詳細については、ドメインで制限された共有が適用される場合の公開 Cloud Run サービスの作成に関するブログ記事をご覧ください。
プリンシパルを追加する
プリンシパルは、ジョブまたはサービスに追加できます。
プリンシパルをサービスに追加する
プリンシパルをサービスに追加するには:
コンソール UI
Google Cloud コンソールに移動します。
プリンシパルを追加するサービスの横にあるチェックボックスをオンにします。(サービス自体はクリックしないでください)。
右上の情報ペインで、[権限] タブをクリックします。情報ペインが表示されていない場合は、[情報パネルを表示] をクリックしてから [権限] をクリックします。
[プリンシパルを追加] をクリックします。
[新しいプリンシパル] フィールドに、サービスにアクセスが必要な ID を 1 つ以上入力します。
[ロール] プルダウン メニューからロールを選択します。選択したロールがパネルに表示され、付与される権限の簡単な説明が表示されます。
[保存] をクリックします。
gcloud
gcloud run services add-iam-policy-binding
コマンドを使用します。
gcloud run services add-iam-policy-binding SERVICE_NAME \ --member=MEMBER_TYPE \ --role=ROLE
ここで、SERVICE_NAME
はサービス名、MEMBER_TYPE
はプリンシパル タイプ(user:email@domain.com
など)、ROLE
はロールです。
MEMBER_TYPE
に使用可能な値については、IAM のコンセプト ページをご覧ください。ROLE
に使用可能な値については、Cloud Run IAM ロールをご覧ください。
ジョブにプリンシパルを追加する
プリンシパルをジョブに追加するには:
コンソール UI
Google Cloud コンソールに移動します。
プリンシパルを追加するジョブの左側にあるチェックボックスをオンにします(ジョブはクリックしないでください)。
右上の情報ペインで、[権限] タブをクリックします。情報ペインが表示されていない場合は、[情報パネルを表示] をクリックしてから [権限] をクリックします。
[プリンシパルを追加] をクリックします。
[新しいプリンシパル] テキスト ボックスに、ジョブにアクセスが必要な ID を 1 つ以上入力します。
[ロール] プルダウン メニューからロールを選択します。選択したロールがパネルに表示され、付与される権限の簡単な説明が表示されます。
[保存] をクリックします。
gcloud
gcloud run jobs add-iam-policy-binding
コマンドを使用します。
gcloud run jobs add-iam-policy-binding JOB_NAME \ --member=MEMBER_TYPE \ --role=ROLE
ここで、JOB_NAME
はジョブ名、MEMBER_TYPE
はプリンシパル タイプ(user:email@domain.com
など)、ROLE
はロールです。
MEMBER_TYPE
に使用可能な値については、IAM のコンセプト ページをご覧ください。ROLE
に使用可能な値については、Cloud Run IAM ロールをご覧ください。
ロールからプリンシパルを削除する
サービスまたはジョブからプリンシパルを削除できます。
サービスのロールからプリンシパルを削除する
サービスのロールからプリンシパルを削除するには:
コンソール UI
Google Cloud コンソールに移動します。
プリンシパルを削除するサービスの左側にあるチェックボックスをオンにします(サービス自体はクリックしないでください)。
右上の情報ペインで、[権限] タブをクリックします。情報ペインが表示されていない場合は、[情報パネルを表示] をクリックしてから [権限] をクリックします。
削除するプリンシパルをロールリストのフィルタに入力します。これにより、そのプリンシパルに付与されているすべてのロールが表示されます。
目的のロールのプリンシパルの横にある [削除](ゴミ箱)をクリックして、プリンシパルからロールを削除します。
確認ダイアログで、サービス内のすべてのロールからそのプリンシパルを削除できます。[削除] をクリックして、ロールからプリンシパルを削除します。
gcloud
gcloud run services remove-iam-policy-binding
コマンドを使用します。
gcloud run services remove-iam-policy-binding SERVICE_NAME \ --member=MEMBER_TYPE \ --role=ROLE
ここで、SERVICE_NAME
はサービス名、MEMBER_TYPE
はプリンシパル タイプ(user:email@domain.com
など)、ROLE
はロールです。
MEMBER_TYPE
に使用可能な値については、IAM のコンセプト ページをご覧ください。ROLE
に使用可能な値については、Cloud Run IAM ロールをご覧ください。
ジョブのロールからプリンシパルを削除する
ジョブのロールからプリンシパルを削除するには:
コンソール UI
Google Cloud コンソールに移動します。
プリンシパルを追加するジョブの左側にあるチェックボックスをオンにします(ジョブはクリックしないでください)。
右上の情報ペインで、[権限] タブをクリックします。情報ペインが表示されていない場合は、[情報パネルを表示] をクリックしてから [権限] をクリックします。
削除するプリンシパルをロールリストのフィルタに入力します。これにより、そのプリンシパルに付与されているすべてのロールが表示されます。
目的のロールのプリンシパルの横にある [削除](ゴミ箱)をクリックして、プリンシパルからロールを削除します。
確認ダイアログで、ジョブ内のすべてのロールからそのプリンシパルを削除できます。[削除] をクリックして、ロールからプリンシパルを削除します。
gcloud
gcloud run jobs remove-iam-policy-binding
コマンドを使用します。
gcloud run jobs remove-iam-policy-binding JOB_NAME \ --member=MEMBER_TYPE \ --role=ROLE
ここで、JOB_NAME
はジョブ名、MEMBER_TYPE
はプリンシパル タイプ(user:email@domain.com
など)、ROLE
はロールです。
MEMBER_TYPE
に使用可能な値については、IAM のコンセプト ページをご覧ください。ROLE
に使用可能な値については、Cloud Run IAM ロールをご覧ください。
プリンシパルの一括追加または削除
サービスとジョブの追加または削除は一括で行うことができます。
サービスのプリンシパルの一括追加と削除
サービスの追加または削除を一括で行うには:
コンソール UI
Google Cloud コンソールに移動します。
プリンシパルの追加または削除を行うサービスの左側にあるチェックボックスをオンにします(サービス自体はクリックしないでください)。
プリンシパルの追加または削除を行うサービスを選択します。
右上の情報ペインで、[権限] タブをクリックします。情報ペインが表示されていない場合は、[情報パネルを表示] をクリックしてから [権限] をクリックします。
プリンシパルを追加する場合:
[プリンシパルを追加] をクリックします。
[新しいプリンシパル] テキスト ボックスに、サービスにアクセスが必要な ID を 1 つ以上入力します。
[ロール] プルダウン メニューからロールを選択します。選択したロールがパネルに表示され、付与される権限の簡単な説明が表示されます。
[保存] をクリックします。
プリンシパルを削除する場合:
削除するプリンシパルをロールリストのフィルタに入力します。これにより、そのプリンシパルに付与されているすべてのロールが表示されます。
目的のロールのプリンシパルの横にある [削除](ゴミ箱)をクリックして、プリンシパルからロールを削除します。
確認ダイアログで、サービス内のすべてのロールからそのプリンシパルを削除できます。[削除] をクリックして、ロールからプリンシパルを削除します。
gcloud
IAM ポリシーを作成する:
cat <<EOF > policy.json { "bindings": [ { "role": ROLE, "members": [ MEMBER_TYPE ] } ] } EOF
gcloud run services set-iam-policy
コマンドを使用します。
gcloud run services set-iam-policy SERVICE_NAME policy.json
MEMBER_TYPE
に使用可能な値については、IAM のコンセプト ページをご覧ください。ROLE
に使用可能な値については、Cloud Run IAM ロールをご覧ください。
ジョブのプリンシパルの追加と削除を一括で行う
ジョブの追加または削除を一括で行うには:
コンソール UI
Google Cloud コンソールに移動します。
プリンシパルを追加するジョブの左側にあるチェックボックスをオンにします(ジョブはクリックしないでください)。
プリンシパルの追加または削除を行うジョブを選択します。
右上の情報ペインで、[権限] タブをクリックします。情報ペインが表示されていない場合は、[情報パネルを表示] をクリックしてから [権限] をクリックします。
プリンシパルを追加する場合:
[プリンシパルを追加] をクリックします。
[新しいプリンシパル] テキスト ボックスに、サービスにアクセスが必要な ID を 1 つ以上入力します。
[ロール] プルダウン メニューからロールを選択します。選択したロールがパネルに表示され、付与される権限の簡単な説明が表示されます。
[保存] をクリックします。
プリンシパルを削除する場合:
削除するプリンシパルをロールリストのフィルタに入力します。これにより、そのプリンシパルに付与されているすべてのロールが表示されます。
目的のロールのプリンシパルの横にある [削除](ゴミ箱)をクリックして、プリンシパルからロールを削除します。
確認ダイアログで、ジョブ内のすべてのロールからそのプリンシパルを削除できます。[削除] をクリックして、ロールからプリンシパルを削除します。
gcloud
IAM ポリシーを作成する:
cat <<EOF > policy.json { "bindings": [ { "role": ROLE, "members": [ MEMBER_TYPE ] } ] } EOF
gcloud run jobs set-iam-policy
コマンドを使用します。
gcloud run jobs set-iam-policy JOB_NAME policy.json
MEMBER_TYPE
に使用可能な値については、IAM のコンセプト ページをご覧ください。ROLE
に使用可能な値については、Cloud Run IAM ロールをご覧ください。
プリンシパルを表示する
サービスとジョブのプリンシパルを表示できます。
サービスのプリンシパルを表示する
サービスのプリンシパルを表示するには:
コンソール UI
Google Cloud コンソールに移動します。
プリンシパルとロールを表示するサービスの左側にあるチェックボックスをオンにします(サービス自体はクリックしないでください)。
プリンシパルとロールを表示するサービスを選択します。
右上の情報ペインで、[権限] タブをクリックします。情報ペインが表示されていない場合は、[情報パネルを表示] をクリックしてから [権限] をクリックします。
ロールとプリンシパルのリストが、付与されたロールごとに表示されます。
gcloud
gcloud run services get-iam-policy
コマンドを使用します。
gcloud run services get-iam-policy SERVICE_NAME
ジョブのプリンシパルを表示する
ジョブのプリンシパルを表示するには:
コンソール UI
Google Cloud コンソールに移動します。
プリンシパルを追加するジョブの左側にあるチェックボックスをオンにします(ジョブはクリックしないでください)。
プリンシパルとロールを表示するジョブを選択します。
右上の情報ペインで、[権限] タブをクリックします。情報ペインが表示されていない場合は、[情報パネルを表示] をクリックしてから [権限] をクリックします。
ロールとプリンシパルのリストが、付与されたロールごとに表示されます。
gcloud
gcloud run jobs get-iam-policy
コマンドを使用します。
gcloud run jobs get-iam-policy JOB_NAME
プロジェクト内のすべてのサービスとジョブに対するアクセスを制御する
プロジェクト内のすべてのサービスとジョブのプリンシパルにロールを付与する場合は、プロジェクト レベルの IAM を使用します。
コンソール UI
Google Cloud コンソールに移動します。
プロジェクト全体のロールを割り当てるプリンシパルを探します。
プリンシパルの行の右側にある鉛筆アイコンをクリックします。
[別のロールを追加] をクリックして、目的のロールを選択します。
[保存] をクリックします。
gcloud
gcloud projects add-iam-policy-binding
コマンドを使用します。
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=MEMBER_TYPE \ --role=ROLE
ここで、MEMBER_TYPE
はプリンシパル タイプ(user:email@domain.com
など)、ROLE
はロール(roles/run.admin
など)です。
allUsers
と allAuthenticatedUsers
のプリンシパル タイプはプロジェクト レベルでは適用できません。各サービスに個別に追加する必要があります。
サービスの Cloud Run Invoker を無効にする
Cloud Run サービスの Cloud Run 起動元の IAM チェックを無効にしたり、再度有効にしたりできます。このチェックはデフォルトで適用されます。
サービスの Invoker IAM チェックを無効にするか、再度有効にするには、次の権限が必要です。
run.services.create
run.services.update
run.services.setIamPolicy
これらの権限は、オーナーロールと Cloud Run 管理者ロールの両方に含まれています。ロールの一覧とそれに関連する権限については、Cloud Run IAM のロールをご覧ください。
Cloud Run 呼び出し元の IAM チェックを無効にする
必要に応じて、組織レベルまたはプロジェクト レベルで組織のポリシー制約
constraints/run.requireInvokerIam
をオーバーライドします。タグを使用すると、特定の Cloud Run サービスに対してより詳細なルールを設定できます。Google Cloud コンソールからポリシー制約を削除するには:
[組織のポリシー] タブをクリックします。
[Allow Invoker IAM Disabled (Cloud Run)] ポリシーを見つけて、[アクション] メニューから [ポリシーを編集] を選択します。
ポリシーが [適用しない] に設定されていることを確認します。
[ポリシーを設定] をクリックします。
チェックを無効にします。
Console
新しいサービスを構成する場合は、[サービスを作成] をクリックし、必要に応じて最初のサービス設定ページに入力します。既存のサービスを構成する場合は、サービスをクリックし、[セキュリティ] をクリックします。
[Cloud IAM を使用して受信リクエストを認証する] チェックボックスをオフにします。
[作成] または [保存] をクリックします。
gcloud
--no-invoker-iam-check
フラグを使用します。gcloud run deploy SERVICE_NAME --no-invoker-iam-check
ここで、
SERVICE_NAME
はサービス名です。
YAML
次のコマンドで、構成を表示してダウンロードします。
gcloud run services describe SERVICE --format export > service.yaml
run.googleapis.com/invoker-iam-disabled:
アノテーションを更新します。apiVersion: serving.knative.dev/v1 kind: Service metadata: annotations: run.googleapis.com/invoker-iam-disabled: true name: SERVICE_NAME
ここで、SERVICE_NAME は Cloud Run サービスの名前です。
次のコマンドを使用して、サービスを新しい構成に置き換えます。
gcloud run services replace service.yaml
サービスの HTTPS エンドポイントに移動して、デプロイ後にチェックが無効になっていることを確認します。
Cloud Run 呼び出し元の IAM チェックを再度有効にする
チェックを再度有効にするには:
Console
サービスをクリックし、[セキュリティ] をクリックします。
[Cloud IAM を使用して受信リクエストを認証する] を選択します。
[保存] をクリックします。
gcloud
--invoker-iam-check
フラグを渡してサービスを更新します。gcloud beta run services SERVICE_NAME --invoker-iam-check
ここで、
SERVICE_NAME
はサービス名です。
YAML
次のコマンドで、構成を表示してダウンロードします。
gcloud run services describe SERVICE --format export > service.yaml
run.googleapis.com/invokerIamCheckDisabled:
アノテーションを更新します。apiVersion: serving.knative.dev/v1 kind: Service metadata: annotations: run.googleapis.com/invokerIamCheckDisabled: false name: SERVICE_NAME
ここで、SERVICE_NAME は Cloud Run サービスの名前です。
サービスの HTTPS エンドポイントに移動して、デプロイ後にチェックが再度有効になっていることを確認します。
次のステップ
保護したサービスに対するデベロッパー、サービス、ユーザーの認証を安全に行う方法を学習する。