公開(未認証)アクセスを許可する

このオプションは、公開 API またはウェブサイトの Cloud Run サービス向けです。

Cloud Run Invoker IAM ロールを allUsers メンバータイプに割り当てると、認証を行わずにサービスを呼び出すことができます。

Cloud Run サービスで認証を構成するには、run.services.setIamPolicy 権限が必要です。この権限は、オーナーと Cloud Run 管理者の両方のロールに含まれています。ロールの一覧とそれに関連する権限については、Cloud Run IAM のロールをご覧ください。

コンソール UI

既存の Cloud Run サービスの場合:

  1. Google Cloud コンソールに移動します。

    Google Cloud コンソールに移動

  2. 公開するサービスの左側にあるチェックボックスをオンにします(サービス自体はクリックしないでください)。

  3. 右上の情報ペインで、[権限] タブをクリックします。情報ペインが表示されていない場合は、[情報パネルを表示] をクリックしてから [権限] をクリックします。

  4. [プリンシパルを追加] をクリックします。

[新しいプリンシパル] フィールドに値 allUsers を入力します。

  1. [ロール] プルダウン メニューから Cloud Run 起動元ロールを選択します。

  2. [保存] をクリックします。

  3. このリソースを公開することの確認を求めるメッセージが表示されます。[一般公開アクセスを許可] をクリックして、サービスの 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 ファイルに次の行を追加します。

resource "google_cloud_run_v2_service" "default" {
  name     = "public-service"
  location = "us-central1"

  deletion_protection = false # set to "true" in production

  template {
    containers {
      image = "us-docker.pkg.dev/cloudrun/container/hello"
    }
  }
}

roles/run.invoker のサービス IAM バインディングを更新するには、Cloud Run サービスを参照する次のリソースを追加します。

resource "google_cloud_run_service_iam_binding" "default" {
  location = google_cloud_run_v2_service.default.location
  service  = google_cloud_run_v2_service.default.name
  role     = "roles/run.invoker"
  members = [
    "allUsers"
  ]
}

このバインディングは、特定のロールに対してのみ有効です。サービス IAM ポリシー内のその他の IAM バインディングは保持されます。

ドメインで制限された共有

プロジェクトが組織のポリシーにおけるドメインで制限された共有制約の適用対象となっている場合は、公開サービスを作成できません。タグと条件付きポリシーを使用して、特定のサービスをこの制約から除外できます。詳細については、ドメインで制限された共有が適用される場合の公開 Cloud Run サービスの作成に関するブログ記事をご覧ください。