华为云统一身份认证服务IAM实战:用户组、权限策略与最小权限原则
一、背景:云上账号安全从权限管理开始
上云之后,最容易被忽视的风险往往不是漏洞,而是“权限”:所有人共用一个主账号登录控制台、把拥有全部权限的 AK/SK 写死在代码里、离职员工的账号迟迟没有删除……一旦凭证泄露,攻击者就能直接删除资源、窃取数据甚至大量创建实例产生费用。
华为云 统一身份认证服务 IAM(Identity and Access Management) 提供用户管理、身份认证和细粒度权限控制能力,并且免费使用。本文以“一个小型研发团队如何规范使用华为云”为主线,依次介绍 IAM 用户与用户组、系统策略与自定义策略、JSON 自定义策略示例、委托、MFA 多因素认证以及 AK/SK 最佳实践,帮助大家落地最小权限原则。
二、核心概念
| 概念 | 说明 |
|---|---|
| 账号 | 注册华为云时创建的主体,拥有所有资源的完全控制权,也是计费主体,不建议日常使用 |
| IAM 用户 | 由账号在 IAM 中创建的用户,对应具体的人或应用程序,拥有独立的登录密码和访问密钥 |
| 用户组 | 用户的集合,权限授予用户组,组内用户自动继承,是推荐的授权方式 |
| 权限(策略) | 描述“允许或拒绝对哪些资源执行哪些操作”,分为系统策略和自定义策略 |
| 项目 | 按区域划分的资源隔离单位,授权时可以选择全局服务或指定区域项目 |
| 委托 | 将本账号的操作权限委托给其他账号或云服务,实现跨账号或服务间访问 |
权限的授予关系可以概括为:账号 → 创建用户 → 加入用户组 → 为用户组授权(选择作用范围)。用户本身不直接绑定权限,这样人员变动时只需要调整其所属的用户组即可。
三、创建用户组与 IAM 用户
假设团队有三类角色:管理员、开发人员和只读审计人员。推荐的做法如下:
- 使用账号登录控制台,进入“统一身份认证服务”,选择“用户组”,点击“创建用户组”,分别创建
admins、developers、auditors三个用户组。 - 选择“用户”,点击“创建用户”,填写用户名、邮箱或手机号,访问方式按需勾选:
- 管理控制台访问:给需要登录控制台的人员,设置初始密码并勾选“首次登录时重置密码”;
- 编程访问:给程序或 CI/CD 流水线使用,创建后会生成访问密钥 AK/SK。
- 在创建向导中将用户加入对应的用户组,完成创建。
建议“人”和“程序”使用不同的 IAM 用户:人员账号只开控制台访问,程序账号只开编程访问,两者互不混用,便于审计和权限收敛。
四、系统策略:快速完成常见授权
华为云为各云服务预置了大量系统策略,常见的有以下几类:
- Tenant Administrator:除 IAM 外所有服务的管理员权限;
- Tenant Guest:全部服务的只读权限,适合审计人员;
- XXX FullAccess / XXX ReadOnlyAccess:某一服务的完全或只读权限,例如 ECS FullAccess、OBS ReadOnlyAccess;
- Security Administrator:IAM 管理权限,只建议授予极少数管理员。
授权步骤:在“用户组”列表中点击目标用户组的“授权”,搜索并勾选策略,然后选择授权范围(所有资源、指定区域项目或企业项目),确认即可。比如为 developers 组授予华北-北京四区域的 ECS FullAccess 与 VPC ReadOnlyAccess,为 auditors 组授予 Tenant Guest。
需要注意,权限生效通常有几分钟的延迟;部分服务的策略存在依赖关系,控制台在勾选时会自动提示并带上依赖的策略。
五、自定义策略:精确到操作与资源
系统策略粒度较粗,“开发人员可以管理 ECS 但不能删除”这类需求就需要自定义策略。在 IAM 控制台选择“权限管理 → 权限 → 创建自定义策略”,可以通过可视化视图勾选服务和操作,也可以直接编辑 JSON。
下面的示例允许用户查看、启动、停止和重启云服务器,但显式拒绝删除操作:
{
"Version": "1.1",
"Statement": [
{
"Effect": "Allow",
"Action": [
"ecs:servers:get",
"ecs:servers:list",
"ecs:servers:start",
"ecs:servers:stop",
"ecs:servers:reboot"
]
},
{
"Effect": "Deny",
"Action": [
"ecs:servers:delete"
]
}
]
}
编写策略时请记住几条规则:
- Action 的格式为“服务名:资源类型:操作”,支持通配符,例如
obs:object:*;具体可用的操作以各服务的“权限及授权项”文档为准; - Deny 优先:同一用户同时被 Allow 和 Deny 命中时,以 Deny 为准,适合用来兜底禁止高危操作;
- 可以通过 Condition 条件键进一步限制,例如限定来源 IP 或要求请求开启 MFA;
- 部分服务支持在 Resource 中指定具体资源(如某个 OBS 桶),实现资源级授权。
建议先从“只读 + 少量必需写操作”开始,在实际使用中根据报错信息逐步补充,而不是一开始就授予 FullAccess。
六、委托:跨账号与云服务授权
很多场景下需要“让别人代表我操作”:
- 委托其他账号:例如把运维工作交给合作伙伴,在 IAM 中创建委托,选择“普通账号”,填写对方账号名并授予指定权限。对方的 IAM 用户在控制台右上角“切换角色”后即可管理你的资源,无需你为其创建用户、共享密码;
- 委托云服务:例如让 ECS 上运行的程序访问 OBS、让函数工作流 FunctionGraph 读写其他服务。创建委托时选择“云服务”,再在服务侧绑定该委托,程序即可获取临时安全凭证访问资源。
委托最大的好处是无需在代码或服务器上保存长期 AK/SK,临时凭证自动轮换,泄露风险大大降低。委托同样应遵循最小权限,并设置合理的持续时间。
七、MFA 与登录安全
只靠密码保护账号是不够的。IAM 提供多项登录安全能力:
- 虚拟 MFA:在“安全设置”中绑定华为云 App 或其他支持 TOTP 的身份验证器,登录时除密码外还需输入 6 位动态码;
- 登录保护:为用户开启登录保护,可选虚拟 MFA、短信或邮件验证;
- 操作保护:开启后,删除资源、修改关键配置等敏感操作需要二次验证,有效防止误操作;
- 密码策略与访问控制:在“安全设置”中设置密码复杂度、有效期、登录失败锁定,并可配置允许访问的 IP 地址段。
强烈建议:账号本身和所有拥有管理权限的 IAM 用户都必须绑定 MFA。
八、AK/SK 最佳实践
访问密钥是程序调用华为云 API 的长期凭证,一旦泄露危害极大:
- 不使用账号的 AK/SK,为每个应用创建独立的编程访问用户并按需授权;
- 不硬编码:不要把 AK/SK 写进代码或提交到 Git 仓库,优先使用环境变量、配置中心或数据加密服务 DEW 的凭据管理;
- 能用委托就用委托:运行在 ECS、CCE、FunctionGraph 上的程序优先通过委托获取临时凭证;
- 定期轮换:每个用户最多可以有两个访问密钥,可先创建新密钥、切换业务,再停用并删除旧密钥,实现平滑轮换;
- 及时清理:在用户详情中查看访问密钥的最近使用时间,长期未使用的密钥应停用;
- 审计:开启云审计服务 CTS,记录所有 API 调用,发现异常操作时可快速追溯。
九、总结
IAM 是华为云安全体系的第一道门。落地时记住几条主线:主账号只用于管理和计费,日常操作使用 IAM 用户;权限授予用户组而不是个人;系统策略满足不了时用 JSON 自定义策略精确控制,并用 Deny 兜底高危操作;跨账号和服务间访问优先使用委托;所有管理员开启 MFA 与操作保护;AK/SK 不硬编码、定期轮换、配合 CTS 审计。坚持最小权限原则,才能在享受云上便利的同时把安全风险降到最低。
- 点赞
- 收藏
- 关注作者
评论(0)