短期租用计算设备部署CI Runner,先隔离执行环境与凭据权限

短期部署 CI Runner 时,重点不是尽快接入流水线,而是限制任务能访问的代码、凭据、网络和宿主机资源。本文比较虚拟机与容器隔离,并给出从租用验收到销毁回收的操作步骤。

公司动态 · 发布时间:

短期租用计算设备部署 Runner,容易忽略一个关键问题:流水线任务执行的代码未必可信。短期租用计算设备搭建持续集成Runner的安全隔离,应先明确任务边界,再决定设备形态、凭据范围和回收方式。无论使用 GitLab Runner 还是 GitHub Actions 的自托管 Runner,都不要把“任务结束”当成“风险消失”。

先判断租用设备要隔离什么

CI 任务会读取仓库、安装依赖、运行测试并生成制品。若合并请求来自外部贡献者,构建脚本和依赖也可能执行不可信操作。因此要分别限制四类访问:其他任务的数据、宿主机资源、外部网络,以及部署密钥等凭据。

先列出任务实际需要的资源。例如,单元测试通常只需代码仓库和依赖源;发布任务才可能需要制品仓库或部署权限。不要为了方便,在所有流水线中放入同一组长期有效的密钥。

短期租用计算设备部署CI Runner,先隔离执行环境与凭据权限

虚拟机和容器,隔离强度不同

优先考虑一次性虚拟机

如果任务运行不可信代码,或需要使用 Docker 构建,优先选择每个任务独立的虚拟机,完成后销毁。虚拟机边界通常比共享内核的容器更清晰,但仍需限制管理面、网络和云平台权限;销毁虚拟机也不能自动撤销已经外传的凭据。

容器适合边界明确的轻量任务

容器启动和回收较快,适合可信仓库中的常规测试。应避免让构建容器直接挂载宿主机 Docker 套接字,也不要默认启用特权模式;这类配置会显著扩大任务对宿主机的控制能力。若容器长期复用,还要防止工作目录、缓存和残留进程跨任务泄漏。

按顺序配置,避免凭据跟着设备一起“常驻”

  1. 验收租用设备。确认登录方式、操作系统镜像来源、管理账号交接和到期回收流程;更换初始密码,关闭不需要的远程入口。
  2. 创建专用执行身份。Runner 使用独立账号运行,不授予日常管理员权限。管理账号只用于维护,不作为流水线任务身份。
  3. 划分任务队列。将可信分支的发布任务与外部合并请求的验证任务分开。外部代码不应获得部署密钥、写入令牌或可访问生产环境的网络通道。
  4. 缩小凭据范围。优先使用短时、单用途凭据,并按仓库或环境授权。秘密变量只提供给确实需要它的受保护任务;日志中避免打印秘密值。
  5. 限制网络与数据留存。按任务需要开放依赖源和制品服务,能限制出站访问时就不要给任意外网访问。检查缓存、工作目录和构建制品是否包含令牌或私有配置。
  6. 完成后回收。停止 Runner,撤销其注册令牌和临时凭据,清除磁盘上的工作目录与缓存,再按租用约定销毁设备或恢复干净镜像。确认操作记录可追溯。

常见失误:隔离了进程,却没隔离权限

把任务放进容器,不代表它不能接触挂载目录、主机套接字或环境变量。使用 Docker-in-Docker 时,也应评估特权容器和共享存储带来的风险。更稳妥的做法是把构建任务与发布任务拆开:前者只产出经过校验的制品,后者在受保护的执行环境中取得有限权限,再从可信制品来源发布。

短期租用计算设备搭建持续集成Runner的安全隔离,核心是让每次任务只拿到完成工作所需的最小权限,并确保任务结束后环境和凭据都能回收。设备租期短,不等于凭据泄露窗口短;真正的边界来自任务分区、权限控制和可验证的销毁流程。

常见问题

短期任务需要长期注册 Runner 吗?

不一定。若平台和部署方式支持临时 Runner,可按任务或短批次注册并在结束后注销;否则要设置明确的停用、令牌撤销和设备销毁步骤。

能否让外部合并请求使用自托管 Runner?

只有在执行环境不含敏感凭据、与其他任务隔离且网络权限受控时才考虑。否则,应改用隔离程度更高的临时执行环境,或不让外部代码运行在该 Runner 上。

怎样确认清理已经完成?

核对 Runner 已离线或注销、令牌已撤销、临时密钥已失效,并检查工作目录、缓存及制品中是否残留秘密;仅删除流水线记录不足以证明设备数据已清除。


业务常见问题

裸金属服务器和云服务器怎么选择?

需要灵活调整资源、快速部署多个实例,可以关注云服务器;需要独占硬件或长期稳定负载,可以关注裸金属。还要比较管理方式、扩容步骤和长期使用成本。

网站内容更新后,CDN 为什么还显示旧内容?

节点可能仍保留有效期内的缓存。可以更新资源版本号,或刷新对应路径;频繁变化的内容应使用合适的缓存时间和校验策略。

DDoS 攻击是什么?

DDoS 攻击通过大量分散的流量或请求消耗业务资源,使正常用户访问受影响。可能被耗尽的资源包括网络带宽、设备处理能力和应用连接数。

云手机是什么?

云手机提供在远程环境中运行的移动系统,用户通过网络连接进行操作。它适合移动应用测试、业务演示和需要集中管理的移动工作环境。

为什么测速很快,下载文件却很慢?

测速与文件下载可能访问不同的目标和线路,单连接能力、磁盘速度及应用限速也会影响结果。用实际业务地址测试,更容易发现具体限制。

服务器核心数越多,运行速度就越快吗?

不一定。可以并行处理的任务更容易利用多核心,单线程任务还取决于单核性能。数据库、网站程序和计算软件的工作方式不同,选型应结合应用特点。

服务器托管怎么安排远程管理?

可以结合远程管理端口、管理网络与访问控制,减少日常维护对现场人员的依赖。管理入口应限制访问来源,并与公开业务端口分开规划。

用了 CDN 还需要服务器吗?

通常仍需要源站保存原始内容并处理业务请求。CDN 节点未命中缓存或需要获取新内容时,会按照回源规则访问源站。

响应式网站是什么意思?

响应式网站会根据屏幕宽度调整布局,让电脑、平板和手机都能正常阅读与操作。设计时需要同时检查文字、图片、导航和表格在小屏幕上的表现。

云手机和云桌面有什么区别?

云手机主要提供移动系统环境,云桌面主要提供桌面操作系统环境。选择时先看业务软件运行在哪种系统,再确认操作方式和设备能力。