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

AWS CDK创建IAM角色信任关系策略差异及实现方案咨询

问题1:两个信任策略的实际生效效果是否存在差异?

存在显著差异:

  • 预期策略中,账号<ABC>的根用户扮演角色时必须传入匹配的<ID>作为sts:ExternalId,账号<XYZ>的根用户扮演角色无需校验ExternalId。
  • 实际生成的策略将两个账号合并到同一条Statement中,Condition对本条Statement内所有Principal生效,意味着两个账号扮演角色时都必须传入正确的ExternalId,<XYZ>账号无需校验的逻辑完全失效。

问题2:如何调整CDK代码生成符合预期的信任策略?

你原有代码存在两处错误:

  1. withConditions方法不会修改原Principal实例,而是返回一个添加了条件的新Principal实例,你没有承接返回值导致条件配置未生效。
  2. Role构造函数传入的externalIds参数是全局配置,会给所有信任实体统一添加ExternalId校验规则,导致两个账号被合并到同一条Statement、统一应用校验规则。

调整后的代码如下:

// XYZ账号:无需ExternalId校验
const xyzPrincipal = new AccountPrincipal('<XYZ>');
// ABC账号:需校验ExternalId,承接withConditions返回的新实例
const abcPrincipal = new AccountPrincipal('<ABC>').withConditions({
  StringEquals: { "sts:ExternalId": "<ID>" }
});

const role1 = new Role(this, 'role1', {
  roleName: "role1",
  description: "some description",
  // 传入两个独立配置的Principal,CDK会自动生成两条独立的Statement
  assumedBy: new CompositePrincipal(xyzPrincipal, abcPrincipal)
  // 删除全局externalIds配置
});

调整后CDK会为两个Principal分别生成独立的Statement,和你预期的策略结构、逻辑完全一致。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 06:15:03