OOS操作ECS分组资源的权限策略管理
阿里云账号分为主账号(用户) 和子账号(用户)两类,主账号为注册阿里云时的账号,其权限为root,出于安全考虑,建议实际操作时采用子账号。而操作员工的职责不同,不同子账号需要的权限也不同。此时,子账号权限策略的有效管理就很重要。本文将介绍下,当某员工通过子账号,使用运维编排服务(OOS)执行某模板,来完成一些例行运维任务时,如何既使子账号顺利完成相应操作,又最大程度保障账号的安全。
场景介绍
某公司账号下购买了若干台ECS实例,其中2台被打上标签TagKey:TagValue进行了分组,某员工甲被分配的子账号为subUser1ForOOS,甲定期通过该账号在OOS中执行一个模板T,模板执行的任务是对标签TagKey:TagValue分组下的ECS实例批量执行Shell指令。即该员工具有对模板T的只读和执行权限,以及有模板任务涉及API(如RunCommand)的操作权限,且可操作的API仅对标签TagKey:TagValue分组下的实例有效。
解决方案
为满足上述场景,权限管理要分两方面,OOS资源操作和ECS资源操作:
OOS方面的权限策略包括对模板的执行权限、对执行的查询权限。
ECS方面权限策略为对标签TagKey:TagValue下实例的操作权限,且操作权限仅限于模板中涉及的API。
以上的权限策略成功创建后,将其授权给员工甲使用的RAM子用户即可(或具有员工甲相同职责的用户组)。
操作步骤
ECS实例的分组
创建子账号(用户)
创建自定义权限策略
为子账号授权
子账号执行OOS模板
ECS实例的分组
登录云服务器管理控制台。
选择2台实例,在操作菜单下选择更多>实例设置>编辑标签。
单击新建标签,输入标签键和标签值,单击确定。
本文中标签键设为TagKey,标签值设为TagValue。
创建子账号(用户)
使用阿里云主账号(或管理员账号)登录RAM控制台。
在左侧导航栏的身份管理菜单下,单击用户>新建用户。
输入登录名称及显示名称。
勾选访问控制台,单击自定义登录密码并填写要设置的子账号密码。单击确定。
创建自定义权限策略
使用阿里云主账号登录RAM控制台。
在左侧导航栏的权限管理菜单下,单击权限策略>创建权限策略。
分别创建OOS管理策略和ECS管理策略,策略内容如下:
说明需将策略中的$AliyunMasterAccountID、$TagKey、$TagValue、$RegionID修改为您所使用的阿里云主账号、ECS设置的tag以及使用的地域。
OOS管理策略:
{ "Statement": [ { "Action": [ "oos:StartExecution", "oos:List*", "oos:Get*" ], "Resource": [ "acs:oos:$RegionID:$AliyunMasterAccountID:template/*", "acs:oos:$RegionID:$AliyunMasterAccountID:execution/*" ], "Effect": "Allow" } ], "Version": "1" }
ECS管理策略:
{ "Statement": [ { "Effect": "Allow", "Action": [ "ecs:DescribeInstances", "ecs:RebootInstance" ], "Resource": "acs:ecs:$RegionID:$AliyunMasterAccountID:instance/*", "Condition": { "StringEquals": { "ecs:tag/$TagKey": [ "$TagValue" ] } } }, { "Effect": "Allow", "Action": [ "ecs:DescribeCloudAssistantStatus", "ecs:InstallCloudAssistant" ], "Resource": "acs:ecs:*:$AliyunMasterAccountID:instance/*", "Condition": { "StringEquals": { "ecs:tag/$TagKey": [ "$TagValue" ] } } }, { "Action": "ecs:DescribeTagKeys", "Effect": "Allow", "Resource": "*" }, { "Action": "ecs:DescribeTags", "Effect": "Allow", "Resource": "*" }, { "Effect": "Deny", "Action": [ "ecs:DeleteTags", "ecs:UntagResources", "ecs:CreateTags", "ecs:TagResources" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "ecs:RunCommand" ], "Resource": "acs:ecs:*:$AliyunMasterAccountID:instance/*", "Condition": { "StringEquals": { "ecs:tag/$TagKey": [ "$TagValue" ] } } }, { "Action": [ "ecs:RunCommand" ], "Resource": [ "acs:ecs:*:$AliyunMasterAccountID:command/*" ], "Effect": "Allow" }, { "Action": [ "ecs:DescribeInvocations", "ecs:DescribeInvocationResults" ], "Resource": [ "*" ], "Effect": "Allow" } ], "Version": "1" }
分别填写策略名称和备注,单击确定。
为子账号(或用户组)授权
使用阿里云主账号(或管理员账号)登录RAM控制台。
在左侧导航栏的权限管理菜单下,单击授权。单击新增授权。
在被授权主体中输入子账号名称(或用户组名称)并选中,在选择权限中选择自定义权限策略,在左侧权限策略名称列表下,单击选择需要授予给子账号(或用户组)的权限策略。
单击确定。单击完成。
执行OOS模板
登录上文创建的子账号。
进入运维编排控制台。
单击公共模板,找到ACS-ECS-BulkyRunCommand模板,单击创建执行。
单击下一步,设置参数。
设置参数。
单击下一步,确认,单击创建执行。