You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何列出Oracle Cloud Infrastructure所有Identity Domains中的用户?

OCI跨身份域用户列表查询方案

可以获取其他Identity Domains的用户,你之前调用的接口属于OCI旧版IAM兼容接口,本身仅支持Default域,需要使用身份域专属的接口集完成跨域用户查询。

旧接口无法查询非Default域用户的原因

  • 你之前使用的oci iam user list命令、旧版Core IAM REST API(路径前缀为/20160918/的用户接口)、Go SDK里老版IdentityClient的ListUsers方法,是OCI上线多身份域能力之前的遗留接口,设计上就硬绑定Default身份域,没有预留身份域入参位置,无论你使用哪个域的账号完成认证,调用这类接口都只会返回Default域下的用户,和认证身份所属域没有关系。

跨域查询用户的正确实现方式

OCI CLI场景

不要使用旧版iam user子命令组,改用身份域专属的用户查询命令:

  1. 先查询租户下所有身份域的OCID和基础信息:
    oci iam domain list --compartment-id <你的租户根 compartment OCID>
    
  2. 传入目标域的OCID,查询对应域下的用户列表:
    oci iam domain user list --domain-id <目标身份域OCID> --compartment-id <租户根 compartment OCID>
    
    全量拉取时可以加--all参数,CLI会自动遍历所有分页返回完整结果。

REST API场景

弃用旧版/20160918/Users接口,使用Identity Domains服务的SCIM标准接口:

  1. 先调用ListDomains接口获取目标域的专属API服务端点,返回结果里的url字段即为对应域的端点地址
  2. 向对应端点发起GET请求拉取用户列表:
    GET https://<目标域服务端点>/admin/v1/Users
    
    请求携带标准的OCI请求签名头即可,接口支持通过count参数调整单页返回条数,通过返回结果里的分页标记遍历拉取全量数据。

Go SDK场景

不要使用旧版IdentityClient的用户查询方法,初始化IdentityDomainsClient客户端:

  1. 初始化客户端时填入目标身份域的专属服务端点
  2. 调用客户端的ListUsers方法,传入请求参数时指定目标域的OCID、所在compartment OCID
  3. 循环处理分页返回结果直到没有下一页标记,即可拿到该域下全量用户

全租户全量用户拉取流程

如果需要获取整个Oracle Cloud环境下的全部用户,按以下步骤执行即可:

  • 调用ListDomains接口拉取租户下所有身份域的列表,拿到每个域的OCID、服务端点
  • 遍历所有身份域,分别调用对应域的用户查询接口拉取单域全量用户
  • 合并所有域的用户结果,即为全环境完整用户列表

权限提示:执行查询操作的账号,需要被授予目标身份域的identity domains:user read权限,旧版IAM的inspect users权限仅对Default域的旧版接口生效,无法用于其他身份域的用户查询。

内容的提问来源于stack exchange,提问作者MWCD

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 15:15:19