教程:管理编码代理的GitHub MCP 访问权限

Important

此功能在 Beta 版中。 帐户管理员可以从帐户控制台 预览 页管理对此功能的访问权限。 请参阅 Manage Azure Databricks 预览版

在本教程中,你将使用 Unity 目录和 AI 网关控制编码代理对GitHub的访问权限。 假设你的团队使用 Claude Code 或 Cursor 之类的编码代理,并接入 GitHub 的 MCP 服务器,而你希望开发人员通过代理读取仓库并创建拉取请求,但绝不允许执行强制推送或删除操作,同时每一次工具调用都会被审计。

使用Azure Databricks提供的预建 system.ai.github MCP 服务,因此你不会托管或注册 MCP 服务器或创建 Unity 目录连接。 附加内置 服务策略 以阻止写入操作、授予团队访问权限、连接编码代理并确认记录每个工具调用。

先决条件

  • 已启用 Unity Catalog 的工作区 请参阅 Unity 目录入门
  • 为帐户启用了 Unity AI 网关预览版和 Databricks 提供的 MCP 服务预览版。 请参阅 Manage Azure Databricks 预览版
  • 对内置服务 system.ai.github 拥有以下权限:
    • MANAGE,用于附加服务策略。
    • EXECUTE,用于调用服务并向其他人授予访问权限。
  • Azure Databricks CLI,已通过身份验证连接到你的工作区。

步骤 1:使用内置策略阻止破坏性操作

system.ai.github MCP 服务提供 GitHub 的读取工具,并且默认对写入工具采取故障关闭策略。 若要将该保证明确化并使其受到管理,请使用 system.ai.github_policy 选项附加内置的 disallow_writes 策略。 内置策略由平台管理:引用处理程序,而不是编写自己的函数。

databricks api patch \
  "/api/2.1/unity-catalog/mcp-services/system.ai.github?update_mask=config.service_policies" \
  --json '{
    "config": {
      "service_policies": [
        {
          "name": "block_github_writes",
          "policy_type": "POLICY_TYPE_BUILTIN",
          "handler": "system.ai.github_policy",
          "options": { "disallow_writes": "true" }
        }
      ]
    }
  }'

附加了该策略后,针对任何写入工具(即未标记为只读的工具)的 tools/call 都会被拒绝,而读取工具和拉取请求工具将继续工作。 有关内置服务和策略的详细信息,请参阅 Databricks 提供的 MCP 服务和AI 安全对象的服务策略

步骤 2:与团队共享 MCP 服务

默认情况下,只有具有 EXECUTE 的主体可以调用该服务。 若要从 UI 授予开发人员团队访问权限,请执行以下操作:

  1. AI 网关中,转到 “MCP ”选项卡,选择要共享的 MCP 服务,例如 system.ai.github
  2. 转到“权限”选项卡。
  3. 单击授权
  4. 指定允许调用 MCP 服务的主体,例如 dev_team,选择 EXECUTE 权限,然后单击“ 确认”。

注释

若要在 system.ai 中的 MCP 服务上授予访问权限,元存储管理员必须先在 MANAGE 架构上向自己授予 system.ai

步骤 3:连接编码代理

将代码代理指向内置服务的 AI Gateway MCP 端点:

https://<workspace-url>/ai-gateway/mcp-services/system.ai.github

每个开发人员都要向 Azure Databricks 进行身份验证,并且必须在 MCP 服务上具有 EXECUTE。 有关 Claude Code、Cursor 和其他工具的面向特定代理的设置步骤,请参阅 将 MCP 连接到 AI 助手和代码代理。 有关调用示例(包括 OpenAI 代理 SDK),请参阅 调用 MCP 服务

步骤 4:确认活动已控制并记录

确认治理在两端都正常运行:

  • 策略执行:从代理端看,读取工具或拉取请求工具会成功,而写入工具会因策略错误被拒绝。

  • 使用日志:查询使用情况系统表以确认调用已被记录:

    SELECT service_name, mcp_metadata.tool_name AS tool_name, status_code, COUNT(*) AS calls
    FROM system.ai_gateway.usage
    WHERE service_type = 'MCP_SERVICE'
      AND service_name = 'system.ai.github'
    GROUP BY service_name, mcp_metadata.tool_name, status_code
    ORDER BY calls DESC;
    

有关监视的详细信息,请参阅 “监视使用情况”。

后续步骤