首页 运维编排服务 最佳实践 权限配置 OOS操作ECS分组资源的权限策略管理

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实例的分组

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

  2. 选择2台实例,在操作菜单下选择更多>实例设置>编辑标签

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

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

    image

创建子账号(用户)

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

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

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

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

创建自定义权限策略

  1. 使用阿里云主账号登录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. 分别填写策略名称备注,单击确定

为子账号(或用户组)授权

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

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

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

  4. 单击确定。单击完成

执行OOS模板

  1. 登录上文创建的子账号。

  2. 进入运维编排控制台

  3. 单击公共模板,找到ACS-ECS-BulkyRunCommand模板,单击创建执行

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

  5. 设置参数。image

  6. 单击下一步,确认,单击创建执行

阿里云首页 运维编排 相关技术圈