默认情况下,RAM用户或RAM角色没有使用云服务OpenAPI的任何权限,您需要为RAM用户或RAM角色授予系统策略权限或自定义权限策略权限后,才能使用容器服务ACK的OpenAPI。本文介绍如何为RAM用户或RAM角色进行集群以及云资源维度的授权。
使用系统策略授权
系统策略授权用于指定全局资源的读写访问控制。当RAM用户或RAM角色需要阿里云账号下所有集群的运维管理权限时,建议使用系统策略进行快捷授权。容器服务ACK的常用系统策略如下表所示:
系统策略中Full级别的权限为高风险权限,请谨慎授予,以免造成安全风险。
阿里云账号(主账号)对账号中的资源具有完全管理权限,您也可以在RAM中创建一个RAM用户,授予AdministratorAccess权限,充当账号管理员,该管理员可以对账号下所有云资源进行管控操作。更多信息,请参见创建RAM用户作为账号管理员。
使用RAM管理员登录RAM控制台。
在左侧导航栏,选择 。
在用户页面,单击目标RAM用户操作列的添加权限。
您也可以选中多个RAM用户,单击用户列表下方的添加权限,为RAM用户批量授权。
在新增授权面板,为RAM用户添加权限。
选择资源范围。
账号级别:权限在当前阿里云账号内生效。
资源组级别:权限在指定的资源组内生效。
重要指定资源组授权生效的前提是该云服务及资源类型已支持资源组,详情请参见支持资源组的云服务。资源组授权示例,请参见使用资源组限制RAM用户管理指定的ECS实例。
选择授权主体。
授权主体即需要添加权限的RAM用户。系统会自动选择当前的RAM用户。
选择需要授予的系统权限策略。
单击确认新增授权。
单击关闭。
使用自定义策略授权
自定义策略授权用于对目标RAM用户或RAM角色实现细粒度的云资源访问控制。不同的云资源可能存在不同的安全性和访问控制要求,如果您需要对用户进行精细化的云资源访问控制,例如,限制某用户对某个具体集群的操作权限,您可以创建自定义授权策略满足这种细粒度要求。另外,如果目标RAM用户或RAM角色有基于SDK的二次开发需求,还可实现API级别的权限控制。关于RAM支持的授权项,请参见授权信息。
在创建自定义授权策略时,您需要了解授权策略语言的基本结构和语法。更多信息,请参见权限策略基本元素。
步骤一:创建自定义授权策略
使用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角色授予自定义权限策略
关于自定义授权的具体操作和系统策略授权操作方法一样,当选择权限策略时,需选择您已创建的自定义策略。具体操作,请参见使用系统策略授权。
自定义策略授权示例
示例1:授予指定集群的只读权限
{
"Statement": [
{
"Action": [
"cs:Get*",
"cs:List*",
"cs:Describe*"
],
"Effect": "Allow",
"Resource": [
"acs:cs:*:*:cluster/<yourclusterID>" # 目标集群ID。
]
}
],
"Version": "1"
}
示例2:授予指定OSS Bucket的读取权限
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": [
"oss:ListBuckets",
"oss:GetBucketStat",
"oss:GetBucketInfo",
"oss:GetBucketTagging",
"oss:GetBucketAcl"
],
"Resource": "acs:oss:*:*:*"
},
{
"Effect": "Allow",
"Action": [
"oss:ListObjects",
"oss:GetBucketAcl"
],
"Resource": "acs:oss:*:*:myphotos"
},
{
"Effect": "Allow",
"Action": [
"oss:GetObject",
"oss:GetObjectAcl"
],
"Resource": "acs:oss:*:*:myphotos/*"
}
]
}
示例3:授权不支持限制集群的OpenAPI的操作权限
部分OpenAPI不支持限制集群的授权(例如,DescribeEvents),如果您需要给RAM用户或RAM角色授权这些OpenAPI不支持限制集群的OpenAPI的操作权限,请勿在Resource中限定集群ID。修改前后的RAM权限策略对比如下:
修改前RAM权限策略 | 修改后RAM权限策略 |
|
|
后续操作
RAM授权后,您需要继续完成集群内Kubernetes资源访问的RBAC授权,才能对集群内部资源进行操作。具体授权,请参见为RAM用户或RAM角色授予RBAC权限。
如需提升ACK集群内应用访问其他云服务的安全性,您可以通过RRSA配置ServiceAccount的RAM权限实现Pod权限隔离,请参见通过RRSA配置ServiceAccount的RAM权限实现Pod权限隔离。
如需精细化RAM授权,请参见通过标签实现精细化权限管理、手动收敛ACK托管版集群的Worker RAM角色权限。
授权过程问题,请参见授权管理FAQ。