RBAC(基于角色的访问控制)是 Kubernetes 用来管理集群内权限的一种方法。它允许管理员定义角色并将其分配给用户或组,控制他们可以对资源执行哪些操作。
下面的代码片段演示了如何在 Kubernetes 中创建角色和角色绑定,它们是 RBAC 的重要组成部分。
[代码清单]
# Define a role that allows reading pods in a specific namespace
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
namespace: default
name: pod-reader
rules:
- apiGroups: [""]
resources: ["pods"]
verbs: ["get", "list", "watch"]
# Bind the role to a user
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: read-pods-binding
namespace: default
subjects:
- kind: User
name: example-user
apiGroup: rbac.authorization.k8s.io
roleRef:
kind: Role
name: pod-reader
apiGroup: rbac.authorization.k8s.io
[执行结果]
YAML 文件不会直接生成输出,但应用该文件将在指定的命名空间中创建角色和角色绑定。
在本例中,我们首先定义了一个名为 pod-reader 的角色,该角色授予读取默认命名空间中 pod 的权限。规则部分指定了资源(pod)和允许的操作(get、list、watch)。接下来,我们创建一个名为 read-pods-binding 的角色绑定,将 pod-reader 角色与名为 example-user 的用户关联起来。这意味着 example-user 现在可以对默认命名空间中的 pod 执行指定的操作。
了解 RBAC 对于维护安全性和确保用户只拥有执行任务所需的权限至关重要。
[小知识]
RBAC 是 Kubernetes 的关键安全功能之一,可实现细粒度访问控制。
定期审查角色和绑定以确保它们符合最小特权原则至关重要。
RBAC 可与 OpenID Connect 或 LDAP 等其他身份验证方法结合使用,以增强安全性。