Cloud Run の公開サービスを作成する方法は 2 つあります。
必要なロール
サービスの起動元の IAM チェックを無効または再度有効にするには、次の権限が必要です。
run.services.create
run.services.update
run.services.setIamPolicy
これらの権限は、Cloud Run 管理者(roles/run.admin
)のロールに含まれています。ロールの一覧とそれに関連する権限については、Cloud Run IAM のロールをご覧ください。
Cloud Run 起動元の IAM チェックを無効にする
公開サービスを作成するおすすめの方法は、Cloud Run IAM 起動元のチェックを無効にすることです。Cloud Run はデフォルトでこのチェックを実施します。この解決策は、プロジェクトが組織のポリシーにおけるドメインで制限された共有制約の対象となっている場合に使用します。
チェックを無効にするには:
コンソール
Google Cloud コンソールで、[Cloud Run] ページに移動します。
新しいサービスを構成する場合は、[サービスを作成] をクリックし、必要に応じて最初のサービス設定ページに記入します。
既存のサービスを構成する場合は、サービスをクリックし、[セキュリティ] タブをクリックします。
[公開アクセスを許可する] を選択します。
[作成] または [保存] をクリックします。
gcloud
新しいサービスの場合は、
--no-invoker-iam-check
フラグを指定してgcloud run deploy
コマンドを使用します。gcloud run deploy SERVICE_NAME --no-invoker-iam-check
SERVICE_NAME
は、サービス名に置き換えます。既存のサービスの場合は、
--no-invoker-iam-check
フラグを指定してgcloud run services update
コマンドを使用します。gcloud run services update 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 チェックを再度有効にする
チェックを再度有効にするには:
コンソール
Google Cloud コンソールで、[Cloud Run] ページに移動します。
サービスをクリックし、[セキュリティ] をクリックします。
[認証が必要] を選択し、[Identity and Access Management(IAM)] を選択します。
[保存] をクリックします。
gcloud
--invoker-iam-check
フラグを渡してサービスを更新します。gcloud run services update SERVICE_NAME --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: false name: SERVICE_NAME
SERVICE_NAME
は、実際の Cloud Run サービスの名前に置き換えます。
サービスの HTTPS エンドポイントに移動して、デプロイ後にチェックが再度有効になっていることを確認します。
Cloud Run 起動元の IAM チェックに対して組織のポリシーを構成する
管理者である場合は、constraints/run.managed.requireInvokerIam
マネージド制約を使用して、呼び出し元の IAM チェックを無効にする機能を制限できます。この制約はデフォルトで適用されません。
Cloud Run IAM 起動元のロールを allUsers
メンバータイプに割り当てる
Cloud Run 起動元の IAM ロールを allUsers
メンバータイプに割り当てると、サービスへの公開アクセスを許可できます。
Cloud Run サービスで認証を構成するには、run.services.setIamPolicy
権限が必要です。この権限は、Cloud Run 管理者のロールに含まれています。ロールの一覧とそれに関連する権限については、Cloud Run IAM のロールをご覧ください。
コンソール
既存の Cloud Run サービスの場合:
Google Cloud コンソールで、[Cloud Run] ページに移動します。
公開するサービスの左側にあるチェックボックスをオンにします。サービス自体はクリックしないでください。
右上の情報ペインで、[権限] タブをクリックします。情報ペインが表示されていない場合は、[情報パネルを表示] をクリックしてから [権限] をクリックします。
[プリンシパルを追加] をクリックします。
[新しいプリンシパル] フィールドに値 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
Terraform 構成を適用または削除する方法については、基本的な Terraform コマンドをご覧ください。
Terraform 構成のgoogle_cloud_run_v2_service
リソースに次の内容を追加します。roles/run.invoker
のサービス IAM バインディングを更新するには、Cloud Run サービスを参照する次のリソースを追加します。
このバインディングは、特定のロールに対してのみ有効です。サービス IAM ポリシー内のその他の IAM バインディングは保持されます。