角色访问控制RBAC(Role-Based Access Control)的Kubernetes对象Role和ClusterRole中包含一组代表相关权限的规则。Role总是用来在某个命名空间内设置访问权限,而ClusterRole是为集群范围的资源定义访问权限。本文介绍如何自行编写Kubernetes的ClusterRole和Role。

前提条件

目前容器服务管理控制台安全管理 > 角色功能处于灰度阶段,若您无法使用该功能,请提交工单申请添加白名单。

权限策略说明

您可自行编写权限策略,或通过容器服务管理控制台创建自定义策略。

Role:命名空间维度

如果您需要在命名空间内定义角色,则应该使用Role。

下方是一个位于default命名空间的Role的YAML示例,用来授予对Pods的所有权限。

apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  name: test-role
  namespace: default
rules:
- apiGroups:
  - ""
  resources:
  - pods
  verbs:
  - create
  - delete
  - deletecollection
  - get
  - list
  - patch
  - update
  - watch

ClusterRole:集群维度

如果您需要定义集群范围的角色,则应该使用ClusterRole。

下方是一个ClusterRole的示例,用来为任一特定命名空间中的Pods授予所有权限。

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: test-clusterrole
rules:
- apiGroups:
  - ""
  resources:
  - pods
  verbs:
  - create
  - delete
  - deletecollection
  - get
  - list
  - patch
  - update
  - watch

关于Role和ClusterRole的更多信息,请参见Role和ClusterRole

创建Kubernetes自定义授权策略

说明 该步骤以为RAM用户创建自定义ClusterRole为例,与创建Role的步骤基本一致,您可结合实际需求进行操作。
  1. 登录容器服务管理控制台
  2. 在控制台左侧导航栏中,单击集群
  3. 集群列表页面中,单击目标集群名称或者目标集群右侧操作列下的详情
  4. 在集群管理页左侧导航栏中,选择安全管理 > 角色
  5. 角色页面,单击Cluster Role页签。
  6. Cluster Role页签,单击创建
  7. 创建YAML面板输入自定义策略的YAML内容,单击确定即可创建ClusterRole。
    此步骤以权限策略说明ClusterRole:集群维度的YAML为例,创建完成后,可在Cluster Role页签查看自定义权限test-clusterrole

后续步骤

关于如何授予RAM用户自定义Kubernetes授权策略,请参见配置RAM用户RBAC权限
注意 当前容器服务ACK授权管理只支持自定义ClusterRole角色与集群内RBAC权限的绑定,不支持自定义Role角色与集群内RBAC权限的绑定。