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

前提条件

在创建自定义授权策略时,您需要了解授权策略语言的基本结构和语法。更多信息,请参见授权策略语言描述

背景信息

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

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

当您完成RAM授权后,需要完成集群内Kubernetes资源模型访问的RBAC授权。具体操作,请参见配置RAM用户RBAC权限

创建自定义授权策略

  1. 使用具有RAM权限的账号登录RAM管理控制台
  2. 单击左侧导航栏的权限管理 > 权限策略管理
  3. 权限策略管理页面,单击创建权限策略
  4. 新建自定义权限策略页面,填写策略名称配置模式选择脚本配置,并在策略内容中编写您的授权策略内容。
    自定义权限策略
    {
     "Statement": [{
         "Action": [
             "cs:Get*",
             "cs:List*",
             "cs:Describe*",
             "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 cs:AttachInstances 添加已有ECS实例到Kubernetes集群。
CancelClusterUpgrade cs:CancelK8sCluster 取消升级集群。
CancelComponentUpgrade cs:CancelComponentUpgrade 取消升级组件。
CreateCluster cs:CreateCluster 创建Kubernetes集群。
CreateTriggerHook cs:CreateKubernetesTrigger 创建和修改应用触发器。
CreateTemplate cs:CreateTemplate 创建应用部署模板。
DeleteCluster cs:DeleteCluster 删除集群。
DeleteClusterNodes cs:DeleteClusterNodes 移除节点并释放ECS。
DeleteTrigger cs:RevokeTriggers 删除应用触发器。
DeleteTemplate cs:V2DeleteTemplateInfo 删除应用部署模板。
DescribeAddons cs:Queryk8sComponentsVersion 查询集群组件信息。
DescribeClusterAddonsVersion cs:Queryk8sComponentsUpdateVersion 查询集群组件版本信息。
DescribeClusterAddonUpgradeStatus cs:QueryK8sComponentUpgradeStatus 查询集群组件升级状态。
DescribeClusterAttachScripts cs:GetClusterJoinScript 获取手动添加节点到Kubernetes集群的脚本。
DescribeClusterDetail cs:GetClusterById 查询集群实例。
DescribeClusterLogs cs:GetClusterLogs 查看集群日志。
DescribeClusterNodes cs:DescribeClusterNodes 查看集群节点。
DescribeClusterResources cs:DescribeClusterResources 查看集群资源。
DescribeClusters cs:GetClustersByUidcs:GetClusters 查询所有集群实例。
DescribeClustersV1 cs:ListClusters 查询所有集群实例。
DescribeClusterUserKubeconfig cs:GetUserConfig 获取集群kubeconfig。
DescribeClusterV2UserKubeconfig cs:GetUserConfig 获取集群kubeconfig。
DescribeExternalAgent cs:DescribeExternalClusterAgentDeployment 查看注册集群的集群导入代理配置。
DescribeTemplates cs:V2ListTemplates 查看应用部署模板。
DescribeUserQuota cs:GetUserQuota 查看用户配额。
GetTrigger cs:GetK8sTrigger 获取应用触发器详情。
GetUpgradeStatus cs:GetK8sClusterState 查看集群升级状态。
InstallClusterAddons cs:InstallK8sComponents 安装集群插件。
ModifyCluster cs:ModifyCluster 修改集群信息。
ModifyClusterTags cs:UpdateClusterTags 修改集群标签。
PauseClusterUpgrade cs:UpgradeCluster 暂停集群升级。
PauseComponentUpgrade cs:PauseComponentUpgrade 暂停组件升级。
ReBindSecurityGroup cs:ReBindSecurityGroup 重新绑定安全组。
RemoveClusterNodes cs:DeleteClusterNode 移除集群节点。
ResumeComponentUpgrade cs:ResumeComponentUpgrade 重新开始组件升级。
ResumeUpgradeCluster cs:UpgradeCluster 重新开始集群升级。
ScaleOutCluster cs:ScaleCluster 扩容集群。
UnInstallClusterAddons cs:UnInstallK8sComponents 卸载集群组件。
UpdateK8sClusterUserConfigExpire cs:UpdateK8sClusterUserConfigExpire 更新用户自定义配置过期时间。
UpgradeCluster cs:UpgradeCluster 升级集群。
UpgradeClusterAddons cs:UpgradeK8sComponents 升级集群插件。
DescribeUserPermission cs:GetUserPermissions 获取RAM用户集群授权信息。
GrantPermissions cs:GrantPermission 全量更新RAM用户集群授权信息。
CreateClusterNodePool cs:CreateNodepool 创建节点池。
DeleteClusterNodepool cs:DeleteNodepool 删除节点池。
DescribeClusterNodePoolDetail cs:GetNodepoolDetail 获取节点池详细信息。
DescribeClusterNodePools cs:GetNodepools 获取节点池信息。
ModifyClusterNodePool cs:UpdateNodepool 修改节点池信息。
ScaleClusterNodePool cs:ScaleNodepool 扩缩容节点池。
MigrateCluster cs:MigrateCluster 迁移集群。