跳到主要内容

RBAC 与权限

Testudo 的权限分为三类:管理集群权限、Server API 权限、远端业务集群权限。生产环境应按职责拆分审计。

管理集群权限

disaster-operator 需要在管理集群中:

  • 管理 testudo.softcdata.com/v1 下的 CRD。
  • 读写 CRD status、conditions 和 history。
  • 创建 Kubernetes Event。
  • 访问保存远端集群凭据的 Secret。
  • 管理 leader election 所需的 ConfigMap/Lease。
  • 暴露 metrics 和 webhook 服务。

disaster-server 需要在管理集群中:

  • 读取和写入容灾 CRD。
  • 读取 Event。
  • 读取和写入用户、系统设置、License 等平台资源。
  • 将控制台动作转换为 CRD 创建或更新。

当前 Chart 中 disaster-server 使用较宽的 ClusterRole。生产环境如果需要最小权限,应基于实际 API 范围收敛权限,并在回归测试中覆盖控制台、Watch、License、统计和删除检查流程。

远端业务集群权限

远端集群凭据用于访问源集群和目标集群。最小权限应覆盖:

  • 读取 Kubernetes API 资源和命名空间资源。
  • 读写 Velero BackupRestoreScheduleBackupStorageLocation 等资源。
  • 读取和恢复被保护命名空间内的 workload、Service、Ingress、PVC、Secret、ConfigMap 等资源。
  • 读取 StorageClass、IngressClass、CRD 等依赖资源。

不要把 cluster-admin 作为长期凭据默认方案。首次接入可用高权限完成验证,生产上线前应收敛到最小权限。

权限排障

常见现象:

现象优先检查
集群注册成功但资源列表为空远端 token 是否有 list/watch 权限
Backup 未创建Velero namespace、Backup/BSL 权限
Restore 失败目标命名空间、PV/PVC、StorageClass 权限
实例无法进入 ProtectedDataSync/ResourceSync、Event、operator 日志
Server API 返回 403用户权限、JWT、Server RBAC

审计建议

  • 定期导出 ClusterRoleClusterRoleBinding 和相关 Secret。
  • 为远端集群凭据设置轮换流程。
  • 对对象存储 bucket 开启访问日志或审计。
  • 对控制台用户操作记录 trace ID、用户 ID 和操作对象。