文档首页/ 云容器引擎 CCE/ 用户指南/ 权限/ 使用访问策略(AccessPolicy)API管理命名空间权限(Kubernetes RBAC授权)
更新时间:2025-06-24 GMT+08:00
分享

使用访问策略(AccessPolicy)API管理命名空间权限(Kubernetes RBAC授权)

在多用户的场景下,不同的用户群体可能需要特定级别的集群资源访问权限,而IAM权限不支持根据集群的资源类型进行细粒度授权,您需要在IAM对用户进行授权后,继续前往集群授予命名空间权限(Kubernetes RBAC授权),这一操作过程需要在不同的权限体系中进行切换,存在比较大的维护工作量。

CCE支持使用访问策略(AccessPolicy)API管理命名空间权限,将IAM权限和Kubernete集群权限结合,您可以通过IAM控制不同用户的Kubernetes资源权限,简化了IAM权限和Kubernetes集群权限组合管理的过程,支持多集群、多用户批量授权,减轻集群管理员对集群权限管理的负担。

该功能目前处于公测阶段,在正式环境使用前建议您先进行充分验证。

前提条件

  • 给用户或用户组授权之前,请您了解命名空间权限(Kubernetes RBAC授权)
  • 使用访问策略(AccessPolicy),需具有以下权限的IAM用户或用户组: CreateAccessPolicy、UpdateAccessPolicy、DeleteAccessPolicy、ListAccessPolicy和GetAccessPolicy。您可以了解用户组可以添加的CCE系统策略,并结合实际需求进行选择。如何为用户组授权请参见集群权限(IAM授权)

使用API配置命名空间权限

CCE中的命名空间权限是基于Kubernetes RBAC能力的授权,通过权限设置可以让不同的用户或用户组拥有操作不同Kubernetes资源的权限。具有配置权限的用户可以通过API配置访问策略。

  1. 调用以下接口创建访问策略。关于如何调用接口,请参见构造请求

    POST   /api/v3/access-policies

    请求体示例如下:

    {
        "kind": "AccessPolicy",
        "apiVersion": "v3",
        "name": "policy-test",
        "clusters": [ "*" ],
        "accessScope": {
            "namespaces": [ "default" ]
        },
        "policyType": "CCEClusterAdminPolicy",
        "principal": {
            "type": "user",
            "ids": ["id1", "id2" ]
        }
    }

    参数

    名称

    说明

    name

    名称

    访问策略名称。

    clusters[]

    集群列表

    需要添加访问策略的集群ID列表,单次最多支持授权200个集群。获取集群ID的步骤请参见如何获取接口URI中参数

    支持“*”通配符,表示为所有集群添加访问策略。

    注意:

    添加访问策略的集群状态必须正常,不存在休眠或者异常集群,否则将会导致接口下发异常。

    accessScope.namespaces[]

    命名空间

    需要添加访问策略的命名空间列表,单次最多支持授权500个命名空间。

    支持“*”通配符,表示为所有命名空间添加访问策略。

    • 指定命名空间添加访问策略时,将在该命名空间下创建RoleBinding,授予的权限将在指定命名空间下生效,创建完成后可在此命名空间下查询对应的RoleBinding。
    • 为所有命名空间添加访问策略时,将创建ClusterRoleBinding,授予的权限将在集群全局内生效。

    policyType

    权限类型

    权限类型,当前支持如下类型:

    • CCEClusterAdminPolicy:管理员权限。对全部命名空间下所有资源的读写权限。
    • CCEAdminPolicy:运维权限。对全部命名空间下大多数资源的读写权限,对节点、存储卷,命名空间和配额管理的只读权限。
    • CCEEditPolicy:开发权限。对全部或所选命名空间下多数资源的读写权限。当配置在全部命名空间时能力与运维权限一致。
    • CCEViewPolicy:只读权限。对全部或所选命名空间下大多数资源的只读权限。

    principal.type

    用户/用户组类型

    访问策略授权的用户/用户组类型,当前支持如下类型:

    • user:IAM用户
    • group:用户组
    • agency:委托账号

    principal.ids[]

    用户/用户组列表

    需要授权的IAM用户/用户组/委托账号ID列表,单次最多支持填写500个ID。

    关于获取ID的操作步骤请参见获取账号、IAM用户、项目、用户组、区域、委托的名称和ID

  2. CCE管理面会自动同步访问策略到关联集群,如果使用kubectl命令查看可以看到集群中创建了一个RoleBinding或ClusterRoleBinding。

    此同步可能存在延迟,需要数分钟时间生效。

    本文示例中为IAM用户授予default命名空间下的管理员权限,您可以在default命名空间下查询对应的RoleBinding。

    1. 查询集群中的RoleBinding。
      kubectl get rolebinding -n default

      回显如下,role_access_policy_2abf31fc-cd7a-11ef-9ed5-0255ac100047即为自动创建的RoleBinding:

      NAME                                                      ROLE                        AGE
      role_access_policy_2abf31fc-cd7a-11ef-9ed5-0255ac100047   ClusterRole/cluster-admin   27s
    2. 查看RoleBinding详情。
      kubectl get rolebinding role_access_policy_2abf31fc-cd7a-11ef-9ed5-0255ac100047 -n default -o yaml

      回显如下:

      apiVersion: rbac.authorization.k8s.io/v1
      kind: RoleBinding
      metadata:
        annotations:
          CCE.com/IAM: "true"
        creationTimestamp: "2025-03-26T07:58:24Z"
        labels:
          rbac.kubernetes.io/GeneratedByAccessPolicy: "true"
        name: role_access_policy_2abf31fc-cd7a-11ef-9ed5-0255ac100047
        namespace: default
        resourceVersion: "1086"
        uid: 7000328f-c91c-4731-b3a6-807713c29f35
      roleRef:
        apiGroup: rbac.authorization.k8s.io
        kind: ClusterRole
        name: cluster-admin
      subjects:
      - apiGroup: rbac.authorization.k8s.io
        kind: User
        name: 069fcc2116c347b89869eae3cd38ba23
      - apiGroup: rbac.authorization.k8s.io
        kind: User
        name: 7af166e21b094f659c35a9e30f67f5a2

  3. 使用新授权的 IAM用户登录CCE控制台并验证权限。IAM用户登录方法请参见IAM用户登录

    在“服务列表”中选择云容器引擎,在CCE主界面进入集群,选择命名空间,如果无法查看kube-system命名空间(假设访问策略只授权了default命名空间),则表示访问策略配置已生效。

相关文档