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 等其他身份验证方法结合使用,以增强安全性。