j9九游会登录/ 弹性伸缩 as/ 最佳实践/ 使用标签鉴权精细化管理弹性伸缩
更新时间:2025-11-27 gmt 08:00

使用标签鉴权精细化管理弹性伸缩-j9九游会登录

背景

通过标签和访问控制iam结合,并将标签作为权限策略的匹配条件,您可以实现对弹性伸缩的精细化管理。

  • 标签是云资源的标识,可以帮助您从不同维度对具有相同特征的云资源进行分类、搜索和聚合。
  • iam提供权限管理能力,可基于权限策略,管理用户身份,控制云资源的访问和操作。更多信息,请参见什么iam

本文为您介绍如何通过标签鉴权控制iam用户的权限,实现不同用户能够拥有不同的访问和控制权限,提高管理效率,同时降低信息泄露风险。

示例场景

假设已创建2个伸缩组,且各伸缩组标签(tag)包含项目维度,即team,详情如下:

表1 伸缩组及伸缩组标签

伸缩组

伸缩组名称

伸缩组标签

伸缩组1

asg-001

标签:team:game1,其中标签键为team,标签值为game1。

伸缩组2

asg-002

标签:team:game2,其中标签键为team,标签值为game2。

您可以通过标签鉴权方式控制某iam用户对以上伸缩组拥有不同的特定权限,示例场景如下:

  • 场景一:不允许创建不带标签的伸缩组1。创建伸缩组1时须为伸缩组1绑定team:game1标签后,才可以创建成功。
  • 场景二:只允许查询绑定team:game1标签的伸缩组1。
  • 场景三:只允许操作伸缩组1,不允许操作伸缩组2。伸缩组1绑定了team:game1标签,伸缩组2绑定了team:game2标签,只允许操作绑定team:game1标签的伸缩组功能,不允许操作绑定team:game2标签的伸缩组功能。

操作步骤

操作前请您确保已创建iam用户且赋予ecs、vpc、ims的只读权限。若未创建请您先创建iam用户,具体操作,请参见创建iam用户

  1. 创建2个伸缩组。具体操作,请参见创建伸缩组
  2. 登录。
  3. 创建自定义策略。具体操作,请参见创建自定义策略

    您可以在策略(condition)中为云资源设置多个标签条件来限制对弹性伸缩资源的操作权限。支持的标签鉴权条件如下所示:

    表2 标签鉴权条件

    标签鉴权条件

    说明

    g:requesttag

    限制在请求中必须传入特定的标签。

    如果api请求中没有标签参数,则不能使用g:requesttag,否则会导致鉴权失败。

    g:resourcetag

    限制指定的资源必须包含特定的标签。

    如果api请求中没有资源id参数,则不能使用g:resourcetag,否则会导致鉴权失败。

    • 场景一:不允许创建不带标签的伸缩组1。

      创建伸缩组1时须为伸缩组1绑定team:game1标签后,才可以创建成功。

      对应的自定权限策略如下所示:

      {
        "version": "5.0",
        "statement": [
          {
            "effect": "allow",
            "action": [
              "as:scalinggroup:create"
            ],
            "condition": {
              "stringequals": {
                "g:requesttag/team": [
                  "game1"
                ]
              }
            }
          },
          {
            "effect": "allow",
            "action": [
              "as:scalingconfig:list"
            ]
          },
          {
            "effect": "allow",
            "action": [
              "as::listquotas"
            ]
          }
        ]
      }
    • 场景二:只允许查询绑定标签的伸缩组1。

      伸缩组1绑定team:game1标签后,查询伸缩组时只能查询到伸缩组1的资源。

      对应的自定权限策略如下所示:
      {
        "version": "5.0",
        "statement": [
          {
            "effect": "allow",
            "action": [
              "as:scalinggroup:get"
            ],
            "condition": {
              "stringequals": {
                "g:resourcetag/team": [
                  "game1"
                ]
              }
            }
          },
          {
            "effect": "allow",
            "action": [
              "as:scalingconfig:list"
            ]
          },
          {
            "effect": "allow",
            "action": [
              "as::listquotas"
            ]
          }
        ]
      }
    • 场景三:只允许操作伸缩组1,不允许操作伸缩组2。

      伸缩组1绑定了team:game1标签,伸缩组2绑定team:game2标签,只允许操作绑定team:game1标签的伸缩组功能,不允许操作绑定了team:game2标签的伸缩组功能。

      对应的自定权限策略如下所示:

      {
        "version": "5.0",
        "statement": [
          {
            "effect": "allow",
            "action": [
              "as:scalingconfig:list"
            ]
          },
          {
            "effect": "allow",
            "action": [
              "as::listquotas"
            ]
          },
          {
            "effect": "allow",
            "action": [
              "as:scalinggroup:update"
            ]
          },
          {
            "effect": "allow",
            "action": [
              "as:scalinggroup:resume",
              "as:scalinggroup:pause"
            ],
            "condition": {
              "stringequals": {
                "g:resourcetag/team": [
                  "game1"
                ]
              }
            }
          }
        ]
      }
  4. 将自定义策略授权给您希望控制访问的iam用户。具体操作,请参见给iam用户授权

效果验证

验证权限策略是否生效。

  • 场景一:不允许创建不带标签的伸缩组1。

    伸缩组1已绑定了标签team:game1,创建伸缩组1可成功创建。若没有设置标签team:game1或者设置了其他标签,则提示无权限创建。

  • 场景二:只允许查询绑定标签的伸缩组1。

    指定查询伸缩组1(已绑定标签team:game1),但查询时未筛选标签选项,则可以查询到该伸缩组信息。

    指定查询除伸缩组1外的某个未绑定标签team:game1的伸缩组,则查询结果为空。

  • 场景三:只允许操作伸缩组1,不允许操作伸缩组2。

    修改的伸缩组1(已绑定标签team:game1),有修改伸缩组的权限。

    修改的伸缩组2(未绑定标签team:game1)或设置了其他标签,则提示无权限修改该伸缩组。

相关文档

网站地图