Kubernetes中用户或角色的命名空间

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

我知道角色用于向用户或服务帐户授予权限以在特定名称空间中执行操作。典型的角色定义可能是这样的

kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  namespace: mynamespace
  name: my-role
rules:
- apiGroups: [""]
  resources: ["pods"]
  verbs: ["get", "watch", "list"]

但是在服务帐户的定义中,我们也可以看到名称空间字段

apiVersion: v1
kind: ServiceAccount
metadata:
  name: my-serviceac
  namespace: mynamespace

我的问题是:1.名称空间范围是否应用于用户/服务帐户或角色?2.如果服务帐户和角色中的名称空间不同,该怎么办

角色绑定定义以供参考

kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
  name: my-rolingbinding
  namespace: mynamespace
subjects:
- kind: ServiceAccount
  name: my-serviceac
  namespace: mynamespace
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: Role
  name: my-role
kubernetes namespaces rbac
2个回答
0
投票
  1. 名称空间应用于角色和服务帐户以及角色绑定的所有三个。
  2. 名称空间的角色和服务帐户是否不同并不重要。您仍然可以创建角色绑定,但是服务帐户只能访问角色中定义的名称空间中的资源,以执行动词。

0
投票

服务帐户作为角色资源是命名空间范围的:这允许根据角色]将特定操作限制为给定的经过身份验证的用户(在本示例中为服务帐户

由于我们正在谈论RBAC,您需要第三个资源将特定的Role资源绑定到给定的Service Account:这里是Role Binding,另一个命名空间范围的资源,将这些策略映射到给定的用户集。

由于这三个组件都是严格的名称空间,因此它们必须都位于同一名称空间中;否则,引用服务帐户将无效。

© www.soinside.com 2019 - 2024. All rights reserved.