サービスの作成、更新、削除などの管理作業に加えて、デベロッパーがサービスのリリース前に個人的にテストしたいと考える場合があります。このオプションは Cloud Run サービス向けであり、Cloud Run ジョブ向けではありません。
始める前に
認証するサービスにアクセスする権限を付与しているか確認します。デベロッパーまたはデベロッパーのグループには、Cloud Run Invoker ロールを付与する必要があります。
コンソール UI
Google Cloud コンソールに移動します。
サービスを選択します。ただし、クリックはしないでください。
右側のパネルで [権限] タブをクリックします(先に右上の [情報パネルを表示] をクリックする必要がある場合があります)。
[メンバーを追加] をクリックします。
[メンバーを追加] フィールドにデベロッパー アカウントのメールアドレスを入力します。
[ロールの選択] プルダウン メニューから、
Cloud Run Invoker
ロールを選択します。[保存] をクリックします。
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'
限定公開サービスのテスト
Google Cloud CLI で Cloud Run プロキシを使用する
限定公開サービスをテストする場合、Google Cloud CLI の Cloud Run プロキシを使用するのが最も簡単な方法です。この方法では、限定公開サービスが http://localhost:8080
(または --port
で指定されたポート)にプロキシされ、アクティブなアカウントのトークンまたは指定した別のトークンが提供されます。これにより、ウェブブラウザや curl
などのツールを使用できます。これは、ブラウザでウェブサイトや API を非公開でテストする場合におすすめの方法です。
次のコマンドを使用して、ローカルでサービスをプロキシできます。
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 トークンを使用します。この方法では、トークンの使用を目的のサービスのみに制限することでセキュリティを強化します。
サービスの開発と使用に必要な最小権限セットを割り当てることをおすすめします。サービスの IAM ポリシーは、必要最小限のユーザーとサービス アカウントに限定してください。