centos

centos k8s权限管理怎样做

小樊
44
2025-08-27 01:24:07
栏目: 智能运维

在CentOS上进行K8s权限管理,核心是通过**RBAC(基于角色的访问控制)**实现,步骤如下:

  1. 启用RBAC
    确保API服务器启动时添加参数--authorization-mode=RBAC

  2. 定义权限对象

    • Role/ClusterRole
      • Role:定义单个命名空间内的权限(如default命名空间内操作Pod)。
      • ClusterRole:定义集群全局权限(如访问所有命名空间的Secrets)。
    • 示例:创建一个允许读取Pod的Role:
      apiVersion: rbac.authorization.k8s.io/v1  
      kind: Role  
      metadata:  
        namespace: default  
        name: pod-reader  
      rules:  
      - apiGroups: [""]
        resources: ["pods"]
        verbs: ["get", "list", "watch"]  
      
  3. 绑定权限到用户/服务账户

    • RoleBinding:将Role绑定到特定命名空间的用户或服务账户。
      apiVersion: rbac.authorization.k8s.io/v1  
      kind: RoleBinding  
      metadata:  
        name: read-pods-binding  
        namespace: default  
      subjects:  
      - kind: User  
        name: jane  
        apiGroup: rbac.authorization.k8s.io  
      roleRef:  
        kind: Role  
        name: pod-reader  
        apiGroup: rbac.authorization.k8s.io  
      
    • ClusterRoleBinding:将ClusterRole绑定到全局用户或服务账户。
  4. 验证权限
    使用命令检查用户是否有权限执行操作:

    kubectl auth can-i <verb> <resource> --namespace <命名空间> --as <用户名>  
    # 示例:检查用户jane是否有权限在default命名空间列出Pod  
    kubectl auth can-i list pods --namespace default --as jane  
    
  5. 安全加固建议

    • 遵循最小权限原则,仅授予必要权限。
    • 定期审计权限配置,删除冗余的RoleBinding
    • 生产环境中避免使用ClusterRole*通配符权限。

参考来源

0
看了该问题的人还看了