IAM によるアクセス制御

デフォルトでは、プロジェクトのオーナーと編集者のみがサービスの作成、更新、削除、呼び出しを行うことができます。また、プロジェクトのオーナーと Cloud Run 管理者のみが Identity and Access Management(IAM)ポリシーを変更できます(サービスを一般公開するなど)。詳しくは、Cloud Run IAM ロールをご覧ください。

これらの操作を他のユーザーまたはグループに許可するには、IAM を使用してさまざまなメンバーロールを付与します。

個々のサービスに対するアクセスを制御する

サービスごとにアクセスを制御する場合は、サービスごとに IAM を使用します。

サービスを公開する

コンソール UI

  1. Google Cloud Console に移動します。

    Google Cloud Console に移動

  2. 公開するサービスを選択します。

  3. 右上隅にある [情報パネルを表示] をクリックして、[権限] タブを表示します。

  4. [メンバーを追加] フィールドに、allUsers を入力します。

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

  6. [追加] をクリックします。

gcloud

特別な 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

新しいサービスを作成するときに、「未認証のアクセスを許可する」かどうかを確認するメッセージが表示されます。yes と答えると、上記の操作が行われ、サービスが一般公開されます。no と答えると、サービスは非公開になります。

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

プロジェクトが組織のポリシーにおけるドメインで制限された共有制約の適用対象となっている場合は、公開サービスを作成できません。この制限の影響を受けないフォルダにすべてのプロジェクトを作成し、プロジェクトに対するデフォルトの制約を復元して、既存のプロジェクトの制限を削除することをおすすめします。

ユーザーを追加する

コンソール UI

  1. Google Cloud Console に移動します。

    Google Cloud Console に移動

  2. ユーザーの追加先であるサービスを選択します。

  3. 右上隅にある [情報パネルを表示] をクリックして、[権限] タブを表示します。

  4. [メンバーを追加] フィールドに、サービスにアクセスする必要がある ID を入力します。

  5. [ロールを選択] プルダウン メニューからロールを選択します。選択したロールと付与する権限の簡単な説明がパネルに表示されます。

  6. [追加] をクリックします。

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

  1. Google Cloud Console に移動します。

    Google Cloud Console に移動

  2. 削除対象のユーザーを含むサービスを選択します。

  3. 右上隅にある [情報パネルを表示] をクリックして、[権限] タブを表示します。

  4. 削除するユーザーを検索するか、ユーザーの役割を展開します。

  5. ロール内のメンバータイプの横にある [削除](ごみ箱)をクリックして、メンバーからロールを削除します。

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

  1. Google Cloud Console に移動します。

    Google Cloud Console に移動

  2. ユーザーの追加先であるサービス、または削除対象のユーザーを含むサービスを選択します。

  3. 右上隅にある [情報パネルを表示] をクリックして、[権限] タブを表示します。

ユーザーを追加する場合:

  1. [メンバーを追加] フィールドに、サービスにアクセスする必要がある複数の ID を入力します。

  2. [ロールを選択] プルダウン メニューからロールを選択します。選択したロールと付与する権限の簡単な説明がパネルに表示されます。

  3. [追加] をクリックします。

ユーザーを削除する場合:

  1. 削除するユーザーを検索するか、ユーザーの役割を展開します。

  2. ロール内のメンバータイプの横にある [削除](ごみ箱)をクリックして、メンバーからロールを削除します。

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

  1. Google Cloud Console に移動します。

    Google Cloud Console に移動

  2. 表示したいユーザーとロールを含むサービスを選択します。

  3. 右上隅にある [情報パネルを表示] をクリックして、[権限] タブを表示します。

  4. 付与されたロール別にすべてのユーザーが表示されます。

gcloud

gcloud run services get-iam-policy コマンドを使用します。

gcloud run services get-iam-policy SERVICE_NAME

プロジェクト内のすべてのサービスに対するアクセスを制御する

プロジェクト内のすべてのサービスのメンバーに役割を付与する場合は、プロジェクト レベルの IAM を使用します。

コンソール UI

  1. Google Cloud Console に移動します。

    Google Cloud Console に移動

  2. プロジェクト全体のロールを割り当てるユーザーを探します。

  3. ユーザーの行の右側にある編集用鉛筆アイコンをクリックします。

  4. [別の役割を追加] をクリックして、目的の役割を選択します。

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

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 など)です。

次のステップ

保護したサービスに対するデベロッパー、サービス、ユーザーの認証を安全に行う方法を学習する。