跳到主要内容

安全概览

Testudo 是控制面系统,会访问管理集群、远端业务集群、对象存储和备份数据。生产部署时应把它纳入平台安全基线,而不是只当作普通 Web 应用部署。

安全边界

边界默认行为风险
Web 控制台disaster-web 默认通过 NodePort 30087 暴露不应直接暴露到公网
Server APIdisaster-server 默认是 ClusterIP 30081不建议绕过 web/网关直接暴露
Operator运行在管理集群,访问 CRD、Velero 和远端集群凭据权限过大时会扩大故障影响面
Webhook默认启用,服务端口 443 转到 9443TLS/CA 配置不当会影响 CRD 写入
对象存储保存备份数据凭据泄漏会导致备份数据泄漏或被删除
远端集群凭据kubeconfig 或 token+endpoint凭据权限应最小化并定期轮换

认证与入口

  • /login/refresh_token 是公开认证入口。
  • /apis/api 下的业务接口在非 dev 环境启用 JWT 中间件。
  • Watch/WebSocket 客户端可以通过 AuthorizationSec-WebSocket-Protocoltoken query 参数传递 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 中披露疑似漏洞: