安全概览
Testudo 是控制面系统,会访问管理集群、远端业务集群、对象存储和备份数据。生产部署时应把它纳入平台安全基线,而不是只当作普通 Web 应用部署。
安全边界
| 边界 | 默认行为 | 风险 |
|---|---|---|
| Web 控制台 | disaster-web 默认通过 NodePort 30087 暴露 | 不应直接暴露到公网 |
| Server API | disaster-server 默认是 ClusterIP 30081 | 不建议绕过 web/网关直接暴露 |
| Operator | 运行在管理集群,访问 CRD、Velero 和远端集群凭据 | 权限过大时会扩大故障影响面 |
| Webhook | 默认启用,服务端口 443 转到 9443 | TLS/CA 配置不当会影响 CRD 写入 |
| 对象存储 | 保存备份数据 | 凭据泄漏会导致备份数据泄漏或被删除 |
| 远端集群凭据 | kubeconfig 或 token+endpoint | 凭据权限应最小化并定期轮换 |
认证与入口
/login和/refresh_token是公开认证入口。/apis与/api下的业务接口在非dev环境启用 JWT 中间件。- Watch/WebSocket 客户端可以通过
Authorization、Sec-WebSocket-Protocol或tokenquery 参数传递 token。 - OpenAPI 路由在 Swagger 开启时注册为
/openapi.yaml、/openapi.json和/swagger/。
详见 API 认证。
权限原则
- Server 不应绕过 CRD 状态机直接操作远端集群业务资源。
- Operator 承担会改变容灾实际状态的动作。
- 远端集群访问凭据应只授予备份恢复和被保护命名空间所需权限。
- 生产环境应定期审计管理集群中的 ServiceAccount、ClusterRoleBinding 和 Secret。
详见 RBAC 与权限。
凭据治理
重点保护:
- 镜像拉取 Secret。
- 对象存储 access key / secret key。
- 远端集群 kubeconfig 或 token。
- JWT secret。
- License Secret。
- webhook TLS Secret 和 CA bundle。
不要把真实凭据提交到公开仓库或公开 values 文件。开源发布包应使用占位符或复用已有 Secret。
详见 Secret 与凭据治理。
网络建议
- 生产环境优先通过 Ingress、网关或堡垒入口暴露
disaster-web。 disaster-server保持ClusterIP,只允许 web、网关或受控自动化系统访问。- Operator metrics 服务如启用,应受 Kubernetes RBAC 和网络策略保护。
- 管理集群到业务集群 Kubernetes API、对象存储 endpoint 的访问应有明确防火墙规则。
详见 网络端口与访问边界。
安全报告
安全漏洞请通过 GitHub 主仓库的 GitHub Security Advisories 报告,不要在公开 issue 中披露疑似漏洞: