生产就绪
在生产环境中安全运行自管理 ObjectOS 部署的检查清单 —— 响应头、密钥、速率限制、CORS、启动守卫、定时任务和保留期。
在把 ObjectOS 暴露给生产流量之前,使用这份检查清单。它同样适用于 Community 和 Enterprise;末尾的企业版额外提供一节列出了需许可证的镜像随之 带来的条目。
HTTP 加固
运行时默认在其路由上发送保守的安全响应头。请在经过任何会改写响应头的代理之后, 检查最终的响应:
Content-Security-Policy;X-Content-Type-Options;X-Frame-Options;Referrer-Policy;Permissions-Policy;Cross-Origin-Resource-Policy;- HSTS,运行时默认不发送它:在确认 TLS 正常后,在你的代理上添加。
curl -I https://app.example.com密钥
把这些保存在密钥管理器中,并在运行时注入:
| 密钥 | 用途 |
|---|---|
OS_AUTH_SECRET | 会话签名的基础密钥。每个副本上都完全相同 —— 取值不同的副本会互相拒绝对方的会话。 |
OS_SECRET_KEY | 每个存储的密钥都用它加密。在容器中是必需的,因为自行生成的密钥会随文件系统一起消失。把它与数据库一起备份:缺了其中一个,另一个什么都解密不了。 |
| 数据库凭据 | 访问业务数据库 |
| OIDC 客户端密钥 | 单点登录 |
| 提供商 API 密钥 | 邮件、存储、AI、集成 |
绝不要把密钥烘焙进产物或镜像。
绑定到控制平面的部署还持有一个运行时令牌,但那不是你要配置的密钥:它在绑定时 签发,并由运行时持久保存。它没有需要分发的部署级 API 密钥。
速率限制
运行时内置一个令牌桶速率限制器,在应用声明预算之前是关闭的(在其技术栈中的
server.security.rateLimit)。超出预算的调用者会收到带有 Retry-After 的 429。
令牌桶以已登录用户为键,匿名流量则以调用者地址为键。
在反向代理之后,调用者的地址就是代理的地址,除非应用设置了
server.trustProxy: true —— 并且只有在代理会在每个请求上覆盖 X-Forwarded-For
时才这样设置,否则调用者就能自己选择地址。计数器保存在内存中,按进程计算。登录
可以在 Setup → Authentication 中设置它自己更严格的预算。
如果限制应该放在边缘 —— 入口或网关 —— 可以从这样的预算开始:
| 流量 | 示例限制 |
|---|---|
| 认证端点 | 10/分钟/IP |
| 写入请求 | 60/分钟/IP |
| 读取请求 | 600/分钟/IP |
CORS
没有 OS_CORS_ORIGIN 时,运行时不接纳任何跨源调用者 —— 只要 Console 和 API
共享同一个公网源,也不需要接纳。从另一个源提供的前端要显式列出,以逗号分隔:
OS_CORS_ORIGIN=https://portal.example.com,https://admin.example.com在开启凭据时,* 会在启动时被拒绝。
启动守卫保持开启
有两个为开发准备的应急开关。它们都不应出现在生产环境中:
- **
OS_ALLOW_DRIVER_CONNECT_FAILURE未设置。**启动时无法连接的数据库会拒绝启动, 所以错误的OS_DATABASE_URL、轮换过的密码或被关闭的网络路径都是一次失败的部署 —— 而不是一个"已启动"、却对每个请求都返回 500 的服务器。这个开关会在没有数据库 的情况下启动,并且永远不会重新连接。 - **
OS_ALLOW_DEGRADED_TENANCY未设置。**一个要求多个组织、却没有组织运行时的部署 会拒绝启动;这个开关让它在缺少隔离的情况下启动。
定时任务是一项决策
应用和包所声明的定时任务 —— 时间触发的流程和打包的 cron 作业 —— 在部署设置
OS_AUTOMATION_SCHEDULED_WORK_ENABLED=true 之前都是关闭的。一个期望摘要、清理
或提醒按时触发的部署必须开启它。保持关闭也是一个合理的答案;但要有意为之。用
os doctor 确认生效的值,并阅读启动摘要:其中被列为 disabled by deployment
policy 的任务并没有坏掉,只是被关掉了。参见
环境变量。
在上线前设定保留期
平台会按计划删除遥测数据:活动在 14 天后删除,作业运行记录在 30 天后,通知在 90
天后,审计记录在 90 天后离开热存储。如果你的合规制度需要更长的保留期,请在上线
之前通过 lifecycle.retention_overrides 设置延长这些时间窗口 —— 按策略删除的
数据,在之后制作的每一份备份中都不会存在。
上线检查清单
- TLS 在边缘或入口终止。
- 最终响应中带有安全响应头。
- 在验证 TLS 之后启用了 HSTS。
-
OS_AUTH_URL和OS_TRUSTED_ORIGINS与公网地址一致。 - CORS 恰好接纳你所提供的跨源前端。
- 速率限制保护着登录和写入端点。
-
OS_AUTH_SECRET和OS_SECRET_KEY足够强,作为密钥存储,并已托管备份。 - 第一个管理员在地址被分享之前已经注册。
- OIDC 回调 URL 与公网域名一致。
-
OS_ALLOW_DRIVER_CONNECT_FAILURE和OS_ALLOW_DEGRADED_TENANCY未设置。 -
OS_AUTOMATION_SCHEDULED_WORK_ENABLED是某人做出的决策。 - 保留期窗口符合你的策略。
- 业务数据库的备份和恢复已经测试过 —— 参见备份。
- 审计日志按你的策略保留。
- 监控会对 5xx 比率和就绪状态告警 —— 参见可观测性。
- 回滚计划同时覆盖镜像版本和应用产物版本。