独享节点,清楚的安全边界

你的证书,只在你的机器上

OSXBuild 交付整台独享物理机,非虚拟机。CPU、内存与磁盘不与其他客户共享;签名证书、源码与构建产物,由你决定如何存放、授权与导出。

先确认隔离方式,再配置签名与访问权限。不要把私钥或密码放进工单。

先看资源归属

同一台机器,不混入别人的构建

独享的是物理节点,不是共享主机上的一个任务槽。租期内,整台 Mac mini 为你的工作负载服务。

CPU 与内存独享

其他客户不会在这台机器上运行编译、测试或推理任务。你的构建进程使用本机资源,不与其他客户争用同一台主机的 CPU 和内存。

同一节点上启动多少并行任务,仍由你的 runner 与构建脚本控制。

磁盘与缓存归你管理

源码、DerivedData、依赖缓存与导出的 IPA 存放在你的节点内。不会因另一位客户提交任务而被覆盖,也不需要把签名文件交给共享构建队列。

缓存不是备份。重要产物与恢复材料应另存一份。

物理隔离不替代权限管理

整台独享解决客户之间的资源隔离。团队成员之间的权限,仍应按项目分配;日常构建使用专用用户与专用密钥,不把管理员凭据写进流水线。

macOS 图形界面与命令行完整可用,访问范围由你配置。

机器内的代码与构建产物归客户所有,我们不读取这些业务内容。排障时请只提供必要的错误片段;提交前先移除令牌、签名材料与项目机密。

租期结束后的交接

先擦除磁盘,再重新交付

节点不会把上一位客户的工作目录直接交给下一位。回收包含磁盘安全擦除与系统重装。

  1. 你先完成备份

    在租期结束前,导出需要保留的源码、IPA、配置和签名恢复材料。检查文件能否在其他环境读取;不要只确认“复制命令已经运行”。

  2. 节点进入回收

    租期结束、节点回收后,执行磁盘安全擦除。回收处理不是临时保管服务,不应把节点当作到期后仍能取回文件的归档位置。

  3. 重装后再交付

    完成系统重装后,节点才会交付给下一位客户。你的项目目录、构建缓存与签名资产不会作为新客户的初始环境保留。

不要等到最后一次 archive 才想起交接

建议把备份检查写入项目交接清单,同时撤销节点不再需要的仓库访问、runner 注册和分发令牌。擦除本机磁盘,不会自动撤销外部系统中仍然有效的授权。

把签名当作发布权限

证书能签名,不等于谁都能拿走

让构建任务获得完成发布所需的最小权限。下面三件事,比把文件藏在一个不显眼的目录里更有效。

独立钥匙串,用完加锁

为构建用户建立专用钥匙串。仅在签名步骤前解锁,流水线结束后重新加锁;任务失败时也应执行清理,避免钥匙串因异常退出而一直保持可用。

解锁密码从受控的凭据存储读取,不作为命令参数回显。

上传使用 API Key

向 App Store Connect 上传产物时,使用符合任务权限范围的 API Key,替代在自动化脚本中保存账户密码。密钥文件与项目代码分开存放,轮换时同步更新构建配置。

不要把密钥内容写进日志、构建产物或错误截图。

.p12 不进共享仓库

不要提交包含私钥的 .p12 文件,也不要把导出密码放在同一个仓库。使用 Fastlane match 时,分别管理加密材料与解密凭据,并限制签名仓库的读取权限。

误提交后应评估撤销与轮换,仅删除当前文件并不能清除历史记录。

收尾动作:锁回构建钥匙串

以下命令使用示例钥匙串路径。请替换为实际名称,并将同样的清理动作放进流水线的结束处理。

security lock-keychain "$HOME/Library/Keychains/build.keychain-db"
两道入口,分别保护

控制台管订单,SSH 管机器

控制台登录凭据与节点登录密钥承担不同职责。不要复用,也不要把其中任何一项交给不需要该权限的任务。

控制台与邮箱

为控制台设置独立密码,并保护用于接收登录与验证邮件的邮箱。只在你信任的设备上登录,不通过他人转发的页面输入凭据。

交付信息、订单状态与相关操作记录在控制台核对。发现与预期不符的变更时,记录订单号和发生时间,再提交工单;不要把完整凭据附在说明里。

登录控制台

SSH 与团队访问

使用 SSH 公钥登录,把私钥留在受控的本地设备或 CI 凭据存储中。每位成员、每条流水线使用独立密钥,便于单独撤销,不共用一把无法追溯的私钥。

确认密钥连接可用、并保留可恢复的访问方式后,再调整密码登录与端口策略。成员离组或 runner 退役时,及时移除对应授权。

查看连接与迁移说明

操作可查,日志也要脱敏

建议让每次发布关联提交版本、流水线编号与产物版本,并限制构建日志的读取范围。需要支持协助时,保留出错时间及日志末尾相关片段,移除环境变量、访问令牌和带凭据的仓库地址。

账单与机器数据分开处理

卡号不留在 OSXBuild

所有订单以美元(USD)结算。仅支持以下两类支付方式,实际可用网关以后端接口返回为准。

Visa / Mastercard / Amex

信用卡付款经 Stripe 处理,OSXBuild 不存储卡号。订单记录保留交付与对账所需的支付状态,不把卡号作为技术支持材料收集。

遇到支付问题,提供订单号、支付时间与页面错误提示即可。

USDT-TRC20

仅使用结账页面实时给出的支付信息,核对网络、金额与收款信息后再转账。不要使用历史截图或他人邮件中的地址代替当前订单页面。

需要协助对账时提供交易标识,不提供钱包私钥或恢复材料。

发票、续费与支付结果请在控制台查看。任何人以排查支付为由索取完整卡号、卡片安全码或私钥,都不应获得这些信息。

把问题交给能处理的人

报告漏洞,不要发送秘密

安全报告、权限异常和疑似凭据泄露,统一通过支持邮箱或登录后的控制台工单提交。没有额外的安全报告邮箱。

第一封报告写清四件事

  • 影响位置:页面路径、节点或相关订单号,避免包含访问密码。
  • 发生过程:最少复现步骤、预期结果与实际结果。
  • 时间线索:发生时间及所在时区,便于核对操作记录。
  • 脱敏证据:错误片段或遮盖敏感信息后的截图,不附私钥与完整签名文件。

选择一个渠道即可

尚未下单或无法登录时使用邮箱;已有订单的问题优先提交工单,便于关联节点与交付信息。

support@osxbuild.com

如果怀疑密钥已泄露,先撤销相关授权并轮换凭据,再提交报告。验证问题时只使用你有权访问的资源,不读取其他客户的数据,也不要进行破坏性测试。

让下一次签名,有清楚的边界

整台节点独享,签名资产由你管理。选好配置,再把密钥、备份与回收清单一起接入构建流程。