Kubernetes角色应该授予对所有资源的访问权限,但它忽略了一些资源



角色namespace-limited应具有对命名空间内(指定API组的(所有资源的完全访问权限。我的角色清单如下:

kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: namespace-limited
namespace: restricted-xample
rules:
- apiGroups:
- core
- apps
- batch
- networking.k8s.io
resources: ["*"] # asterisk to grant access to all resources of the specified api groups
verbs: ["*"]

我使用RoleBinding将角色关联到ServiceAccount,但不幸的是,此ServiceAccount无法访问PodServiceSecretConfigMapEndpoint资源。这些资源都是coreAPI组的一部分。所有其他常见的Workload都可以工作。为什么?

核心组,也称为遗留组,位于REST路径/api/v1并使用apiVersion: v1

您需要为核心API组使用""

apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
namespace: restricted-xample
name: namespace-limited
rules:
- apiGroups: ["", "apps", "batch", "networking.k8s.io"] # "" indicates the core API group
resources: ["*"]
verbs: ["*"]

要测试服务帐户的权限,请使用以下命令

kubectl auth can-i get pods --as=system:serviceaccount:restricted-xample:default -n restricted-xample 
kubectl auth can-i get secrets --as=system:serviceaccount:restricted-xample:default -n restricted-xample 
kubectl auth can-i get configmaps --as=system:serviceaccount:restricted-xample:default -n restricted-xample
kubectl auth can-i get endpoints --as=system:serviceaccount:restricted-xample:default -n restricted-xample 

刚刚发现,当我省略核心关键字时,它是有效的,就像本例中一样。以下角色清单有效:

kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: namespace-limited
namespace: restricted-xample
rules:
- apiGroups: ["", "apps", "batch", "networking.k8s.io"]
resources: ["*"]
verbs: ["*"]

但是,如果我指定coreAPI组,为什么它不起作用对我来说是个谜

相关内容

  • 没有找到相关文章

最新更新