在Kubernetes中,确保最小权限的核心方法是使用RBAC(基于角色的访问控制)。通过定义Role/RoleBinding(命名空间级别)或ClusterRole/ClusterRoleBinding(集群级别),明确指定用户或服务账户(ServiceAccount)对特定资源(如Pod、Service)的操作权限(如get、list、create)。
延伸知识点:RBAC中的Role与ClusterRole
- Role:作用于单个命名空间,例如创建一个允许读取Pod的Role:
apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: namespace: default name: pod-reader rules: - apiGroups: [""] resources: ["pods"] verbs: ["get", "list"]
- ClusterRole:作用于集群范围(如节点、持久化卷),或跨命名空间的资源(如跨所有命名空间的Pod读取权限)。
- 绑定:通过RoleBinding将Role与ServiceAccount关联,例如:
apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: read-pods namespace: default subjects: - kind: ServiceAccount name: my-app roleRef: kind: Role name: pod-reader
实际使用中需严格遵循最小权限原则,避免赋予*通配符权限,并定期审计权限分配。