Thanks to visit codestin.com
Credit goes to docs.github.com

Skip to main content

授予 GitHub Copilot 云代理访问组织中的资源的权限

通过允许其访问已获批准的 MCP 服务器和内部软件包,充分利用 Copilot。

          Copilot云代理 可以连接到 MCP 服务器、使用专用包和访问外部服务,但前提是组织的存储库配置为允许它。

尽管下面的大部分配置是在存储库级别完成的,但组织所有者可以控制哪些资源在范围内,以及谁可以配置对这些资源的访问权限。

示例方案

组织使用 Sentry 跟踪 Node 应用中的 bug。 新的异常在 GitHub 作为问题被提出,并且开发人员希望将这些问题分配给 Copilot。

你想要 Copilot :

  • 连接到 Sentry MCP 服务器,以便它可以访问 Sentry 实例的详细信息
  • 安装依赖项(包括托管在上的 GitHub专用包)以生成应用并运行测试
  • 遵循组织的错误处理约定

安全地存储机密

默认情况下,身份验证令牌的范围 Copilot仅限于正在运行的存储库。 这意味着 Copilot 无法向外部系统进行身份验证或访问专用组织范围的包。

存储库管理员应向专用Copilotcopilot环境添加GitHub Actions所需的变量和机密。 Copilot 可以在其设置和执行任务中访问此数据。 它无法访问此环境之外的变量或机密,例如组织范围的 GitHub Actions 机密。

示例:保存机密

存储库管理员保存组织的 Sentry 实例的身份验证令牌。

  1. 转到存储库设置的“ 环境” 部分。
  2. 创建名为 copilot 的新环境。
  3. 在名为 COPILOT_MCP_SENTRY_ACCESS_TOKEN 的环境密钥中保存 Sentry 实例的访问令牌。

提示

我们不需要为专用 GitHub Packages 注册表保存令牌,我们将使用标准 GitHub ActionsGITHUB_TOKEN对其进行访问。 但是,如果您使用外部包管理系统,您需要保存身份验证令牌。

配置对 MCP 服务器的访问

组织和企业所有者可以设置一个策略,以允许用户配置对 MCP 服务器的访问。 如果启用此策略,用户可以在存储库设置或自定义代理配置文件中配置 Copilot云代理 MCP 服务器。 对于组织范围的一致性,我们建议在组织或企业级创建自定义 代理配置文件

使用自定义代理的会话可以访问存储库设置和代理 配置文件中配置的 MCP 服务器。 但是,在组织范围的自定义代理中涵盖的用例越多,用户就越不需要在存储库设置中配置对 MCP 服务器的即席访问。

建议浏览 GitHub MCP 注册表 以查找受信任的高度分级的选项。

示例:创建自定义代理

组织所有者为 Sentry 代理创建自定义代理配置文件。 它能够访问 Sentry MCP 服务器,并能获取有关组织错误处理惯例的定制指南。

  1. 在你的组织中创建一个命名为.github-private的存储库。 (可选)企业所有者可以将此存储库设置为企业中所有自定义代理的源。

  2. 在存储库中,添加一个像下面这样的配置文件的 agent.md 文件。 这包括 MCP 服务器的配置,该服务器引用了我们保存的机密。

    ---
    name: sentry-error-fixer
    description: Proposed fixes for exception issues raised from Sentry
    mcp-servers:
      sentry:
        type: 'local'
        command: 'npx'
        args: ['@sentry/mcp-server@latest']
        env:
          SENTRY_ACCESS_TOKEN: ${{ secrets.COPILOT_MCP_SENTRY_ACCESS_TOKEN }}
    ---
    
    You are an error resolution specialist. When you're assigned an issue created by our Sentry integration, check for error details and stack traces using the MCP server, then propose a fix.
    
    Make sure you check that your proposed fix works by building the site with `npm run build` and running the test suite in `npm test`.
    
  3. 当开发人员将问题分配给Copilot时,他们可以从下拉列表中选择一个自定义代理。

安装专用包

为了授予Copilot访问项目的依赖项的最佳方式是在copilot-setup-steps.yml工作流文件中安装它们。 此文件定义在开始工作之前 Copilot 如何设置环境。

若要允许工作流拉取您私有且限定于组织的包,需要更新包设置,以确保存储库 GITHUB_TOKEN 能访问该包。 这比使用具有组织权限的长期持久性 personal access token 更安全。

示例:安装节点依赖项

开发人员创建一个工作流,用于安装存储库 package-lock.json 文件中定义的 Node 依赖项。 这包括在 GitHub 上托管的私有的、组织范围的包。

  1. 开发人员在存储库中创建文件 copilot-setup-steps.yml

  2. 添加用于安装项目依赖项的步骤。 例如:

    # ...
    
    jobs:
      copilot-setup-steps:
        # ...
    
        # You can define any steps you want, and they will run before the agent starts.
        # If you do not check out your code, Copilot will do this for you.
        steps:
          - name: Checkout code
            uses: actions/checkout@v5
    
          - name: Set up Node.js
            uses: actions/setup-node@v4
            with:
              node-version: "20"
              cache: "npm"
    
          - name: Install JavaScript dependencies
            run: npm ci
    
  3. 组织管理员通过在每个包的设置中授予存储库访问权限,以确保存储库可以访问组织的私有包。 请参阅“配置包的访问控制和可见性”。

提示

如果需要访问内部企业网络中托管的包,您可能需要在自托管的 Copilot云代理 运行器上运行 GitHub Actions。

控制谁可以配置这些设置

现在,你已经了解了如何在存储库和组织级别控制对资源的访问,请考虑要为用户提供多少范围来管理这些设置。

  1.        **选择哪些存储库有权访问**Copilot云代理。 如果您担心特定存储库,您可以阻止所有用户访问它。
    
  2.        **请考虑谁获取** 对这些存储库的管理员访问权限。 可以通过创建具有 **All-repository 管理员** 自定义角色的团队,在组织级别控制这一点。 这些用户将能够在每个存储库中管理配置 _设置_,例如 MCP 配置和环境 `copilot` 。
    
  3.        **使用规则集和 CODEOWNERS 文件**来控制配置文件的编辑,例如`copilot-setup-steps.yml`。默认情况下,具有写入访问权限的任何人都可以编辑这些文件。
    
  4.        **查看默认防火墙**。 防火墙不会影响到 MCP 服务器的连接或设置步骤 `copilot-setup-steps.yml`,但它确实限制了 Copilot在任务执行期间对 Internet 的访问。 请参阅“[AUTOTITLE](/copilot/how-tos/use-copilot-agents/cloud-agent/customize-the-agent-firewall)”。