简化kubernetes RBAC定义的创建

问题描述 投票:0回答:2

我想创建一个新的群集角色,该角色基本上与cluster-admin相同,但用户无法执行以下操作:

1)创建,修改或删除PV2)创建,修改或删除namespace。3)禁止查看,创建,修改,删除新的rbac权限。

我该怎么做?

我正试图从cluster-admin角色中汲取灵感,但所有内容均指定为*

kubernetes yaml roles rbac
2个回答
0
投票

您需要为每个资源创建规则,如下所示

rules:
- apiGroups: [""]
  resources: ["nodes"]
  verbs: ["get", "list", "watch"]

0
投票

很遗憾,没有“负”权限,因此您可以从所有权限(带有*)开始,然后取消特定的权限。如果您不希望集合中的[[all个项目(可以用*指定),则必须枚举所有想要的项目。

您可以通过以下方式找到资源及其API groups的完整列表:

kubectl api-resources

在您的情况下,PV和名称空间在核心API组中,而RBAC资源在rbac.authorization.k8s.io API组中。因此,仅需要在这两个API组中枚举要为其授予权限的所有资源。关于所有其他API组,您只需将它们列出在单个RBAC rule中,然后将resourcesverbs设置为*


您的ClusterRole定义可能看起来像这样(但是,群集中API组和资源的确切集合可能有所不同:]

apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: my-cluster-admin rules: # Read permissions for PVs and namespaces in the core API group - apiGroups: [""] resources: [persistentvolumes, namespaces] verbs: [get, list] # Full permissions for all other resources in the core API group - apiGroups: [""] resources: [bindings, componentstatuses, configmaps, endpoints, events, limitranges, nodes, persistentvolumeclaims, pods, podtemplates, replicationcontrollers, resourcequotas, secrets, serviceaccounts, services] verbs: ['*'] # Full permissions for all API groups except "core" and "authorization" - apiGroups: [admissionregistration.k8s.io, apiextensions.k8s.io, apiregistration.k8s.io, apps, authentication.k8s.io, autoscaling, batch, certificates.k8s.io, coordination.k8s.io, crd.k8s.amazonaws.com, events.k8s.io, extensions, monitoring.coreos.com, networking.k8s.io, policy, scheduling.k8s.io, storage.k8s.io] resources: ['*'] verbs: ['*'] # Full permissions for all non-resource URLs - nonResourceURLs: ['*'] verbs: ['*']

您可以通过对kubectl api-resources的输出进行一些文本操作来生成API组和资源的列表。
© www.soinside.com 2019 - 2024. All rights reserved.