对IAM用户的权限进行安全审计
场景描述
企业级用户通常需要对云上IAM用户的权限定期进行安全审计,以确定IAM用户的权限未超出规定的范围。例如:除账号根用户和审计员用户以外的所有IAM用户都不应该具有任何IAM的管理权限。此安全审计往往是系统定期自动检查,所以需要使用API来完成。
本章节指导用户如何使用API调用的方式对IAM用户的权限进行安全审计,您可进一步通过编程手段完成定期安全审计工作。
总体思路
对IAM用户的权限进行安全审计,包含审计IAM用户自身附加的身份策略,以及IAM用户组附加的身份策略。对IAM用户自身附加的身份策略进行权限审计,只需要将待审计的权限与附加的身份策略内容进行对比即可。因此,接下来只以IAM用户组附加的身份策略权限审计为例进行详细说明,操作对步骤如下:
- 查询用户组列表;
- 查询用户组权限;
- 查询身份策略内容;
- 确定需要审计的权限,查询用户组中的IAM用户,进行安全审计。
涉及的接口如下:
- 响应示例
{ "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文档详情请参见:查询指定用户组附加的所有身份策略
- 请求示例
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文档详情请参见:查询指定身份策略的所有版本
- 请求示例
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用户列表
- 请求示例
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 } }