本文档介绍如何创建自定义授权策略。下面以授予RAM用户或RAM角色(即子账号)查询、扩容和删除集群的权限为例进行说明。
前提条件
在创建自定义授权策略时,您需要了解授权策略语言的基本结构和语法。更多信息,请参见权限策略基本元素。
背景信息
容器服务ACK提供的系统授权策略的授权粒度比较粗,如果这种粗粒度授权策略不能满足您的需要,那么您可以创建自定义授权策略。例如,您想控制对某个具体的集群的操作权限,您必须使用自定义授权策略才能满足这种细粒度要求。
在进行RAM用户或RAM角色的集群RBAC授权前,您需要完成对集群管控能力的RAM授权。您可以根据需要授予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用户或RAM角色RBAC权限。
创建自定义授权策略
使用具有RAM权限的账号登录RAM管理控制台。
单击左侧导航栏的 。
在权限策略页面,单击创建权限策略。
在创建权限策略页面,单击脚本编辑页签。在策略文档中编写您的授权策略内容。
{ "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。
编写完成后,单击继续编辑基本信息,填写名称,然后单击确定。
返回权限策略页面,在搜索框中搜索策略名或备注,可以看到您授权的自定义的策略。
相关参考
为RAM用户或RAM角色授权不支持限制集群的OpenAPI的操作权限
部分OpenAPI不支持限制集群的授权(例如,DescribeEvents),若您需要给RAM用户或RAM角色授权这些OpenAPI不支持限制集群的OpenAPI的操作权限,请勿在Resource中限定集群ID。
例如,当前RAM权限策略如下:
{
"Statement": [
{
"Action": [
"cs:Get*",
"cs:List*",
"cs:Describe*"
],
"Effect": "Allow",
"Resource": [
"acs:cs:*:*:cluster/c2e63856bcd714197****"
]
}
],
"Version": "1"
}
若您需要授权不支持限制集群的OpenAPI DescribeEvents ,其对应的RAM action为cs:DescribeEvents
,修改后的RAM权限策略如下所示:
{
"Statement": [
{
"Action": [
"cs:DescribeEvents"
],
"Effect": "Allow",
"Resource": [
"*"
]
},
{
"Action": [
"cs:Get*",
"cs:List*",
"cs:Describe*"
],
"Effect": "Allow",
"Resource": [
"acs:cs:*:*:cluster/c2e63856bcd714197****"
]
}
],
"Version": "1"
}