OCI管理员用户调用API登录失败问题求助
OCI跨域管理员用户执行Python脚本时身份服务404权限问题
问题描述
- 使用Python脚本获取OCI全量资源时,租户用户可正常运行,但test-domain域的管理员用户testadmin执行时触发身份服务错误:
'target_service': 'identity', 'status': 404, 'code': 'NotAuthorizedOrNotFound' - 报错触发代码(第177行):
user = identity.get_user(config["user"]).data - 环境架构信息:
- Compartments:ROOT、C2
- ROOT包含2个域:Default、test-domain
- C2包含1个域:Default
- Default域用户:tenancyUser、defaultadmin
- test-domain域用户:testadmin
- 对比测试:DEFAULT域内加入
Administrators组的用户可正常运行脚本。
解决方案
1. 核心原因
OCI的域(Domain)具备权限隔离特性:test-domain的本地管理员权限仅覆盖该域内资源,无法默认访问租户级(跨域)的身份服务资源,而get_user接口需要租户级的身份数据访问权限。
2. 租户级策略配置
在ROOT Compartment下添加以下策略,授予testadmin(或其所在组)跨域访问身份服务的权限:
# 若授权组(需先在test-domain创建对应管理员组) Allow group test-domain/TestAdminGroup to inspect users in tenancy Allow group test-domain/TestAdminGroup to inspect domains in tenancy # 若直接授权用户 Allow user test-domain/testadmin to inspect users in tenancy Allow user test-domain/testadmin to inspect domains in tenancy
- 权限说明:
inspect是满足get_user查询操作的最小权限,若脚本需更多身份服务操作,可替换为use或manage。
3. 配置文件校验
确保脚本使用的OCI配置文件中,user参数填写的是testadmin的完整OCID,而非仅用户名。跨域场景下,仅用户名无法让SDK正确定位到目标域的用户资源。
4. 组权限确认
验证testadmin所在的组是否真的具备test-domain的本地管理员权限,同时确认租户级策略已正确关联该用户/组。
内容的提问来源于stack exchange,提问作者AhmadH
相关产品推荐
相关产品推荐

