
# 对IAM用户的权限进行安全审计
#### 场景描述
企业级用户通常需要对云上IAM用户的权限定期进行安全审计，以确定IAM用户的权限未超出规定的范围。例如：除账号根用户和审计员用户以外的所有IAM用户都不应该具有任何IAM的管理权限。此安全审计往往是系统定期自动检查，所以需要使用API来完成。
本章节指导用户如何使用API调用的方式对IAM用户的权限进行安全审计，您可进一步通过编程手段完成定期安全审计工作。
#### 总体思路
对IAM用户的权限进行安全审计，包含审计IAM用户自身附加的身份策略，以及IAM用户组附加的身份策略。对IAM用户自身附加的身份策略进行权限审计，只需要将待审计的权限与附加的身份策略内容进行对比即可。因此，接下来只以IAM用户组附加的身份策略权限审计为例进行详细说明，操作对步骤如下：
1. 查询用户组列表；
2. 查询用户组权限；
3. 查询身份策略内容；
4. 确定需要审计的权限，查询用户组中的IAM用户，进行安全审计。
涉及的接口如下：
- [查询用户组列表](https://support.huaweicloud.com/api-iam5/ListGroupsV5.html)
- [查询指定用户组附加的所有身份策略](https://support.huaweicloud.com/api-iam5/ListAttachedGroupPoliciesV5.html)
- [查询指定身份策略的所有版本](https://support.huaweicloud.com/api-iam5/GetPolicyVersionV5.html)
- [查询IAM用户列表](https://support.huaweicloud.com/api-iam5/ListUsersV5.html)
 
#### 步骤1：查询用户组列表
URI：GET /v5/groups
API文档详情请参见：[查询用户组列表](https://support.huaweicloud.com/api-iam5/ListGroupsV5.html)
- 请求示例
  ```
  GET https://{endpoint}/v5/groups
  ```
  
 
- 响应示例
  ```
  { 
    "groups" : [ { 
      "group_id" : "5b050baea9db472c88cbae67e8d6....", 
      "group_name" : "IAMGroupA", 
      "created_at" : "2023-09-11T10:13:25.414Z", 
      "urn" : "iam::d78cbac186b744899480f25bd022....:group:IAMGroupA", 
      "description" : "IAMdescription" 
    }, { 
      "group_id" : "07609e7eb200250a3f7dc003cb7a....", 
      "group_name" : "IAMGroupB", 
      "created_at" : "2023-09-11T10:13:40.016Z", 
      "urn" : "iam::d78cbac186b744899480f25bd022....:group:IAMGroupB", 
      "description" : "IAMdescription" 
    } ], 
    "page_info" : { 
      "current_count" : 2 
    } 
  }
  ```
  
#### 步骤2：查询用户组权限
URI：GET /v5/groups/{group_id}/attached-policies
API文档详情请参见：[查询指定用户组附加的所有身份策略](https://support.huaweicloud.com/api-iam5/ListAttachedGroupPoliciesV5.html)
- 请求示例
  ```
  GET https://{endpoint}/v5/groups/5b050baea9db472c88cbae67e8d6..../attached-policies
  ```
  
 
- 响应示例
  ```
  { 
    "attached_policies" : [ { 
      "policy_name" : "ReadPolicy", 
      "policy_id" : "75cfe22af2b3498d82b655fbb39d....", 
      "urn" : "iam::d78cbac186b744899480f25bd022....:policy:ReadPolicy", 
      "attached_at" : "2023-09-25T09:31:44.935Z" 
    } ], 
    "page_info" : { 
      "current_count" : 1 
    } 
  }
  ```
  
#### 步骤3：查询身份策略内容
URI：GET /v5/policies/{policy_id}/versions
API文档详情请参见：[查询指定身份策略的所有版本](https://support.huaweicloud.com/api-iam5/GetPolicyVersionV5.html)
- 请求示例
  ```
  GET https://{endpoint}/v5/policies/75cfe22af2b3498d82b655fbb39d..../versions
  ```
  
 
- 响应示例
  ```
  { 
    "versions" : [ { 
      "document" : "{\"Version\":\"5.0\",\"Statement\":[{\"Effect\":\"Allow\",\"Action\":[\"iam:*:get*\",\"iam:*:list*\"]}]}", 
      "version_id" : "v1", 
      "is_default" : true, 
      "created_at" : "2023-09-25T09:03:24.786Z" 
    } ], 
    "page_info" : { 
      "current_count" : 1 
    } 
  }
  ```
  
#### 步骤4：确定需要审计的权限，查询用户组中的IAM用户，进行安全审计
URI：GET /v5/users
API文档详情请参见：[查询IAM用户列表](https://support.huaweicloud.com/api-iam5/ListUsersV5.html)
- 请求示例
  ```
  GET https://{endpoint}/v5/users?group_id=5b050baea9db472c88cbae67e8d6....
  ```
  
 
- 响应示例
  ```
  { 
    "users" : [ { 
      "description" : "description", 
      "user_name" : "IAMUserA", 
      "is_root_user" : false, 
      "created_at" : "2023-04-26T03:49:42Z", 
      "user_id" : "07609fb9358010e21f7bc003751c....", 
      "urn" : "iam::d78cbac186b744899480f25bd022....:user:IAMUserA", 
      "enabled" : true 
    }, { 
      "description" : "description", 
      "user_name" : "IAMUserB", 
      "is_root_user" : false, 
      "created_at" : "2023-04-26T03:52:27Z", 
      "user_id" : "076837351e80251c1f0fc003afe4....", 
      "urn" : "iam::d78cbac186b744899480f25bd022....:user:IAMUserB", 
      "enabled" : true 
    } ], 
    "page_info" : {  
      "current_count" : 2 
    } 
  }
  ```
  
 
