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

Oracle Cloud中通过CLI和SDK实现跨租户访问

可以通过OCI CLI和Python SDK实现跨租户访问

在已配置好跨租户Endorse/Admit策略的前提下,完全可以通过OCI CLI或Python SDK实现从Tenancy1(登录租户)访问Tenancy2(目标租户)的资源,结合动态组的配置步骤如下:

一、OCI CLI 实现方式

1. 直接指定目标租户OCID

调用CLI命令时,通过--tenancy-id参数显式指定Tenancy2的OCID,即可绕过默认的登录租户(Tenancy1),直接访问目标租户资源。
示例命令(列出Tenancy2下某 compartment 的计算实例):

oci compute instance list \
  --tenancy-id ocid1.tenancy.oc1..xxxxxx \
  --compartment-id ocid1.compartment.oc1..xxxxxx

2. 结合动态组配置

如果使用Tenancy1中的动态组访问Tenancy2资源:

  • 确保Tenancy1的Endorse策略已授权该动态组访问Tenancy2:
    Endorse dynamic-group Tenancy1-Dynamic-Group to manage all-resources in tenancy Tenancy2-OCID
    
  • Tenancy2的Admit策略需接受该动态组:
    Admit dynamic-group Tenancy1-Dynamic-Group from tenancy Tenancy1-OCID to manage all-resources in compartment Tenancy2-Target-Compartment
    
  • CLI使用与动态组关联的身份(比如实例主身份)时,只需在命令中指定Tenancy2的OCID即可,无需额外配置登录信息(实例主身份会自动使用Tenancy1的身份凭证)。

二、Python SDK 实现方式

1. 初始化客户端时指定目标租户OCID

加载默认配置(基于Tenancy1的身份凭证)后,在创建服务客户端时显式传入tenancy_id参数为Tenancy2的OCID。
示例代码(列出Tenancy2下的计算实例):

import oci

# 加载Tenancy1的身份配置
config = oci.config.from_file()

# 创建Compute客户端,指定Tenancy2的OCID
compute_client = oci.core.ComputeClient(config)
compute_client.base_client.set_tenancy_id("ocid1.tenancy.oc1..xxxxxx")

# 调用API查询Tenancy2的资源
response = compute_client.list_instances(compartment_id="ocid1.compartment.oc1..xxxxxx")
print(response.data)

2. 结合动态组配置

与CLI逻辑一致:

  • 确保Tenancy1的动态组已被Endorse,Tenancy2的Admit策略允许该动态组操作目标资源;
  • SDK使用的身份(如实例主身份)需属于Tenancy1的动态组,初始化客户端时指定Tenancy2的OCID即可完成跨租户访问。

关键注意事项

  • 所有跨租户操作的权限边界由Tenancy1的Endorse策略和Tenancy2的Admit策略共同控制,需确保策略的权限范围、资源类型匹配实际需求;
  • 如果使用用户身份而非实例主身份,需确保该用户在Tenancy1中拥有被Endorse的权限,且CLI/SDK的配置文件使用该用户的凭证。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 17:30:47