0

我想允许命名空间 A 中的 ServiceAccount 访问命名空间 B 中的资源。为此,我通过 ClusterRoleBinding 将 ServiceAccount 连接到 ClusterRole。 文档说我可以“使用 ClusterRole [1.] 定义命名空间资源的权限并在单个命名空间内授予”

但是通过查看K8s 文档,我找不到如何使用命名空间资源创建 ClusterRole 的方法。我怎样才能做到这一点?

4

2 回答 2

1

...how to create a ClusterRole with namespaced resources...

再往下读一点:

ClusterRole 可用于授予与角色相同的权限。因为 ClusterRoles 是集群范围的。您还可以使用它们来授予访问权限:

...

  • 跨所有命名空间的命名空间资源(如 Pod)

ClusterRole不会帮助您限制对单个命名空间对象的访问。但是,您可以使用RoleBinding来引用ClusterRole并限制对 RoleBinding 命名空间中的对象的访问。

于 2022-02-16T09:17:57.263 回答
0

我相信您需要创建集群角色而不是角色。例子:

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: role-grantor
rules:
- apiGroups: ["rbac.authorization.k8s.io"]
  resources: ["rolebindings"]
  verbs: ["create"]
- apiGroups: ["rbac.authorization.k8s.io"]
  resources: ["clusterroles"]
  verbs: ["bind"]
  # omit resourceNames to allow binding any ClusterRole
  resourceNames: ["admin","edit","view"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: role-grantor-binding
  namespace: user-1-namespace
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: role-grantor
subjects:
- apiGroup: rbac.authorization.k8s.io
  kind: User
  name: user-1

上面的例子来自这个链接

于 2022-02-16T09:39:09.030 回答