IAP で Cloud Run MCP サーバーを認証する

Identity-Aware Proxy(IAP)を使用すると、一元化された ID 検証により、Cloud Run にデプロイされた Model Context Protocol(MCP)サーバーを保護できます。その後、Gemini CLI や AI エージェントなどのクライアントを構成して、IAP で認証し、リモート サーバーでツールを安全に実行できます。

始める前に

  1. 必要なロールが付与されていることを確認します。

  2. プロジェクトで Cloud Run を有効にします。

  3. プロジェクトで IAP を有効にします。

  4. Cloud Run に MCP サーバーをデプロイする。

必要なロール

Cloud Run MCP サーバーの IAP 認証の構成に必要な権限を取得するには、次の IAM ロールを付与するよう管理者に依頼してください。

ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。

必要な権限は、カスタムロールや他の事前定義ロールから取得することもできます。

Cloud Run サービスで IAP を構成する

Cloud Run MCP サーバーで IAP を構成する手順は次のとおりです。

  1. 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 プロジェクト番号。
  2. 新しいサービスをデプロイするか、既存のサービスの新しいリビジョンをデプロイするときに 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: サービスをデプロイするリージョン
  3. OAuth クライアントを作成して構成します。

    IAP で使用する OAuth クライアントのユニバーサル クライアント ID を登録するには、プログラムによるアクセスのために OAuth クライアントを共有するをご覧ください。

    次の値を記録します。

    • OAuth クライアント ID
    • OAuth クライアント シークレット
    • リダイレクト URI
  4. 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 サービスの URL
    • OAUTH_CLIENT_ID: OAuth クライアント構成のクライアント ID
    • OAUTH_CLIENT_SECRET: OAuth クライアント構成のクライアント シークレット
    • REDIRECT_URI: OAuth クライアント構成のリダイレクト URI

接続を確認する

クライアントが IAP 経由で認証し、MCP サーバーに接続できることを確認するには、次の操作を行います。

  1. ターミナルで Gemini CLI を起動します。

    gemini
    
  2. ブラウザでプロンプトが表示されたら、IAP 認証フローを完了します。

  3. Gemini CLI が MCP サーバーによって提供されるツールを正常に検出して一覧表示することを確認します。