控制企业中操作的访问和使用

已完成

控制对企业内行动的访问权限

GitHub Actions 中的访问控制决定了:

  • 谁可以运行使用操作的工作流。
  • 在组织内可以采取哪些行动。
  • 自承载运行程序如何安全地执行工作流。
  • 谁可以修改和更新共享 GitHub Actions。

企业管理员需要在为开发人员提供灵活性并确保自动化工作流的安全性和管理之间取得 平衡

组织范围内的操作控制策略

GitHub Enterprise 使管理员能够设置 组织范围的策略来控制 如何在组织内的所有存储库中使用操作。 这些策略可帮助组织 限制使用第三方作、强制实施安全措施和标准化自动化工作流。

存储库级别的操作权限

虽然组织范围的设置会全局应用,但存储库级权限提供了对谁可以运行工作流和修改操作的精细控制。

管理存储库级工作流权限

每个存储库都可以定义 谁可以创建、编辑和执行工作流

权限级别 功能
阅读 查看工作流,但无法触发或编辑工作流。
写入 编辑工作流,但无法创建新工作流。
管理员 创建、编辑和管理工作流权限。

默认情况下,GitHub 会将工作流权限设置为 “读取和写入”,但企业应 将其限制为“读取”,除非明确要求 防止未经授权的修改。

限制谁可以修改组织拥有的操作

如果组织在专用存储库中托管 可重用的 GitHub Actions ,则访问权限应 仅限于授权用户

  • 使用 分支保护规则 防止未经授权的修改。
  • 需要通过“拉取请求批准”对操作进行更新
  • 使用 GitHub Teams 和 Role-Based 访问控制(RBAC)限制写入访问。

这可确保对核心自动化操作所做的任何修改在部署之前被审查。

限制对外部操作的访问

GitHub Actions 允许使用 第三方操作,但如果未正确审查,外部操作 可能会带来安全风险 。 组织应该控制可以使用哪些外部行为。

使用外部行动的风险

  • 恶意代码执行:不受信任的外部作可能会带来漏洞。
  • 依赖项篡改:第三方行为可能会导致供应链攻击
  • 机密泄露:外部作可能会无意中记录机密。

配置外部操作限制

管理员可以在“组织设置”→“操作”→“策略”中允许或阻止外部操作

选项包括:

  1. 仅允许 GitHub 验证的操作 (建议用于安全)。
  2. 通过允许列表允许特定的外部操作
  3. 阻止所有外部操作(最严格的安全措施)。

示例: 仅允许已验证的外部动作

  • 导航到 “组织设置”→作→策略
  • “允许的操作和可重用工作流”下,选择:
    • 仅允许 GitHub 创建的操作。
    • 在使用前手动批准任何第三方的操作
  • 保存设置。

实施外部操作允许列表

需要特定第三方操作的组织可以通过指定受信任的存储库 来创建白名单

示例:仅允许 GitHub 的官方 checkout 操作:

- name: Checkout Repository
  uses: actions/checkout@v4

管理员可以在 组织设置→作→策略中定义此允许列表。

确保自托管运行程序的安全

使用 自承载运行程序 执行 GitHub Actions 的企业需要强制实施 其他安全措施

自托管运行程序的风险

风险 说明 缓解措施
未经授权的访问 攻击者可能会劫持运行程序来执行恶意操作。 使用 IP 允许列表限制访问。
机密曝光 敏感凭据可能会泄露给被盗用的运行程序。 将机密存储在 GitHub 机密管理 中,而不是环境变量。
运行程序破坏 如果不隔离运行程序,来自不同团队的工作流可能会互相干扰。 使用每个作业后都会重置的临时运行程序

限制对自托管运行程序的访问

  1. 导航到“组织设置”→“操作”→“运行程序”
  2. 创建运行程序组以限制访问
  3. 限制运行程序的使用
    • 仅允许内部存储库的运行程序。
    • 将使用情况限制为特定团队。

为 GitHub Actions 配置组织使用策略

本指南详细说明了如何为 GitHub Actions 配置组织使用策略,包括:

  1. 允许的操作和可重用工作流。
  2. 工作流权限和安全策略。
  3. 自托管运行程序限制。
  4. 机密管理和访问控制。
  5. 监视和审核工作流。

允许的操作和可重复使用的工作流

企业应实施 的主要安全策略 之一是控制 组织内可以使用哪些 GitHub Actions。 管理员可以将策略配置为:

  • 允许或阻止第三方操作
  • 限制使用组织拥有的操作
  • 为批准的外部操作创建允许列表

“通用作权限”屏幕的屏幕截图,其中选择了默认选项

配置允许的操作策略

  1. 导航到“组织设置”→“操作”→“策略”。

  2. 在“允许的操作和可重用工作流”下,选择以下之一。

    • 允许所有操作和可重用工作流,默认设置,限制最少。
    • 仅允许 GitHub 创建的操作(阻止第三方操作)。
    • 仅允许在组织内创建的操作(安全性建议)。
    • 阻止除允许列表以外的所有操作(最严格控制)。
  3. 如果使用允许列表,请指定允许的外部操作:

    - actions/checkout@v4
    - actions/setup-node@v3
    
  4. 保存设置。

配置工作流权限和安全策略

工作流权限定义 GitHub Actions 工作流在存储库中的访问级别。 这些设置确定工作流是 可以修改存储库内容 还是 仅读取 存储库数据。

配置默认工作流权限

GitHub 提供了两个选项:

  1. 只读(安全性建议)
    • 工作流可以 读取 存储库内容,但 无法进行更改
    • 防止操作意外或恶意修改代码
  2. 读取和写入 (风险较高)
    • 工作流 可以推送提交、创建问题和修改设置
    • 应仅对 受信任的工作流启用。

配置默认工作流权限的步骤

  1. 导航到“组织设置”→“作”→“常规”。
  2. 在“工作流权限”下,选择:
    • 只读(建议)
    • 读取和写入 (仅适用于特定情况)。
  3. 保存设置

强制执行工作流运行的批准

为了防止未经授权的工作流执行,管理员可以在分叉存储库中运行工作流之前需要手动批准

需要批准外部贡献的步骤

  1. 导航到“组织设置”→“作”→策略
  2. 在“分支拉取请求工作流”下,选择:
    • 需要批准从分支运行的工作流。
    • 允许自动执行分叉工作流(不建议)。
  3. 保存设置

此策略可防止从不受信任的分支运行工作流的相关安全风险

自托管运行程序限制

自托管运行程序可以更好地控制 CI/CD 执行,但如果未正确配置,则会带来安全风险。 组织应强制实施以下策略:

  • 限制哪些存储库可以使用自承载运行程序
  • 限制对特定团队的访问
  • 使用临时运行程序,以确保安全性

配置运行程序访问权限

管理员可以 限制哪些存储库 有权访问自承载运行程序。

限制自托管运行程序使用的步骤

  1. 导航到“组织设置”→“操作”→“运行程序”
  2. 选择“运行程序组”
  3. 设置访问级别
    • 仅允许选定的存储库使用自托管运行程序。
    • 不允许公共存储库使用企业运行程序。
  4. 保存设置

管理机密和访问控制

GitHub Actions 通常需要 API 密钥、凭据和环境变量。 应 使用 GitHub 机密管理安全地存储这些内容。

组织机密与存储库机密

类型 范围 最佳用例
存储库机密 特定于一个存储库。 针对特定于存储库的凭据。
组织机密 可用于多个存储库。 针对共享的企业凭据。

配置组织机密

  1. 导航到“组织设置”→机密和变量→作
  2. 单击“新建机密”。
  3. 输入机密名称和值
  4. 选择存储库访问
    • 所有存储库。
    • 选定的存储库。
  5. 保存机密

管理机密的最佳做法

  • 仔细使用环境变量 来防止机密泄露。
  • 定期轮换机密 以提高安全性。
  • 使用第三方机密管理器 (例如 AWS 机密管理器、HashiCorp Vault)。

监视和审核 GitHub Actions 使用情况

组织必须 监视 GitHub Actions 的使用,以确保合规性并检测未经授权的活动。

为 GitHub Actions 启用审核日志

审核日志可帮助了解:

  • 谁运行工作流。
  • 执行了哪些操作。
  • 工作流使用了哪些权限。

启用审核日志的步骤

  1. 导航到组织设置→安全→审核日志。
  2. 按“作”筛选日志以查看工作流执行历史记录。

强制实施日志保留策略

企业应配置 日志保留 以符合安全策略。 保留日志可确保组织可以查看历史工作流执行、检测可疑活动并遵守行业法规。

配置日志保留策略的步骤

  1. 导航到组织设置→安全→审核日志。
  2. 将日志保留期设置为符合性要求:
    • 30 天(默认值)。
    • 90 天(建议用于有安全意识的组织)。
    • 自定义期限(根据法律和合规性需求)。
  3. 保存设置。

或者,使用 GitHub 的 API 设置日志保留期。