Identity-Aware Proxy(IAP)を使用すると、一元化された ID 検証により、Cloud Run にデプロイされた Model Context Protocol(MCP)サーバーを保護できます。その後、Gemini CLI や AI エージェントなどのクライアントを構成して、IAP で認証し、リモート サーバーでツールを安全に実行できます。
始める前に
プロジェクトで Cloud Run を有効にします。
プロジェクトで IAP を有効にします。
必要なロール
Cloud Run MCP サーバーの IAP 認証の構成に必要な権限を取得するには、次の IAM ロールを付与するよう管理者に依頼してください。
- プロジェクトに対する Cloud Run 管理者 (
roles/run.admin) - プロジェクトに対する IAP 管理者 (
roles/iap.admin) -
新しいサービスをデプロイするか、既存のサービスの新しいリビジョンをデプロイします。
- ランタイム サービス アカウントに対するサービス アカウント ユーザー (
roles/iam.serviceAccountUser) - コンテナ イメージ リポジトリに対する Artifact Registry 読み取り (
roles/artifactregistry.reader)
- ランタイム サービス アカウントに対するサービス アカウント ユーザー (
-
OAuth クライアントを作成して構成する: プロジェクトの OAuth Config 編集者 (
roles/oauthconfig.editor) -
IAP で保護された MCP サーバーに接続または呼び出す: プロジェクトまたは Cloud Run サービスに対する IAP で保護されたウェブアプリ ユーザー (
roles/iap.httpsResourceAccessor)
ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。
必要な権限は、カスタムロールや他の事前定義ロールから取得することもできます。
Cloud Run サービスで IAP を構成する
Cloud Run MCP サーバーで IAP を構成する手順は次のとおりです。
IAP サービス エージェントに Cloud Run 起動元ロール(
roles/run.invoker)を付与します。gcloud beta run services add-iam-policy-binding SERVICE_NAME \ --member='serviceAccount:service-PROJECT_NUMBER@gcp-sa-iap.s3ns-system.iam.gserviceaccount.com' \ --role='roles/run.invoker'次のように置き換えます。
SERVICE_NAME: サービス名PROJECT_NUMBER: Cloud de Confiance by S3NS プロジェクト番号。
新しいサービスをデプロイするか、既存のサービスの新しいリビジョンをデプロイするときに IAP を有効にします。
新しいサービス
IAP を有効にして新しいサービスをデプロイするには、
gcloud beta run deployコマンドを実行します。gcloud beta run deploy SERVICE_NAME \ --image=CONTAINER_IMAGE \ --region=REGION \ --project=PROJECT_ID \ --allow-unauthenticated \ --iap \ --functional-type=mcp-server
次のように置き換えます。
SERVICE_NAME: サービス名CONTAINER_IMAGE: コンテナ イメージREGION: サービスをデプロイするリージョンPROJECT_ID: Cloud Run が有効になっているプロジェクトの ID
既存のサービス
IAP を有効にして既存のサービスの新しいリビジョンをデプロイするには、
gcloud beta run services updateコマンドを実行します。gcloud beta run services update SERVICE_NAME \ --region=REGION \ --iap \ --functional-type=mcp-server
次のように置き換えます。
SERVICE_NAME: サービス名REGION: サービスをデプロイするリージョン
OAuth クライアントを作成して構成します。
IAP で使用する OAuth クライアントのユニバーサル クライアント ID を登録するには、プログラムによるアクセスのために OAuth クライアントを共有するをご覧ください。
次の値を記録します。
- OAuth クライアント ID
- OAuth クライアント シークレット
- リダイレクト URI
Gemini CLI やエージェントなどのクライアントをデプロイされた MCP サーバーに接続するには、
~/.gemini/settings.jsonファイルを編集します。settings.jsonファイルに次の構成を追加します。{ "mcpServers": { "my_mcp_server": { "httpUrl": "https://SERVICE_URL", "oauth": { "enabled": "true", "clientId": "OAUTH_CLIENT_ID", "clientSecret": "OAUTH_CLIENT_SECRET", "scopes": [ "email", "openid" ], "redirectUri": "REDIRECT_URI" } } } }次のように置き換えます。
SERVICE_URL: Cloud Run サービスの URLOAUTH_CLIENT_ID: OAuth クライアント構成のクライアント IDOAUTH_CLIENT_SECRET: OAuth クライアント構成のクライアント シークレットREDIRECT_URI: OAuth クライアント構成のリダイレクト URI
接続を確認する
クライアントが IAP 経由で認証し、MCP サーバーに接続できることを確認するには、次の操作を行います。
ターミナルで Gemini CLI を起動します。
gemini
ブラウザでプロンプトが表示されたら、IAP 認証フローを完了します。
Gemini CLI が MCP サーバーによって提供されるツールを正常に検出して一覧表示することを確認します。