OOS操作ECS分组资源的权限策略管理

当您的企业存在多用户协同访问资源的场景时,您可以创建多个RAM用户(子账号)并按需为其分配最小权限,避免多用户共享阿里云账号(主账号)密码或访问密钥(AccessKey),从而降低企业的安全风险。本文介绍如何通过RAM用户执行OOS模板。

场景介绍

某公司账号下购买了若干台ECS实例,其中2台被打上标签TagKey:TagValue进行了分组,某员工甲被分配的RAM用户为subUser1ForOOS,甲定期通过该账号在OOS中执行一个模板T,模板执行的任务是对标签TagKey:TagValue分组下的ECS实例批量执行Shell指令。即该员工具有对模板T的只读和执行权限,以及有模板任务涉及API(如RunCommand)的操作权限,且可操作的API仅对标签TagKey:TagValue分组下的实例有效。

解决方案

为满足上述场景,权限管理要分两方面,OOS资源操作和ECS资源操作:

  • OOS方面的权限策略包括对模板的执行权限、对执行的查询权限。

  • ECS方面权限策略为对标签TagKey:TagValue下实例的操作权限,且操作权限仅限于模板中涉及的API。

以上的权限策略成功创建后,将其授权给员工甲使用的RAM用户即可(或具有员工甲相同职责的用户组)。

操作步骤

  1. ECS实例的分组

  2. 创建RAM用户

  3. 创建自定义权限策略

  4. 为RAM用户授权

  5. RAM用户执行OOS模板

ECS实例的分组

  1. 登录云服务器管理控制台

  2. 选择2台实例,在操作菜单下选择竖着的三点 > 实例设置 > 编辑标签

    image

  3. 单击新建标签,输入标签键标签值,单击确定

    本文中标签键设为TagKey,标签值设为TagValue。

    image

创建RAM用户

  1. 使用阿里云账号或RAM管理员登录RAM控制台

  2. 在左侧导航栏的身份管理 > 用户菜单下,单击创建用户image

  3. 输入登录名称显示名称image

  4. 勾选访问台控制,单击自定义密码并填写要设置的子账号密码。单击确定image

创建自定义权限策略

  1. 使用阿里云账号或RAM管理员登录RAM控制台

  2. 在左侧导航栏的权限管理菜单下,单击权限策略>创建权限策略

  3. 分别创建OOS管理策略和ECS管理策略,策略内容如下:

    说明

    需将策略中的$AliyunMasterAccountID、$TagKey、$TagValue、$RegionID修改为您所使用的阿里云账号、ECS设置的tag以及使用的地域。

    1. OOS管理策略:

      { 
      "Statement": [
          {
              "Action": [
                  "oos:StartExecution",
                  "oos:List*",
                  "oos:Get*"
              ],
              "Resource": [
                  "acs:oos:$RegionID:$AliyunMasterAccountID:template/*",
                  "acs:oos:$RegionID:$AliyunMasterAccountID:execution/*"
              ],
              "Effect": "Allow"
          }
      ],
      "Version": "1"
      }
    2. 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"
      }            
  4. 分别填写策略名称备注,单击确定

为RAM用户或用户组授权

  1. 使用阿里云账号或RAM管理员登录RAM控制台

  2. 在左侧导航栏的权限管理 > 授权菜单下,单击新增授权

  3. 授权主体中输入RAM用户名称或用户组名称并选中,在权限策略中选择自定义策略,在左侧权限策略名称列表下,单击选择需要授予给RAM用户或用户组的权限策略。 image

  4. 单击确认新增授权

执行OOS模板

  1. 登录上文创建的RAM用户。

  2. 进入系统运维管理控制台

  3. 自动化任务 > 公共任务模板,找到ACS-ECS-BulkyRunCommand模板,单击创建执行

    image

  4. 单击下一步:设置参数image

  5. 设置参数,单击下一步:确定image

  6. 单击创建image