
# 使用标签鉴权精细化管理弹性伸缩
#### 背景
通过标签和访问控制IAM结合，并将标签作为权限策略的匹配条件，您可以实现对弹性伸缩的精细化管理。
- 标签是云资源的标识，可以帮助您从不同维度对具有相同特征的云资源进行分类、搜索和聚合。
- IAM提供权限管理能力，可基于权限策略，管理用户身份，控制云资源的访问和操作。更多信息，请参见++[什么IAM](https://support.huaweicloud.com/productdesc-iam/iam_01_0026.html)++。
本文为您介绍如何通过标签鉴权控制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标签的伸缩组功能。
 
#### 操作步骤
![](https://support.huaweicloud.com/bestpractice-as/public_sys-resources/notice_3.0-zh-cn.png)
操作前请您确保已创建IAM用户且赋予ECS、VPC、IMS的只读权限。若未创建请您先创建IAM用户，具体操作，请参见++[创建IAM用户](https://support.huaweicloud.com/usermanual-iam/iam_02_0001.html)++。
1. 创建2个伸缩组。具体操作，请参见++[创建伸缩组](https://support.huaweicloud.com/usermanual-as/zh-cn_topic_0042018368.html)++。
2. 登录[IAM控制台](https://console.huaweicloud.com/iam/?#/iam/users)。
3. 创建自定义策略。具体操作，请参见++[创建自定义策略](https://support.huaweicloud.com/usermanual-iam/iam_01_0605.html)++ 。
   您可以在策略（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用户授权](https://support.huaweicloud.com/usermanual-iam/iam_01_0652.html)++。
 
#### 效果验证
验证权限策略是否生效。
- **场景一：不允许创建不带标签的伸缩组1。**
  伸缩组1已绑定了标签team:game1，创建伸缩组1可成功创建。若没有设置标签team:game1或者设置了其他标签，则提示无权限创建。
  

- **场景二：只允许查询绑定标签的伸缩组1。**
  指定查询伸缩组1（已绑定标签team:game1），但查询时未筛选标签选项，则可以查询到该伸缩组信息。
  指定查询除伸缩组1外的某个未绑定标签team:game1的伸缩组，则查询结果为空。
  
- **场景三：只允许操作伸缩组1，不允许操作伸缩组2。**
  修改的伸缩组1（已绑定标签team:game1），有修改伸缩组的权限。
  修改的伸缩组2（未绑定标签team:game1）或设置了其他标签，则提示无权限修改该伸缩组。
  
 
