github-early-access/actions-native-egress-firewall

GitHub: github-early-access/actions-native-egress-firewall

GitHub 官方的 Actions 原生出站防火墙抢先体验计划,为托管 runner 提供独立于 VM 的出站流量审计与强制执行能力。

Stars: 0 | Forks: 1

# Actions 原生出站防火墙 — 抢先体验 欢迎使用 **GitHub Actions 原生出站防火墙**抢先体验计划。本计划为设计合作伙伴提供 GitHub 托管 runner 防火墙的实操访问权限,支持审计和强制执行(稍后推出)。 ## 抢先体验入门 原生出站防火墙基于 GitHub Actions 现有的 runner 镜像架构构建,但在嵌套 VM 的上下文中运行。从而将 runner 与防火墙分离开来。我们提供标准版支持防火墙的 runner 镜像和加强版支持防火墙的 runner 镜像,为客户提供与当今相同的镜像选项,并包含原生出站控制。目前,日志会在工作流运行结束后作为 artifact 提供。 抢先体验中的 runner 访问方式: - 默认提供 **标准 GitHub 托管 runner**。在工作流文件中设置 `runs-on: ubuntu-24.04-firewall`。 - 技术预览版期间,可通过请求获取**加强版 runner**。请提交[加强版 runner 访问请求](../../issues/new?template=larger-runner-access-request.yml)并包含以下信息: - 访问权限是针对企业还是组织 - 准确的企业或组织名称 - 联系人 批准后,请要求您的管理员使用 GitHub 维护的 **`Ubuntu 24.04 with Firewall`** 镜像创建一个 Linux 加强版 runner。 ## 报告反馈 - [问题报告](../../issues/new?template=issue-report.yml) — 报告 bug、被阻止的请求、误报或意外行为。 - [功能请求](../../issues/new?template=feature-request.yml) — 请求新的规则类型、托管规则或平台扩展。 - [加强版 runner 访问请求](../../issues/new?template=larger-runner-access-request.yml) — 申请抢先体验使用 `Ubuntu 24.04 with Firewall` 镜像的加强版 runner。 ## 什么是原生出站防火墙? 如今的 GitHub 托管 runner 允许不受限制的出站网络访问。任何工作流都可以访问互联网上的任何主机,无论 `GITHUB_TOKEN` 权限、secret 作用域、OIDC 或 SHA 绑定如何。这些控制措施管理的是*身份*、*代码*以及*工作流在 GitHub 内部可以做什么* —— 但目前没有任何措施可以管理*工作流可以在网络上与谁通信*。 原生出站防火墙弥补了这一空白。它在 runner VM **外部**运行,检查 DNS 和 HTTP/HTTPS 流量,即使工作流在 runner 内部获得了 root 访问权限,它也能保持不可变。它是对 OIDC、SHA 绑定和 `GITHUB_TOKEN` 权限的补充,而不是替代;它们共同构建了一个具备身份识别、确定性、最小权限且受网络边界约束的工作流。 该功能提供两种模式: - **审计模式**记录每一个出站 DNS 查找和 HTTP 请求,但不会阻止任何内容。这是安全的切入点。 - **强制执行模式(未来推出)**应用允许列表。不在列表中的流量将被阻止、记录,并连同违规命令和拒绝它的规则一起显示在工作流摘要中。 ### HTTPS 检查的工作原理 为了支持 URL 级别的允许规则,防火墙**在出站边界终止 TLS,并与目标重新建立 TLS**。每次工作流运行都会获得一个唯一的临时证书,该证书在运行结束时会被销毁,因此流量对该运行保持私有。 - 如果您的工作流信任操作系统证书存储(`curl`、`git`、`npm`、`pip`、`docker` 等的默认设置),您将看到正常的 HTTPS 连接 —— 无需进行任何更改。 - 如果您的工作流使用**证书绑定**或 **mTLS**,则需要对其进行更新,以信任每次运行的临时证书。 ## 两种交付路径 | 采用路径 | Runner 类型 | 启用方式 | 最适用于 | |---|---|---|---| | 启用防火墙的标签 | 标准 GitHub 托管 runner | 在工作流中设置 `runs-on: ubuntu-24.04-firewall` | 个人存储库、开源项目、无需管理员设置即可快速采用 | | 启用防火墙的镜像 | 加强版 runner | 创建加强版 runner 时选择 GitHub 维护的 `Ubuntu 24.04 with Firewall` 镜像 | 已经使用加强版 runner、自定义工具、私有网络或 runner 组的企业 | 这两种路径都能产生相同的第 7 层强制执行、相同的遥测数据和相同的规则语义。基于防火墙基础镜像构建的自定义加强版 runner 镜像无法禁用或绕过防火墙,因为强制执行存在于 VM 外部。 ## 分阶段推出 | 阶段 | 功能 | 范围 | |---|---|---| | 技术预览版 | 审计模式 | Linux,通过 runner 标签或加强版 runner 镜像选择加入 | | 公开预览版 | 带有允许列表规则的强制执行模式。默认全部拒绝 | Linux,仅限存储库级别 | | GA | 通过 **Actions 规则集**进行组织和企业规则定义(按名称、模式或自定义存储库属性定位),**托管开发者意图规则**,通过 **Actions 数据流**进行日志流传输 | Linux,Windows 和 macOS 随后推出 | ### 日志去向 - **预览版:**防火墙事件会显示在工作流运行摘要中,并作为工作流运行 artifact 提供。我们将记录二进制文件名(不包含命令行标志或环境变量)以及 URL(不包含查询参数或 URL 片段)。请注意不要在您的命令名称或 URL 路径中意外记录 secret! - **GA:**事件会流式传输到 **Actions 数据流**,并附带工作流、作业、步骤和命令的归属信息,随时可导入现有的 SIEM 和检测管道。
标签:DevSecOps, GitHub Actions, 上游代理, 出站流量控制, 网络防火墙, 自动笔记