假设你需要为一个用户在特定命名空间中分配只读权限。
创建角色:
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
namespace: mynamespace
name: read-only
rules:
- apiGroups: [""]
resources: ["pods", "pods/log"]
verbs: ["get", "list", "watch"]
这个角色 read-only
允许用户在 mynamespace
命名空间中对 Pod 和 Pod 日志进行读取操作。
创建角色绑定:
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: read-only-binding
namespace: mynamespace
subjects:
- kind: User
name: username
apiGroup: rbac.authorization.k8s.io
roleRef:
kind: Role
name: read-only
apiGroup: rbac.authorization.k8s.io
这个 RoleBinding
将 read-only
角色绑定到用户 username
,从而让该用户在 mynamespace
命名空间中拥有只读权限。
假设你需要创建一个集群级别的管理员角色,该角色具有对所有资源的完全
访问权限。
创建集群角色(ClusterRole):
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: super-admin
rules:
- apiGroups: ["*"]
resources: ["*"]
verbs: ["*"]
这个 super-admin
集群角色提供对所有 API 组(apiGroups
)、所有资源(resources
)的所有操作(verbs
)的权限。
创建集群角色绑定(ClusterRoleBinding):
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: super-admin-binding
subjects:
- kind: User
name: adminuser
apiGroup: rbac.authorization.k8s.io
roleRef:
kind: ClusterRole
name: super-admin
apiGroup: rbac.authorization.k8s.io
这个 ClusterRoleBinding
将 super-admin
集群角色绑定到用户 adminuser
,从而让该用户拥有对整个 Kubernetes 集群的完全访问权限。
基于角色的访问控制(RBAC)是 Kubernetes 中管理权限的有效方法。通过精心设计的角色和角色绑定,可以实现精确的权限控制,同时确保安全性和合规性。重要的是要定期审查和更新 RBAC 配置,以反映变化的需求和最佳实践。