独享物理节点安全模型

把云端 Mac 的安全边界画清楚

每个订单对应一台有明确租期的独享物理机,非虚拟机。ZoomMini 负责物理节点与控制台的运行,客户负责系统账户、应用配置、代码、秘密信息与备份。边界明确,权限才能被审计和回收。

  • 1 个订单对应 1 台独享物理机
  • 远程入口、系统权限与应用秘密分层管理
  • 所有节点全年 365 天正常运行
SECURITY BOUNDARY 订单隔离视图
物理层 独享 Mac mini 订单租期内不与其他客户共享系统环境
入口层 控制台与远程连接 设备状态、地址、连接说明
系统层 账户与权限 客户配置唯一账户和最小权限
工作负载层 代码、密钥与构建 客户控制存放、轮换与迁出
边界可识别 PHYSICAL / ACCESS / WORKLOAD
隔离模型

物理隔离解决共享争用,权限隔离仍需客户配置

独享物理机把客户工作负载放在明确的设备边界内,但设备独享不等于所有账户、远程入口和应用凭据自动安全。真正可执行的隔离模型由物理层、控制层、系统层和工作负载层共同组成。

物理节点边界

每个有效订单对应一台独享物理机和一段明确租期。设备不是共享虚拟机,处理器、内存与本地存储不会以多租户虚拟会话形式分配给其他客户。

  • 边界对象订单、设备、节点、租期
  • 核对位置控制台中的实例详情
  • 客户动作确认设备标识与租期起止信息

远程入口边界

控制台用于读取设备状态与连接信息;VNC、屏幕共享和 SSH 用于进入系统。控制台会话和操作系统会话是两个权限面,应分别保护,不应共用弱凭据。

  • 图形操作使用 VNC 或屏幕共享
  • 自动化任务优先使用受控 SSH 密钥
  • 异常处理先限制入口,再检查系统会话

系统权限边界

获得远程地址不应自动获得全部系统权限。管理员权限、日常开发账户、CI runner 和临时排障账户应分开,按任务授予权限,并在任务完成后及时回收。

  • 管理员仅用于系统级变更
  • 开发账户承载日常交互工作
  • Runner只获得构建所需目录与命令权限
访问控制

把每一次登录变成可归属、可限制、可撤销的权限

访问控制的目标不是增加登录步骤,而是让团队能够回答三个问题:谁进入过设备、使用了什么权限、离开项目后是否已经失去访问能力。

  1. 01

    为人员分配唯一账户

    不要让多人长期共用同一系统账户。唯一账户能把终端历史、文件所有权、runner 操作和排障记录关联到明确人员,也能在成员离组时单独撤销访问。

  2. 02

    SSH 优先使用密钥认证

    为不同人员和自动化任务使用不同密钥,记录密钥用途与持有人。私钥只保存在受控终端或密钥系统中,不通过工单、邮件、聊天记录和代码仓库传递。

  3. 03

    按任务授予最小权限

    日常构建不应持续使用管理员权限。为 CI runner 限定工作目录、仓库范围和必要命令;需要临时提权时,先确认变更目的,完成后恢复原权限。

  4. 04

    按风险和人员变化轮换凭据

    团队应根据内部策略定期轮换系统密码、SSH 密钥和仓库令牌。发现成员离组、设备转交、密钥暴露或异常登录时,应立即轮换,不等待常规周期。

  5. 05

    清理失效入口

    删除不再使用的公钥、账户、runner 注册、远程桌面保存项和自动化任务。仅停用人员账号而保留其共享令牌,会留下难以归属的持续访问路径。

数据保护

代码与密钥的控制权留在客户手中

ZoomMini 提供设备和远程入口。客户决定哪些代码、构建产物、测试数据与秘密信息进入设备,也负责在租期结束前完成验证、备份和迁出。

传输通道

远程操作按工作类型选择 VNC、屏幕共享或 SSH。连接前核对控制台提供的地址和设备信息;SSH 首次连接时核对主机指纹,发现变化先停止连接并排查原因。

应核对
节点、地址、主机指纹、账户
应避免
跳过身份核对后直接接受连接

代码与秘密信息

仓库凭据、签名材料、部署密钥和服务令牌由客户自行管理。优先使用受控密钥系统按任务注入,设置有效范围和撤销路径,不把秘密写入版本库。

应核对
用途、范围、持有人、轮换方式
应避免
明文配置、脚本硬编码、多人共用令牌

日志脱敏

提交排障信息前移除密码、私钥、完整令牌、完整支付凭据和与问题无关的个人数据。保留问题时间、命令、错误码和必要上下文,避免因过度删除导致无法复现。

建议保留
时间点、错误码、版本、复现步骤
必须移除
密码、私钥和完整秘密信息

租期结束前迁出

在到期时间前迁出代码、构建产物、日志与业务数据,并验证备份可以读取。随后撤销仓库令牌、部署凭据和 runner 注册,删除不再需要的本地副本。

完成标准
数据已迁出、备份可验证、访问已撤销
核对位置
控制台中的设备状态与到期时间
到期前执行顺序

不要把“已经复制”当成“已经完成迁出”

1. 盘点列出代码、产物、缓存、日志和秘密信息
2. 复制迁移到客户控制的目标存储或新环境
3. 验证抽查文件完整性并执行必要恢复测试
4. 撤销轮换令牌、解绑 runner、移除远程权限
CI/CD 安全

构建机可以持续在线,秘密信息不应持续暴露

持续集成环境通常拥有仓库读取、签名、测试和发布权限。应把这些能力拆成独立秘密,按流水线阶段注入,并保证每项秘密都能单独轮换与撤销。

01

仓库访问

令牌只覆盖需要的仓库和操作。只做拉取的 runner 不应获得管理权限,临时任务不应复用长期发布令牌。

限制范围
02

构建与测试

runner 使用独立账户和工作目录。依赖缓存应可验证来源,构建脚本避免输出环境变量和请求头中的秘密信息。

隔离账户
03

签名材料

签名证书和相关私钥放入受控密钥系统,仅在需要签名的任务中注入。任务完成后清理临时文件和进程环境。

按需注入
04

发布凭据

发布令牌与仓库令牌分开,测试流水线不能继承生产发布权限。人员或项目变化时,能够单独撤销而不影响其他任务。

独立撤销
提交前检查

在脚本和日志中查找秘密暴露路径

检查构建脚本是否打印环境变量,失败处理是否回显完整命令,缓存目录是否包含凭据文件,以及产物归档是否意外收录配置文件。发现秘密进入日志后,不只删除日志,还要轮换对应凭据。

pipeline-security-check
$ git grep -nE "TOKEN|PRIVATE_KEY|PASSWORD" -- .
$ find build/ -type f -name "*.env" -o -name "*.key"
$ security find-identity -v -p codesigning
$ launchctl list | grep runner

检查结果:
✓ 仓库中未发现明文秘密
✓ 构建归档未包含凭据文件
✓ runner 使用独立系统账户
✓ 签名材料由受控流程注入
运行状态

用明确目标和事件记录描述服务运行

ZoomMini 的服务可用率目标为 99.9%。所有节点全年 365 天正常运行;运行记录按日呈现,事件标记用于提示需要复核的状态变化,不直接等同于整日不可用。

服务可用率目标 99.9% 适用于服务条款定义的统计与审核口径
近 90 天逐日状态 每根状态条对应 1 天
正常运行记录 事件标记

若客户认为服务未达到目标,应通过控制台提交工单,提供订单标识、节点、受影响时间段、可复现现象和脱敏日志。符合条件的请求按服务条款审核,并以服务额度赔付。

查看服务条款与审核口径
安全事件处理

先限制继续访问,再保留足够证据

疑似账户异常、未授权访问或秘密泄露时,应避免一边继续运行高权限任务,一边等待完整结论。先缩小影响范围,再保存必要记录、通知支持团队并轮换秘密信息。

  1. 01

    识别异常范围

    记录发现时间、设备标识、节点、异常账户、相关进程和受影响工作负载。区分控制台异常、系统账户异常、仓库令牌异常和应用行为异常,避免把不同权限面混为一个问题。

    输出初始时间线与受影响对象
  2. 02

    限制继续访问

    暂停可疑自动化任务,撤销异常会话,停用相关账户或公钥,并限制高风险令牌。不要为了保留现场而让已知异常访问持续扩大;限制动作本身也要记录时间和执行人。

    输出已撤销入口与暂停任务清单
  3. 03

    保留必要日志

    保存与事件相关的登录记录、命令历史、runner 输出、进程信息和错误码。导出前完成脱敏,不发送密码、私钥、完整支付凭据或与事件无关的个人信息。

    输出脱敏日志与复现线索
  4. 04

    通知支持团队

    通过控制台工单或 support@zoommini.com 提交订单标识、节点、发生时间、已执行限制动作和脱敏日志。若仍存在持续风险,在主题中明确标注“安全事件”,便于快速分流。

    输出可直接进入排查的事件说明
  5. 05

    轮换秘密并验证恢复

    按影响范围轮换系统凭据、SSH 密钥、仓库令牌、runner 密钥、签名材料和部署凭据。恢复任务前确认旧凭据已经失效,新权限符合最小范围,异常进程不再存在。

    输出轮换记录与恢复验证结果
提交时包含

让支持团队能直接开始定位的信息

订单标识用于定位对应物理节点
节点与设备核对事件发生的环境边界
问题时间写明时区和首次发现时间
复现步骤说明触发条件和预期结果
已执行动作列出停用、撤销和轮换操作
脱敏日志保留错误码,不附秘密信息
责任边界

基础设施由 ZoomMini 运行,工作负载由客户控制

清晰的责任边界可以减少排障中的等待和重复确认。物理节点、控制台与设备交付属于 ZoomMini 的运行范围;进入系统后的账户、应用、代码、秘密信息和备份属于客户控制范围。

ZoomMini 与客户的数据保护和安全责任对照
控制领域 ZoomMini 负责 客户负责 建议核对点
物理节点 设备与订单的独享对应关系、节点基础运行、控制台中的设备状态。 按订单用途使用设备,并在租期内完成工作负载管理与数据迁出。 设备标识、节点、租期起止时间。
控制台账户 提供账户访问、订单管理、实例状态和工单入口。 保护登录凭据,识别异常访问,并及时更新或撤销相关权限。 近期访问、订单变化、工单记录。
远程连接 在控制台提供对应设备的连接信息和状态说明。 核对地址与主机指纹,保护远程凭据,配置可信客户端。 节点、地址、指纹、连接账户。
系统账户 提供可使用的 macOS 图形界面和命令行环境。 创建唯一账户、执行最小权限、轮换凭据、移除离组成员。 账户清单、公钥清单、管理员权限。
应用与 CI/CD 维持物理节点与控制台的服务运行。 管理 Xcode、依赖、runner、脚本、仓库权限和发布流程。 runner 账户、工作目录、令牌范围。
代码与密钥 不替客户决定代码和秘密信息的存放、授权与轮换策略。 使用受控密钥系统,避免明文写入脚本、仓库和日志。 秘密用途、范围、持有人、撤销方式。
日志与支持 根据工单信息排查物理节点和控制台相关问题。 提交准确时间、复现步骤和脱敏日志,不发送秘密信息。 错误码、版本、时间线、已执行动作。
备份与迁出 在控制台呈现订单和设备的租期信息。 制定备份策略,验证可恢复性,并在租期结束前迁出数据。 备份完整性、恢复测试、令牌撤销。
ZoomMini 运行范围

物理节点与控制台

订单对应的独享物理机、节点基础运行、设备状态、订单管理入口和支持工单处理。

客户控制范围

系统账户与工作负载

操作系统权限、远程凭据、应用配置、代码、密钥、构建流水线、日志脱敏、备份与迁出。

共同处理范围

事件定位与恢复验证

客户提供订单、节点、时间线和脱敏日志;ZoomMini 根据边界定位基础设施状态,双方分别完成各自权限面的验证。

下一步

先确认边界,再把工作负载迁入独享节点

选择适合的机型和租期后,按唯一账户、SSH 密钥、最小权限、受控密钥注入与到期迁出清单配置环境。