华为云IAM用户权限设置有很多需要注意的问题,尤其是总是碰见权限不足等问题,主要有以下需要特别注意的地方(很多人踩坑):
IAM用户访问API(比如IoTDA、OBS、ECS)时,后台校验的是具体Project ID权限,不是泛泛的"全局权限"。
所以授权时,一定要勾选实际需要访问的区域和项目,比如【cn-north-4(北京四)】。
否则,就会出现 "User not found by IAM token"
、403 forbidden
类错误。
给IAM用户赋权时,即使能在华为云控制台正常登录、管理资源,不代表能直接用API。
API需要的是更加细颗粒度的权限,比如 IoTDA的具体服务接口权限。
必须分配API操作权限(FullAccess、ReadOnlyAccess或者自定义Policy)。
华为云Token分两种:
IAM Token:自己用户体系下发,走标准IAM流程。
Agency Token(委托Token):需要设置委托。
普通IAM用户需要走**获取IAM Token(POST /v3/auth/tokens)**流程。
注意请求体里user、domain、password、scope必须正确。
scope可以是:
project(项目级别授权,最常见)
domain(整个账号级别授权,少用)
大多数物联网IoT、云服务器ECS场景,都是必须用scope.project。
比如访问IoTDA(物联网平台),IAM用户要有:
IoTDA FullAccess 或至少 IoTDA ReadOnlyAccess。
有时候即使你加了很多策略,比如边缘服务、OBS读写等,但漏了IoTDA权限,也不能访问IoTDA资源。
被禁用、冻结的IAM用户,即使有权限也无法调用API。
在IAM用户管理那里确认是【启用】状态。
AK/SK:适合长期调用程序(比如SDK)。
Token:适合短期登录、临时调用(比如手动拉设备影子,访问受保护的API)。
就算IAM用户有IoTDA权限,如果设备ID错误、设备本身未激活,调用设备影子也会失败。
必须确保设备本身在平台上是【在线】或者【已注册】状态。
✅ 给IAM用户授权时,要【指定正确的区域项目】而不是所有资源。
✅ 必须有对应服务(IoTDA)的【FullAccess】权限才能通过API访问。