本文档介绍如何创建自定义授权策略。下面以授予子账号查询、扩容和删除集群的权限为例进行说明。

前提条件

在创建自定义授权策略时,您需要了解授权策略语言的基本结构和语法,相关内容的详细描述请参见授权策略语言描述

背景信息

容器服务ACK提供的系统授权策略的授权粒度比较粗,如果这种粗粒度授权策略不能满足您的需要,那么您可以创建自定义授权策略。例如,您想控制对某个具体的集群的操作权限,您必须使用自定义授权策略才能满足这种细粒度要求。

在进行子账号集群RBAC授权前,您需要完成对集群管控能力的RAM授权。您可以根据需要授予子账号对于目标集群的读写策略:
  • 读策略:用于查看集群配置、kubeconfig等基本信息。
  • 写策略:包含集群伸缩、升级、删除、添加节点等集群管控能力。
在提交RBAC授权前,您需要确保目标集群已经被授予RAM只读权限,策略参考如下。
{
  "Statement": [
    {
      "Action": "cs:Get*",
      "Effect": "Allow",
      "Resource": [
        "acs:cs:*:*:cluster/<yourclusterID>"
      ]
    }
  ],
  "Version": "1"
}

当您完成RAM授权后,可参见配置子账号RBAC权限完成集群内Kubernetes资源模型访问的RBAC授权。

RAM授权操作步骤

  1. 使用具有RAM权限的账号登录RAM管理控制台
  2. 单击左侧导航栏的权限管理 > 权限策略管理,进入权限策略管理页面。
  3. 单击创建授权策略,进入新建自定义权限策略页面。
  4. 填写策略名称配置模式选择脚本配置,并在策略内容中编写您的授权策略内容。
    自定义权限策略
    {
     "Statement": [{
         "Action": [
             "cs:Get*",
             "cs:ScaleCluster",
             "cs:DeleteCluster"
         ],
         "Effect": "Allow",
         "Resource": [
             "acs:cs:*:*:cluster/集群ID"
         ]
     }],
     "Version": "1"
    }
    其中:
    • Action处填写您所要授予的权限。
      说明 所有的Action均支持通配符。
    • Resource有以下配置方式。
      • 授予单集群权限
        "Resource": [
             "acs:cs:*:*:cluster/集群ID"
         ]
      • 授予多个集群权限
        "Resource": [
             "acs:cs:*:*:cluster/集群ID",
             "acs:cs:*:*:cluster/集群ID"
         ]
      • 授予所有集群的权限
        "Resource": [
             "*"
         ]
        其中,集群ID需要替换为您要授权的真实的集群ID。
  5. 编写完毕后,单击确定
    返回权限策略管理页面,在搜索框中搜索策略名备注,可以看到您授权的自定义的策略。权限策略管理

相关参考

RAM Action和API名称的对应关系

API 名称 RAM Action 说明
AttachInstances AttachInstances 添加已有ECS实例到Kubernetes集群。
CancelClusterUpgrade CancelK8sCluster 取消升级集群。
CancelComponentUpgrade CancelComponentUpgrade 取消升级组件。
CreateCluster CreateCluster 创建Kubernetes集群。
CreateKubernetesTrigger GenerateTriggerHook 创建应用触发器。
CreateTemplate CreateTemplate 创建应用部署模板。
DeleteCluster DeleteCluster 删除集群。
DeleteClusterNodes DeleteClusterNodes 移除节点并释放ECS。
DeleteKubernetesTrigger RevokeTriggers 删除应用触发器。
DeleteTemplate V2DeleteTemplateInfo 删除应用部署模板。
DescribeAddons Queryk8sComponentsVersion 查询集群组件信息。
DescribeApiVersion GetCurrentVersions 获取API的版本。
DescribeClusterAddonsVersion Queryk8sComponentsUpdateVersion 查询集群组件版本信息。
DescribeClusterAddonUpgradeStatus QueryK8sComponentUpgradeStatus 查询集群组件升级状态。
DescribeClusterAttachScripts GetClusterJoinScript 获取手动添加节点到Kubernetes集群的脚本。
DescribeClusterDetail GetClusterInfo 查询集群实例。
DescribeClusterLogs GetClusterLogs 查看集群日志。
DescribeClusterNodes DescribeClusterNodes 查看集群节点。
DescribeClusterResources DescribeClusterResources 查看集群资源。
DescribeClusters GetClustersByUid 查询所有集群实例。
DescribeClustersV1 ListClusters 查询所有集群实例。
DescribeClusterUserKubeconfig GetUserConfig 获取集群kubeconfig。
DescribeClusterV2UserKubeconfig GetUserConfig 获取用户。
DescribeExternalAgent DescribeExternalClusterAgentDeployment 查看额外代理。
DescribeTemplates V2ListTemplates 查看应用部署模板。
DescribeUserQuota GetUserQuota 查看用户配额。
GetKubernetesTrigger GetK8sTrigger 获取应用触发器详情
GetUpgradeStatus GetK8sClusterState 查看集群升级状态。
InstallClusterAddons InstallK8sComponents 安装集群插件。
ModifyCluster ModifyCluster 修改集群信息。
ModifyClusterTags UpdateClusterTags 修改集群标签。
PauseClusterUpgrade UpgradeCluster 暂停集群升级。
PauseComponentUpgrade PauseComponentUpgrade 暂停组件升级。
ReBindSecurityGroup ReBindSecurityGroup 重新绑定安全组。
RemoveClusterNodes DeleteClusterNodes 移除集群节点。
ResumeComponentUpgrade ResumeComponentUpgrade 重新开始组件升级。
ResumeUpgradeCluster UpgradeCluster 重新开始集群升级。
ScaleCluster ScaleCluster 集群扩容。
ScaleOutCluster V2ScaleCluster 添加已有节点。
UnInstallClusterAddons UnInstallK8sComponents 卸载集群组件。
UpdateK8sClusterUserConfigExpire UpdateK8sClusterUserConfigExpire 更新用户自定义配置过期时间。
UpgradeCluster UpgradeCluster 升级集群。
UpgradeClusterAddons UpgradeK8sComponents 升级集群插件。