Skip to content

安全最佳实践

作为供应商,你需要了解以下安全机制和最佳实践,保护你的机器和平台用户的数据。

node-secret 安全

node-secret 是节点身份凭证,格式为 ns_<64位十六进制>

安全规则:

  • setup.sh 自动写入 /etc/ark/node-secret,权限为 600(仅 root 可读)
  • 永不写入 systemd 服务文件、环境变量文件、Docker Compose 文件
  • 永不出现在任何日志、git 仓库、shell history 中
  • 遗失 node-secret 需在控制台重置,旧 secret 立即失效

查看 node-secret 摘要:

bash
# 仅显示前 8 位(hint),用于确认身份,不泄露完整 secret
sudo cat /etc/ark/node-secret | cut -c1-10

任务沙箱隔离

所有任务在独立 Docker 容器中运行,具有以下隔离措施:

隔离层配置
文件系统容器只读层 + 独立 overlay 可写层
网络独立网络命名空间,默认无出站访问(可配置)
进程PID 命名空间隔离,无法看到宿主机进程
用户默认以非 root 用户运行
资源cgroup 限制 CPU、内存、GPU 用量

DANGER

请勿手动修改 Nomad / Docker 的安全配置(如开启 --privileged)。违规配置会导致节点被下线并扣除押金。

防火墙配置

节点只需开放以下端口:

端口协议用途
节点纯出站连接 Nomad Server,无需对外开放任何入站端口

节点 Nomad client 主动 retry_join 接入编排器(出站 RPC :4647 / Serf :4648),交互式实例经 cloudflared 出站隧道暴露,节点无需开放任何入站端口

推荐防火墙配置(UFW):

bash
# 默认拒绝所有入站
sudo ufw default deny incoming
sudo ufw default allow outgoing

# 允许 SSH(替换为你的管理 IP)
sudo ufw allow from YOUR_ADMIN_IP to any port 22

# 启用防火墙
sudo ufw enable

GPU 访问控制

每个任务通过 --gpus device=X 只分配特定 GPU,不能访问其他 GPU:

bash
# 平台自动生成,类似:
docker run --gpus device=0 --rm ...

多任务并发时,不同任务分配不同 GPU 设备,互不干扰。

数据隐私

  • 用户数据仅在任务运行期间存在于节点,任务结束后容器及所有数据自动删除
  • 平台不存储任务的输入/输出内容,只记录元数据(任务 ID、状态、计费信息)
  • 节点无法访问用户的 API Token 或账户信息

安全更新

节点的 Nomad client 与 Docker 由 systemd 托管。如需更新,重跑 setup.sh 会拉取最新组件:

bash
sudo systemctl restart nomad
# 或重跑安装脚本更新组件
sudo bash <(curl -fsSL https://api.arkcore.cloud/node-setup.sh) \
  --token YOUR_JOIN_TOKEN --api https://api.arkcore.cloud

异常处理

发现以下情况请立即联系 security@arkcore.cloud

  • 节点被访问到宿主机文件系统
  • 容器内出现意外的网络请求
  • node-secret 疑似泄露

基于 MIT License 发布