MCP 서버 인증

에이전트가 Cloud Run에서 호스팅되는 MCP 서버 또는 도구에 연결해야 하는 경우 기본 제공 Identity and Access Management 및 Identity-Aware Proxy (IAP)를 사용하여 연결을 보호할 수 있습니다.

Cloud Run에서 실행되는 에이전트를 Cloud Run의 MCP 서버에 연결하는 경우 AI 에이전트 인증 에 대한 안내는 run.invoker 정책을 참고하세요.

개발자 CLI 도구 및 MCP 서버 클라이언트

개발자 도구, 로컬 SDK, 일반 MCP 클라이언트를 Cloud Run에서 호스팅되는 비공개 MCP 서버에 안전하게 연결하려면 Identity-Aware Proxy를 구성하는 것이 좋습니다.

IAP 사용 설정

배포된 Cloud Run MCP 서비스에 IAP를 사용 설정합니다.

gcloud run services update MCP_SERVICE_NAME \
    --iap \
    --region=REGION

다음을 바꿉니다.

  • MCP_SERVICE_NAME: MCP 서버 서비스의 이름입니다.
  • REGION: 서비스가 배포된 리전입니다.

MCP 서버에 대한 액세스 권한 부여

호출 에이전트의 ID 또는 개발자의 사용자 ID를 백엔드 서비스의 IAP 호출자 역할에 바인딩합니다.

gcloud iap web add-iam-policy-binding \
    --resource-type=cloud-run \
    --service=MCP_SERVICE_NAME \
    --member="PRINCIPAL" \
    --role="roles/iap.httpsResourceAccessor" \
    --region=REGION

다음을 바꿉니다.

  • MCP_SERVICE_NAME: MCP 서버 서비스의 이름입니다.
  • PRINCIPAL: 주 구성원 또는 구성원의 식별자. 일반적으로 PRINCIPAL:ID 형식입니다(예:user:my-user@example.com). PRINCIPAL이 가질 수 있는 값의 전체 목록은 정책 바인딩 참조를 확인하세요.
  • REGION: 서비스가 배포된 리전입니다.

IAP로 액세스 구성

기본적으로 IAP는 브라우저 기반 사용자 로그인만 지원하는 Google 관리 OAuth 클라이언트를 사용합니다. CLI 도구 및 에이전트가 프로그래매틱 방식으로 MCP 서버에 액세스하도록 허용하려면 커스텀 OAuth 클라이언트 ID를 구성해야 합니다.

  1. 콘솔의 Google Cloud API 및 서비스 > 사용자 인증 정보에서 OAuth 클라이언트를 만듭니다. 클라이언트 ID클라이언트 보안 비밀번호 를 기록해 둡니다.
    • Antigravity CLI와 같은 로컬 개발자 도구를 구성하는 경우 허용 목록에 추가된 리디렉션 URL에 http://localhost:7777/oauth/callback을 추가합니다.
  2. OAuth 클라이언트 공유 가이드에 따라 IAP 설정에서 프로그래매틱 액세스를 위한 허용 목록에 OAuth 클라이언트를 추가합니다.

연결을 위한 클라이언트 설정 업데이트

프로그래매틱 액세스를 설정한 후 연결 세부정보와 커스텀 OAuth 클라이언트 ID 사용자 인증 정보를 제공하도록 클라이언트 구성을 업데이트합니다.

예를 들어 보호된 MCP 서버에 연결하도록 Antigravity CLI와 같은 도구를 구성하려면 설정에서 mcpServers 블록을 업데이트합니다.

{
  "mcpServers": {
    "my-mcp-server": {
      "httpUrl": "https://my-mcp-server-<PROJECT_NUMBER>.<REGION>.run.app",
      "oauth": {
        "enabled": "true",
        "clientId": "YOUR_CUSTOM_OAUTH_CLIENT_ID",
        "clientSecret": "YOUR_CLIENT_SECRET",
        "scopes": [
          "email",
          "openid"
        ],
        "redirectUri": "http://localhost:7777/oauth/callback"
      }
    }
  }
}