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

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

场景介绍

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

权限策略说明

为满足上述场景,通过OOS操作ECS资源的权限策略应从以下两方面进行划分:OOS资源操作和ECS资源操作。

  • OOS涉及的权限策略:包括对模板的执行权限、对执行的查询权限。

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

说明

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

操作步骤

步骤一:为ECS实例添加标签

  1. 登录ECS管理控制台

  2. 在左侧导航栏,选择实例与镜像 > 实例

  3. 在顶部菜单栏处,选择目标ECS实例所在地域。image.png

  4. 找到待操作的ECS实例,在对应操作列下,选择screenshot_2025-01-14_17-23-55 > 实例设置 > 编辑标签

  5. 编辑标签页面,输入标签键标签值,然后单击确认

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

    biaoqian-zh

步骤二:创建RAM用户并授权

  1. 登录RAM控制台,创建RAM用户(例如subUser1ForOOS)。

    需要注意的参数项如下,具体操作,请参见创建RAM用户

    RAM

    配置项

    说明

    登录名称

    待创建RAM用户的账户名称。格式为英文字母、数字、._-,最多包含64个字符。

    访问方式

    选中控制台访问方式,便于用户使用账号密码访问阿里云控制台。

    设置密码

    选中自定义密码设置方式,并设置具体密码,便于用户访问阿里云控制台。

  2. 创建自定义权限策略。

    选择权限管理 > 权限策略 > 创建权限策略后,分别创建OOS自定义策略和ECS自定义策略。具体操作,请参见创建自定义权限策略

    说明

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

    • 管理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"
      }            
  3. RAM用户授权。

    选择权限管理 > 授权 > 新增授权后,为新创建的RAM用户分别授予OOS自定义权限策略和ECS自定义权限策略。具体操作,请参见RAM用户授权

    授权

步骤三:执行OOS模板

  1. 通过新创建的RAM用户登录系统运维管理控制台

  2. 在左侧导航栏,选择自动化任务 > 公共任务模板

  3. 公共任务模板页面,搜索ACS-ECS-BulkyRunCommand模板,然后单击创建执行

    image

  4. 基础信息阶段,确认模板信息,单击下一步:设置参数image

  5. 设置参数阶段,根据页面提示配置相关参数,单击下一步:确定

    其中,目标实例选择指定实例标签,并输入ECS实例设置的标签键标签值

    renwu

  6. 确认设置的相关信息,单击创建