デベロッパーの認証

サービスの作成、更新、削除などの管理作業に加えて、デベロッパーがサービスのリリース前に個人的にテストしたいと考える場合があります。このオプションは Cloud Run サービス向けであり、Cloud Run ジョブ向けではありません。

始める前に

認証するサービスにアクセスする権限を付与しているか確認します。デベロッパーまたはデベロッパーのグループには、Cloud Run Invoker ロールを付与する必要があります。

コンソール UI

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

    Google Cloud コンソールに移動

  2. サービスを選択します。ただし、クリックはしないでください。

  3. 右側のパネルで [権限] タブをクリックします(先に右上の [情報パネルを表示] をクリックする必要がある場合があります)。

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

  5. [新しいプリンシパル] フィールドに、デベロッパー アカウントのメールアドレスを入力します。

  6. [ロールの選択] プルダウン メニューから、Cloud Run Invoker ロールを選択します。

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

gcloud

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

gcloud run services add-iam-policy-binding SERVICE \
  --member='USER:EMAIL' \
  --role='roles/run.invoker'

ここで

  • SERVICE は、サービスの名前です。
  • USER は、単一デベロッパーまたはグループのどちらを承認するかに応じて、user または group という値になります。
  • EMAIL は、メール アカウントです。

    例:

    gcloud run services add-iam-policy-binding myservice \
    --member='user:test-user@gmail.com' \
    --role='roles/run.invoker'
    

限定公開サービスをテストする

Cloud Run プロキシまたは curl を使用して、限定公開サービスをテストできます。

Google Cloud CLI で Cloud Run プロキシを使用する

限定公開サービスをテストする場合、Google Cloud CLI の Cloud Run プロキシを使用するのが最も簡単な方法です。この方法では、限定公開サービスが http://localhost:8080(または --port で指定されたポート)にプロキシされ、アクティブなアカウントのトークンまたは指定した別のトークンが提供されます。これにより、ウェブブラウザや curl などのツールを使用できます。これは、ブラウザでウェブサイトや API を非公開でテストする場合におすすめの方法です。

次のコマンドラインを使用して、Linux、macOS、WSL(推奨)または Cygwin 環境のローカルでサービスをプロキシできます。

gcloud run services proxy SERVICE --project PROJECT-ID

curl を使用する

別の方法としては、curl などのツールを使用し、Authorization のヘッダーに認証トークンを渡すことで、プロキシを使用せずに限定公開サービスをテストすることもできます。

curl -H "Authorization: Bearer $(gcloud auth print-identity-token)" SERVICE_URL

curl コマンドを使用するには、Cloud Run Admin や Cloud Run Invoker のような run.routes.invoke 権限を持つユーザーに、有効な ID トークンを渡す必要があります。ロールの一覧とそれに関連する権限については、Cloud Run IAM のロールをご覧ください。

gcloud CLI にログインしている ID の有効な ID トークンを取得するには、gcloud auth print-identity-token コマンドを使用します。サービスでの run.routes.invoke 権限がアカウントに付与されていれば、gcloud CLI で作成されたトークンを使用して、どのプロジェクトでも HTTP リクエストを呼び出せます。

開発目的の場合は、gcloud CLI で生成された ID トークンを使用します。ただし、このようなトークンにはオーディエンス クレームがないため、リプレイ攻撃を受けやすくなります。本番環境では、適切な対象を指定したサービス アカウントに対して発行された ID トークンを使用します。この方法は、トークンの使用を目的のサービスのみに制限することでセキュリティを強化します。Google アカウント以外の場合は、Workforce Identity 連携を使用して Cloud Run サービスを呼び出します。これにより、サービス アカウント キーをダウンロードする必要がなくなります。

サービスの開発と使用に必要な最小権限セットを割り当てることをおすすめします。サービスの IAM ポリシーは、必要最小限のユーザーとサービス アカウントに限定してください。