在Kubernetes中配置RBAC角色和权限需遵循以下步骤:
- 定义角色:通过Role(命名空间内)或ClusterRole(集群范围)声明权限,指定可操作的API资源及动作(如get、list、create)。
- 创建绑定:使用RoleBinding(绑定Role到特定命名空间)或ClusterRoleBinding(绑定ClusterRole到整个集群),将角色关联到用户、组或ServiceAccount。
- 最小权限原则:优先限制为必要权限,避免过度授权。
- 验证权限:通过
kubectl auth can-i
命令或审计工具检查权限是否生效。 关键YAML示例:# Role示例 apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: namespace: default name: pod-reader rules: - apiGroups: [""] resources: ["pods"] verbs: ["get", "list"]
RoleBinding示例
apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: read-pods namespace: default subjects:
- kind: User
name: example-user
roleRef:
kind: Role
name: pod-reader
apiGroup: rbac.authorization.k8s.io
注意:生产环境建议结合ServiceAccount使用,并通过审计定期优化权限配置。