用途:为 Kubernetes 集群配置 RBAC,实现最小权限访问控制,适用于多租户环境的权限隔离与审计。
主要能力:设计多租户 RBAC 角色层级;为不同角色创建细粒度 Role 与 ClusterRole;配置具备最小权限的 RoleBinding 与 ClusterRoleBinding;保护服务账户并限制其默认权限;集成 OIDC 外部身份提供商;通过审计日志审计和监控 RBAC 使用。
关键概念:Role 为命名空间级权限,ClusterRole 为集群级权限;RoleBinding 在命名空间内授权,ClusterRoleBinding 集群范围授权。RBAC 动词包括读取类(get/list/watch)、写入类(create/update/patch)、破坏类(delete/deletecollection)及高权限操作(impersonate/escalate/bind)。基于角色的访问模型包括集群管理员、命名空间管理员、开发者、查看者、CI/CD 服务账户。
实施步骤:1) 启用 --authorization-mode=RBAC,移除普通用户的默认 cluster-admin 绑定,禁用服务账户令牌自动挂载;2) 创建自定义 Role(如 developer,命名空间级,限定 pods/deployments/services/configmaps/jobs 等资源及动词);3) 将角色绑定到用户或组;4) 为每个应用创建专用服务账户,按需禁用 automountServiceAccountToken,使用带受众和有效期的投影令牌;5) 为 API server 配置 OIDC 参数并映射组;6) 启用审计日志并告警 ClusterRoleBinding 变更、监控权限提升尝试。
安全控制对应 NIST 800-53:AC-3、AC-6、AC-2、AU-3、AC-5。常见陷阱:给 CI/CD 授予 cluster-admin、使用通配符、未限制 pods/exec、默认服务账户权限过宽、未审计 RoleBinding 创建。
验证要点:所有用户经 OIDC 认证;无非必要 cluster-admin 绑定;开发者限于所属命名空间;服务账户使用最小权限;默认禁用令牌自动挂载;审计日志记录 RBAC 变更;用 kubectl auth can-i 验证权限。
限制:资料未提供具体运行命令、依赖版本或部署平台信息,实际配置需结合集群环境。