默认情况下,RAM用户或RAM角色没有使用云服务OpenAPI的任何权限,您需要为RAM用户或RAM角色授权才能使用容器服务ACK和容器计算服务ACS的OpenAPI,同时可以访问容器计算服务ACS的控制台查看集群。本文介绍如何为RAM用户或RAM角色授予系统权限策略和自定义权限策略。
前提条件
在创建自定义授权策略时,您需要了解授权策略语言的基本结构和语法。更多信息,请参见权限策略基本元素。
系统策略授权
系统策略授权用于指定全局资源的读写访问控制。当RAM用户或RAM角色具有阿里云账号下所有集群的运维管理权限时,建议使用系统策略进行快捷授权。
为RAM用户或RAM角色授予系统策略
阿里云账号(主账号)对账号中的资源具有完全管理权限,您也可以在RAM中创建一个RAM用户,授予AdministratorAccess权限,充当账号管理员,该管理员可以对账号下所有云资源进行管控操作。更多信息,请参见创建账号管理员。
使用RAM管理员登录RAM控制台。
在左侧导航栏,选择 。
在用户页面,单击目标RAM用户操作列的添加权限。
您也可以选中多个RAM用户,单击用户列表下方的添加权限,为RAM用户批量授权。
在新增授权面板,为RAM用户添加权限。
选择资源范围。
账号级别:权限在当前阿里云账号内生效。
资源组级别:权限在指定的资源组内生效。
重要指定资源组授权生效的前提是该云服务及资源类型已支持资源组,详情请参见支持资源组的云服务。资源组授权示例,请参见使用资源组限制RAM用户管理指定的ECS实例。
选择授权主体。
授权主体即需要添加权限的RAM用户。系统会自动选择当前的RAM用户。
选择需要授予的系统权限策略。
单击确认新增授权。
单击关闭。
自定义策略授权
容器服务ACK提供的系统授权策略的授权粒度比较粗,如果这种粗粒度授权策略不能满足您的需要,那么您可以创建自定义授权策略。例如,您想控制对某个具体的集群的操作权限,您必须使用自定义授权策略才能满足这种细粒度要求。
步骤一:创建自定义授权策略
使用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
有以下配置方式,其中,
集群ID
需要替换为您的实际集群ID。授予单集群权限
"Resource": [ "acs:cs:*:*:cluster/集群ID" ]
授予多个集群权限
"Resource": [ "acs:cs:*:*:cluster/集群ID", "acs:cs:*:*:cluster/集群ID" ]
授予所有集群的权限
"Resource": [ "*" ]
编写完成后,单击继续编辑基本信息,填写名称,然后单击确定。
返回权限策略页面,在搜索框中搜索策略名或备注,可以看到您授权的自定义策略。
步骤二:为RAM用户或RAM角色授予自定义授权策略
关于自定义授权的具体操作和系统策略授权操作方法一样,在选择权限策略时,需选择您已创建的自定义策略。具体操作,请参见为RAM用户或RAM角色授予系统策略。
使用示例
为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"
}
后续操作
在完成RAM授权后,您需要继续完成集群内Kubernetes资源访问的RBAC授权,才能对集群内部资源进行操作。具体授权,请参见为RAM用户或RAM角色授予RBAC权限。
在提交RBAC授权前,您需要确保目标集群已经被授予RAM只读权限,策略参考如下。
{ "Statement": [ { "Action": [ "cs:Get*", "cs:List*", "cs:Describe*" ], "Effect": "Allow", "Resource": [ "acs:cs:*:*:cluster/<yourclusterID>" ] } ], "Version": "1" }