了解 RBAC 许可权
IAM 服务访问角色与 IBM Cloud Kubernetes Service 集群内的 Kubernetes 基于角色的访问控制 (RBAC) 相对应。 RBAC 角色和集群角色定义了用户与集群中 Kubernetes 资源进行交互所需的一组许可权。
通过 IBM Cloud IAM,您可以通过分配用户 IAM 服务访问角色,从 IBM Cloud自动管理 RBAC。 您可能希望更深入地了解 RBAC 以定制集群中资源 (例如服务帐户) 的访问权。
- 无法为服务帐户分配 IBM Cloud IAM 角色。 可以改为直接为服务帐户分配 RBAC 角色。
- 用户必须运行
ibmcloud ks cluster config命令才能使其角色更改生效。
RBAC 角色的类型是什么?
- Kubernetes 角色 的作用域限定为特定名称空间 (例如部署或服务) 中的资源。
- Kubernetes _集群角色的_作用域可以是集群范围内的资源(例如工作节点),也可以是命名空间范围内的资源(例如 Pod),这些资源可在每个命名空间中找到。
什么是 RBAC 角色绑定和集群角色绑定?
角色绑定将 RBAC 角色或集群角色应用于特定名称空间。 使用角色绑定来应用角色时,即授予用户对特定名称空间中特定资源的访问权。 使用角色绑定来应用集群角色时,即授予用户对可在每个名称空间中找到的作用域限定为名称空间的资源(如 pod)的访问权,但仅限于访问该特定名称空间内的资源。
集群角色绑定将 RBAC 集群角色应用于集群中的所有名称空间。 使用集群角色绑定来应用集群角色时,即授予用户对集群范围资源(如工作程序节点)的访问权,或授予用户对每个名称空间中作用域限定为名称空间的资源(如 pod)的访问权。
在我的集群中,这些角色具体是什么样的?
如果您希望用户能够在集群内部与 Kubernetes 资源进行交互,则必须通过 IBM Cloud 的IAM服务访问角色,为用户分配对一个或多个命名空间的访问权限。 每位被分配了服务访问角色的用户,都会自动被分配一个相应的 RBAC 集群角色。 这些 RBAC 集群角色是预定义的,并允许用户与集群中的 Kubernetes 资源进行交互。 此外,还会创建角色绑定以将集群角色应用于特定名称空间,或创建集群角色绑定以将集群角色应用于所有名称空间。
如需进一步了解每个 RBAC 角色允许执行的操作,请参阅《 IBM Cloud 》中的“IAM 服务访问角色”参考主题。 要查看每个 RBAC 角色授予的对单个 Kubernetes 资源的许可权,请查看每个 RBAC 角色的 Kubernetes 资源许可权。
我可以创建自定义角色或集群角色吗?
如果要创建自己的定制 RBAC 策略,请确保不编辑集群中的现有 IBM 角色绑定,或者创建与现有 IBM 绑定同名的定制角色绑定。 您对 IBM提供的 RBAC 角色绑定所作的更改不会在更新时保留。
view、edit、admin 和 cluster-admin 集群角色是预定义角色,当您为用户分配相应的 IBM Cloud IAM 服务访问角色时,这些角色会自动创建。 要授予其他 Kubernetes 许可权,可以创建定制 RBAC 许可权。 自定义 RBAC 角色是作为补充存在的,不会更改或覆盖您可能拥有的任何服务访问角色中的
RBAC 角色。 请注意,要创建自定义 RBAC 权限,您必须拥有 “IAM Manager”服务访问角色,或者拥有“管理员”平台角色(该角色会授予您“cluster-admin”Kubernetes RBAC 角色)。 不过,如果您自行管理自定义的 Kubernetes RBAC角色,则其他用户无需IAM服务访问角色。
何时需要使用定制集群角色绑定和角色绑定?
您可能希望授权谁可以在集群中创建和更新 pod。 使用 Pod 安全策略 (PSP) 时,您可以使用集群自带的现有集群角色绑定,也可以自行创建。
您可能还希望将附加组件集成到集群。 例如,在群集中设置 Helm 时。
为用户、组或服务帐户创建定制 RBAC 许可权
当您分配相应的 IBM Cloud IAM 服务访问角色时,系统会自动创建 view、edit、admin 和 cluster-admin 集群角色。 需要集群访问策略的详细程度高于这些预定义许可权所允许的详细程度吗? 没问题! 您可以创建定制 RBAC 角色和集群角色。
您可以将定制 RBAC 角色和集群角色分配给个别用户,用户组或服务帐户。 为组创建绑定时,会影响添加到组中或从组中除去的任何用户。 将用户添加到组时,除了您授予用户的任何单个访问权之外,他们还会获得组的访问权。 如果从组中除去用户,那么将撤销其访问权。 请注意,您无法将服务账户添加到访问组中。
如果您想为在 Pod 中运行的容器进程(例如持续交付工具链)分配访问权限,可以使用 Kubernetes ServiceAccounts。 如需查看演示如何为Travis和 Jenkins 设置服务账户,并为这些服务账户分配自定义RBAC角色的教程,请参阅博客文章
Kubernetes ServiceAccounts 用于自动化系统。
为避免引发破坏性变更,请勿修改预定义的 view、edit、admin 和 cluster-admin 集群角色。 自定义 RBAC 角色是作为补充存在的,不会更改或覆盖您在 IBM Cloud IAM 服务访问角色中可能拥有的任何 RBAC 角色。
-
名称空间访问权:要允许用户、访问组或服务帐户访问特定名称空间中的资源,请选择下列其中一个组合:
- 创建角色,然后通过角色绑定来应用该角色。 要控制对仅在一个名称空间(如应用程序部署)中存在的唯一资源的访问,此选项非常有用。
- 创建集群角色,然后通过角色绑定来应用该角色。 要控制对一个名称空间中常规资源(如 pod)的访问,此选项非常有用。
-
集群范围的访问权:要允许用户或访问组访问集群范围的资源或访问所有名称空间中的资源,请创建集群角色,然后通过集群角色绑定来应用该角色。 要控制对未将作用域限定为名称空间的资源(如工作程序节点)的访问,或控制对集群中所有名称空间中资源(如每个名称空间中的 pod)的访问,此选项非常有用。
-
确保您拥有 所有命名空间的管理器 IAM 服务访问角色 或管理员平台角色。
-
若要为单个用户或访问组中的用户授予访问权限,请确保该用户或组已在 IBM Cloud Kubernetes Service 服务级别被分配了至少一个IAM平台访问角色。
要创建自定义 RBAC 权限,
-
创建类似于以下内容的
.yaml文件以定义role或cluster role。kind: Role apiVersion: rbac.authorization.k8s.io/v1 metadata: namespace: default name: my_role rules: - apiGroups: [""] resources: ["pods"] verbs: ["get", "watch", "list"] - apiGroups: ["apps", "extensions"] resources: ["daemonsets", "deployments"] verbs: ["get", "list", "watch", "create", "update", "patch", "delete"]了解 YAML 参数 参数 描述 kind使用 Role来授予对特定名称空间中资源的访问权。 使用ClusterRole来授予对集群范围资源(如工作程序节点)的访问权,或授予对所有名称空间中作用域限定为名称空间的资源(如 pod)的访问权。metadata.namespace仅限 kind 为 Role的情况:指定授予其访问权的 Kubernetes 名称空间。rules.apiGroups指定您希望用户能够与之交互的 Kubernetes API组,例如 "apps"、"batch"或"extensions"。 要访问 REST 路径api/v1上的核心 API 组,请将该组保留为空:[""]。rules.resources请指定您要授予访问权限的 Kubernetes 资源类型,例如 "daemonsets"、"deployments"、"events"或"ingresses"。 如果指定"nodes",那么 kind 必须为ClusterRole。rules.verbs请指定希望用户能够执行 的操作类型,例如 "get"、"list"、"describe"、"create"或"delete"。 -
在集群中创建角色或集群角色。
kubectl apply -f my_role.yaml -
验证角色或集群角色是否已创建。
- 角色:
kubectl get roles -n <namespace> ``` * 集群角色: ```sh {: pre} kubectl get clusterroles ``` -
通过创建
.yaml文件将用户绑定到角色或集群角色。 记下用于每个主体名称的唯一 URL。kind: RoleBinding apiVersion: rbac.authorization.k8s.io/v1 metadata: name: my_role_binding namespace: default subjects: - kind: User name: IAM#user1@example.com apiGroup: rbac.authorization.k8s.io - kind: Group name: team1 apiGroup: rbac.authorization.k8s.io - kind: ServiceAccount name: <service_account_name> namespace: <kubernetes_namespace> roleRef: kind: Role name: my_role apiGroup: rbac.authorization.k8s.io了解 YAML 参数 参数 描述 kind- 若要指定特定于命名空间的
Role或ClusterRole,请使用RoleBinding。 - 对于集群范围的
ClusterRoleBinding,指定ClusterRole。
apiVersion使用 rbac.authorization.k8s.io/v1。metadata.namespace- 对于类型
RoleBinding:指定被授予访问权限的 Kubernetes 命名空间。 - 对于 kind 为
ClusterRoleBinding的情况:请勿使用namespace字段。
metadata.name对角色绑定或集群角色绑定命名。 subjects.kind指定以下类型之一:
User: 将 RBAC 角色或集群角色绑定到帐户中的单个用户。Group: 将 RBAC 角色或集群角色绑定到帐户中的 IBM Cloud IAM 访问组 。ServiceAccount: 将 RBAC 角色或集群角色绑定到集群中的名称空间中的服务帐户。
subjects.nameUser:将单个用户的电子邮件地址追加到IAM#,如下所示:IAM#user@email.com.Group:指定 IBM Cloud IAM 访问组的名称。- 对于
ServiceAccount:指定服务帐户名称。
subjects.apiGroupUser或Group:使用rbac.authorization.k8s.io。- 对于
ServiceAccount:请勿包含此字段。
subjects.namespaceServiceAccountonly:指定服务账户部署到的 Kubernetes 命名空间的名称。roleRef.kind在角色 kind文件中输入与.yaml相同的值:Role或ClusterRole。roleRef.name输入角色 .yaml文件的名称。roleRef.apiGroup使用 rbac.authorization.k8s.io。 - 若要指定特定于命名空间的
-
在集群中创建角色绑定或集群角色绑定资源。
kubectl apply -f my_role_binding.yaml -
验证绑定是否已创建。
kubectl get rolebinding -n <namespace> -
(可选)要强制将相同的用户访问级别应用于其他名称空间,可以将这些角色或集群角色的角色绑定复制到其他名称空间。
- 将角色绑定从一个名称空间复制到其他名称空间。
kubectl get rolebinding <role_binding_name> -o yaml | sed 's/<namespace_1>/<namespace_2>/g' | kubectl -n <namespace_2> create -f - ``` 例如,将 `custom-role` 角色绑定从 `default` 命名空间复制到 `testns` 命名空间。 ```sh {: pre} kubectl get rolebinding custom-role -o yaml | sed 's/default/testns/g' | kubectl -n testns create -f - ``` 2. 验证角色绑定是否已复制。 如果已将 IBM Cloud IAM 访问组添加到角色绑定,那么会分别添加该组中的每个用户,而不会作为访问组标识添加。 ```sh {: pre} kubectl get rolebinding -n <namespace_2> ```
既然您已创建并绑定了定制 Kubernetes RBAC 角色或集群角色,就应该让用户进行操作。 要求用户测试根据其角色有权完成的操作,例如删除 pod。
通过聚集集群角色扩展现有许可权
可以通过聚集或组合集群角色及其他集群角色,扩展用户的现有许可权。 当您为用户分配 IBM Cloud 服务访问角色时,该用户将被添加到 相应的 Kubernetes RBAC集群角色中。 不过,您可能希望允许某些用户执行更多操作。
例如,拥有命名空间范围的 admin 集群角色的用户无法使用 kubectl top pods 命令查看该命名空间中所有Pod的指标。 您可以聚集集群角色,以便 admin 集群角色中的用户有权运行 top pods 命令。 如需了解更多信息,请参阅 Kubernetes 文档。
对于默认集群角色,我可能需要扩展哪些常见操作的权限?
请查阅 每个默认 RBAC 集群角色允许的操作 以了解用户可以执行哪些操作,然后将允许的操作与您希望用户能够执行的操作进行对比。
如果同一集群角色中的用户对于同一类型的操作遇到类似以下内容的错误,那么您可能需要扩展集群角色以包含此操作。
Error from server (Forbidden): pods.metrics.k8s.io is forbidden: User "IAM#myname@example.com" can't list resource "pods" in API group "metrics.k8s.io" in the namespace "mynamespace"
开始之前:请登录您的账户。 如果适用,请将相应的资源组设定为目标。 设置集群的上下文。
-
创建集群角色 YAML 文件。 在
labels部分中,指定要将许可权聚集到的现有集群角色。 以下示例扩展了预定义的admin集群角色,以允许用户运行kubectl top pods。 如需更多示例,请参阅 Kubernetes 文档。apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: view-pod-metrics labels: rbac.authorization.k8s.io/aggregate-to-admin: "true" rules: - apiGroups: - "metrics.k8s.io" resources: - pods verbs: - list了解 YAML 参数 参数 描述 metadata.name输入集群角色的名称。请勿 使用预定义的集群角色名称: view,edit,admin和cluster-admin。metadata.labels添加一个与您要进行聚合的集群角色相匹配的标签,格式为
rbac.authorization.k8s.io/aggregate-to-<cluster_role>: "true"。 预定义集群角色的标签如下。- IAM 管理者 服务访问角色,作用域限定为名称空间:
rbac.authorization.k8s.io/aggregate-to-admin: "true" - IAM 写程序 服务访问角色:
rbac.authorization.k8s.io/aggregate-to-edit: "true" - IAM 读者 服务访问角色:
rbac.authorization.k8s.io/aggregate-to-view: "true"
rules.apiGroups指定您希望用户能够与之交互的 Kubernetes API组,例如 "apps"、"batch"或"extensions"。 要访问 REST 路径api/v1上的核心 API 组,请将该组保留为空:[""]。rules.resources请指定您要授予访问权限的 Kubernetes 资源类型,例如 "daemonsets"、"deployments"、"events"或"ingresses"。rules.verbs请指定希望用户能够执行 的操作类型,例如 "get"、"list"、"describe"、"create"或"delete"。 - IAM 管理者 服务访问角色,作用域限定为名称空间:
-
在集群中创建集群角色。 任何与“
admin”集群角色绑定角色的用户,现在都将拥有来自“view-pod-metrics”集群角色的额外权限。kubectl apply -f <cluster_role_file.yaml> -
跟进具有
admin集群角色的用户。 要求他们刷新集群配置并测试操作,例如kubectl top pods。
检查 RBAC 角色
在 IBM Cloud Kubernetes Service 集群中验证自定义 RBAC 或同步 IAM 服务对 RBAC 角色的访问权限。
从 UI 检查 RBAC 角色
-
单击具有要检查的 RBAC 角色的集群。
-
点击“Kubernetes”仪表盘。
如果您只有专用网络集群,那么可能无法打开仪表板,除非您在 VPN 上。 请参阅 通过私有云服务端点访问集群。
-
从 集群 部分中,查看 集群角色绑定,集群角色,角色绑定和 角色。
使用 CLI 检查 RBAC 角色
-
检查用户是否已添加到 RBAC 角色。 如果用户拥有更高的权限,则不会将其添加到角色绑定中。 例如,如果用户具有集群角色并且处于集群角色绑定中,那么也不会将其添加到每个单独的名称空间角色绑定。
您必须是群集管理员,才能检查角色绑定和群集角色绑定。 群集管理员在所有命名空间中都具有“管理器”服务访问角色或“管理员”平台访问角色。
- 读取者:
kubectl get rolebinding ibm-view -o yaml -n <namespace> ``` * 写入者: ```sh {: pre} kubectl get rolebinding ibm-edit -o yaml -n <namespace> ``` * 管理者,作用域限定为名称空间: ```sh {: pre} kubectl get rolebinding ibm-operate -o yaml -n <namespace> ``` * 管理者,所有名称空间: ```sh {: pre} kubectl get clusterrolebinding ibm-admin -o yaml ```
示例输出
如果为用户 user@email.com 和访问组 team1 分配 读者 服务访问角色,然后运行 kubectl get rolebinding ibm-view -o yaml -n default,那么将获得以下示例输出。
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
creationTimestamp: 2018-05-23T14:34:24Z
name: ibm-view
namespace: default
resourceVersion: "8192510"
selfLink: /apis/rbac.authorization.k8s.io/v1/namespaces/default/rolebindings/ibm-view
uid: 63f62887-5e96-11e8-8a75-b229c11ba64a
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: view
subjects:
- apiGroup: rbac.authorization.k8s.io
kind: User
name: IAM#user@email.com
- apiGroup: rbac.authorization.k8s.io
kind: group
name: team1
Kubernetes 服务访问角色和相应的 RBAC 角色
下表列出了每个服务访问角色及其对应 RBAC 角色所授予的“Kubernetes”资源权限。
| 服务访问角色 | 相应的 RBAC 角色、绑定和作用域 | Kubernetes 资源许可权 |
|---|---|---|
| 读取者角色 | 作用域限定为一个名称空间时: view 由该名称空间中的 ibm-view 角色绑定应用的集群角色。-作用域限定为所有名称空间时: view 由集群的每个名称空间中的 ibm-view 角色绑定应用的集群角色。 您还可以在
IBM Cloud 控制台和 CLI 中查看集群。 |
-对名称空间中资源的读访问权 -对角色和角色绑定或 Kubernetes 私钥 没有读访问权-访问 Kubernetes 仪表板以查看名称空间中的资源。 |
| 写入者角色 | 当作用域限定为一个命名空间时:edit 由 ibm-edit 该命名空间中的角色绑定所应用的集群角色。
当作用域为所有命名空间时: |
|
| 管理者角色 | 作用域限定为一个名称空间时: admin 由该名称空间中的 ibm-operate 角色绑定应用的集群角色
作用域限定为所有名称空间时: |
当作用域为一个命名空间时:
|
每个 RBAC 角色的 Kubernetes 资源许可权
分配有 IBM Cloud IAM 服务访问角色的每个用户还会自动分配有相应的预定义 Kubernetes 基于角色的访问控制 (RBAC) 角色。 如果计划管理您自己的定制 Kubernetes RBAC 角色,请参阅为用户、组或服务帐户创建定制 RBAC 许可权。 有关用户名的详细信息,请参阅 IBM Cloud IAM issuer details for RBAC users。
想了解您是否具有对名称空间中的某个资源运行特定 kubectl 命令的正确许可权? 尝试 kubectl auth can-i 命令。
下表显示了每个 RBAC 角色授予的对单个 Kubernetes 资源的许可权。 权限表示具有该角色的用户可以对资源执行哪些 verbs (或操作),例如“get”、“list”、“describe”、“create”或“delete”。
| Kubernetes 资源 | view |
edit |
admin 和 cluster-admin |
|---|---|---|---|
bindings |
get,list 和 watch | get,list 和 watch | get,list,watch cluster-admin only: create,delete,update |
configmaps |
get,list 和 watch | create、delete、deletecollection、get、list、patch、update、watch |
create、delete、deletecollection、get、list、patch、update、watch |
cronjobs.batch |
get,list 和 watch | create、delete、deletecollection、get、list、patch、update、watch |
create、delete、deletecollection、get、list、patch、update、watch |
daemonsets.apps |
get,list 和 watch | create、delete、deletecollection、get、list、patch、update、watch |
create、delete、deletecollection、get、list、patch、update、watch |
daemonsets.extensions |
get,list 和 watch | create、delete、deletecollection、get、list、patch、update、watch |
create、delete、deletecollection、get、list、patch、update、watch |
deployments.apps |
get,list 和 watch | create、delete、deletecollection、get、list、patch、update、watch |
create、delete、deletecollection、get、list、patch、update、watch |
deployments.apps/rollback |
|
create、delete、deletecollection、get、list、patch、update、watch |
create、delete、deletecollection、get、list、patch、update、watch |
deployments.apps/scale |
get,list 和 watch | create、delete、deletecollection、get、list、patch、update、watch |
create、delete、deletecollection、get、list、patch、update、watch |
deployments.extensions |
get,list 和 watch | create、delete、deletecollection、get、list、patch、update、watch |
create、delete、deletecollection、get、list、patch、update、watch |
deployments.extensions/rollback |
|
create、delete、deletecollection、get、list、patch、update、watch |
create、delete、deletecollection、get、list、patch、update、watch |
deployments.extensions/scale |
get,list 和 watch | create、delete、deletecollection、get、list、patch、update、watch |
create、delete、deletecollection、get、list、patch、update、watch |
endpoints |
get,list 和 watch | create、delete、deletecollection、get、list、patch、update、watch |
create、delete、deletecollection、get、list、patch、update、watch |
events |
get,list 和 watch | get,list 和 watch | get,list 和 watch |
horizontalpodautoscalers.autoscaling |
get,list 和 watch | create、delete、deletecollection、get、list、patch、update、watch |
create、delete、deletecollection、get、list、patch、update、watch |
ingresses.extensions |
get,list 和 watch | create、delete、deletecollection、get、list、patch、update、watch |
create、delete、deletecollection、get、list、patch、update、watch |
jobs.batch |
get,list 和 watch | create、delete、deletecollection、get、list、patch、update、watch |
create、delete、deletecollection、get、list、patch、update、watch |
limitranges |
get,list 和 watch | get,list 和 watch | get,list 和 watch |
localsubjectaccessreviews |
|
|
create |
namespaces |
get,list 和 watch | get,list 和 watch | get,list,只监视 cluster-admin: create,delete |
namespaces/status |
get,list 和 watch | get,list 和 watch | get,list 和 watch |
networkpolicies |
get,list 和 watch | create、delete、deletecollection、get、list、patch、update、watch |
create、delete、deletecollection、get、list、patch、update、watch |
networkpolicies.extensions |
get,list 和 watch | create、delete、deletecollection、get、list、patch、update、watch |
create、delete、deletecollection、get、list、patch、update、watch |
node |
无 | 无 | admin 作用域限定为名称空间: 无
|
persistentvolume |
无 | 无 | create、delete、deletecollection、get、list、patch、update、watch |
persistentvolumeclaims |
get,list 和 watch | create、delete、deletecollection、get、list、patch、update、watch |
create、delete、deletecollection、get、list、patch、update、watch |
poddisruptionbudgets.policy |
get,list 和 watch | create、delete、deletecollection、get、list、patch、update、watch |
create、delete、deletecollection、get、list、patch、update、watch |
pods |
get,list 和 watch | create、delete、deletecollection、get、list、patch、update、watch |
create、delete、deletecollection、get、list、top、patch、update、watch |
pods/attach |
|
create、delete、deletecollection、get、list、patch、update、watch |
create、delete、deletecollection、get、list、patch、update、watch |
pods/exec |
|
create、delete、deletecollection、get、list、patch、update、watch |
create、delete、deletecollection、get、list、patch、update、watch |
pods/log |
get,list 和 watch | get,list 和 watch | get,list 和 watch |
pods/portforward |
|
create、delete、deletecollection、get、list、patch、update、watch |
create、delete、deletecollection、get、list、patch、update、watch |
pods/proxy |
|
create、delete、deletecollection、get、list、patch、update、watch |
create、delete、deletecollection、get、list、patch、update、watch |
pods/status |
get,list 和 watch | get,list 和 watch | get,list 和 watch |
replicasets.apps |
get,list 和 watch | create、delete、deletecollection、get、list、patch、update、watch |
create、delete、deletecollection、get、list、patch、update、watch |
replicasets.apps/scale |
get,list 和 watch | create、delete、deletecollection、get、list、patch、update、watch |
create、delete、deletecollection、get、list、patch、update、watch |
replicasets.extensions |
get,list 和 watch | create、delete、deletecollection、get、list、patch、update、watch |
create、delete、deletecollection、get、list、patch、update、watch |
replicasets.extensions/scale |
get,list 和 watch | create、delete、deletecollection、get、list、patch、update、watch |
create、delete、deletecollection、get、list、patch、update、watch |
replicationcontrollers |
get,list 和 watch | create、delete、deletecollection、get、list、patch、update、watch |
create、delete、deletecollection、get、list、patch、update、watch |
replicationcontrollers/scale |
get,list 和 watch | cr}eate、delete、deletecollection、get、list、patch、update、watch |
create、delete、deletecollection、get、list、patch、update、watch |
replicationcontrollers/status |
get,list 和 watch | get,list 和 watch | get,list 和 watch |
replicationcontrollers.extensions/scale |
get,list 和 watch | create、delete、deletecollection、get、list、patch、update、watch |
create、delete、deletecollection、get、list、patch、update、watch |
resourcequotas |
get,list 和 watch | get,list 和 watch | get,list 和 watch |
resourcequotas/status |
get,list 和 watch | get,list 和 watch | get,list 和 watch |
rolebindings |
|
|
create、delete、deletecollection、get、list、patch、update、watch |
roles |
|
|
create、delete、deletecollection、get、list、patch、update、watch |
secrets |
|
create、delete、deletecollection、get、list、patch、update、watch |
create、delete、deletecollection、get、list、patch、update、watch |
serviceaccounts |
get,list 和 watch | create、delete、deletecollection、get、list、patch、update、watch、impersonate |
create、delete、deletecollection、get、list、patch、update、watch、impersonate |
services |
get,list 和 watch | create、delete、deletecollection、get、list、patch、update、watch |
create、delete、deletecollection、get、list、patch、update、watch |
services/proxy |
|
create、delete、deletecollection、get、list、patch、update、watch |
create、delete、deletecollection、get、list、patch、update、watch |
statefulsets.apps |
get,list 和 watch | create、delete、deletecollection、get、list、patch、update、watch |
create、delete、deletecollection、get、list、patch、update、watch |
statefulsets.apps/scale |
get,list 和 watch | create、delete、deletecollection、get、list、patch、update、watch |
create、delete、deletecollection、get、list、patch、update、watch |
IBM Cloud 针对 RBAC 用户的 IAM 签发者详细信息
在 IAM 中具有 IBM Cloud Kubernetes Service 服务访问角色的用户将获得 RBAC 中相应的用户角色。 RBAC 用户详细信息包括唯一的签发人 ID、主题标识符要求和 Kubernetes 用户名。 这些细节因 Kubernetes 版本的集群而异。 从先前版本更新集群时,将自动更新详细信息。 RBAC 用户名以 IAM# 作为前缀。 有关 OpenID 身份验证工作原理的更多信息,请参阅
Kubernetes 文档。
如果您在依赖于用户详细信息向 Kubernetes API 服务器进行认证的集群中构建自动化工具,那么可以使用此信息。
| 版本 | 签发者 | 声明 | 大小写 * |
|---|---|---|---|
| Kubernetes | https://iam.cloud.ibm.com/identity |
realmed_sub_<account_ID> |
小写的 |
*: 小写的示例为 user.name@company.com。 骆驼案例的一个示例是 User.Name@company.com。