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

如何使用AWS CDK更新现有IAM角色的信任策略?

使用AWS CDK更新现有IAM角色的信任策略

核心解决方案:使用addToPrincipalPolicy方法

通过iam.Role.fromRoleArn导入的可变角色(设置mutable: true),可以通过addToPrincipalPolicy方法向信任策略中添加新的跨账号角色权限,无需手动修改JSON结构。

代码示例

import * as iam from 'aws-cdk-lib/aws-iam';
import { Stack, StackProps } from 'aws-cdk-lib';
import { Construct } from 'constructs';

export class MyStack extends Stack {
  constructor(scope: Construct, id: string, props?: StackProps) {
    super(scope, id, props);

    // 导入现有IAM角色(已设置mutable: true)
    const existingRole = iam.Role.fromRoleArn(this, 'ExistingRole', 'arn:aws:iam::11111:role/my_rolename_1', {
      mutable: true,
    });

    // 创建新的信任策略语句,允许目标跨账号角色 AssumeRole
    const newTrustStatement = new iam.PolicyStatement({
      effect: iam.Effect.ALLOW,
      principals: [new iam.ArnPrincipal('arn:aws:iam::23451:role/role_2')],
      actions: ['sts:AssumeRole'],
    });

    // 将新语句添加到角色的信任策略
    const addResult = existingRole.addToPrincipalPolicy(newTrustStatement);

    // 可选:验证语句是否成功添加
    if (!addResult.statementAdded) {
      throw new Error('无法将信任语句添加到现有角色,请检查角色配置');
    }
  }
}

说明

  • addToPrincipalPolicy会自动合并新策略到现有信任策略中,不会覆盖原有配置,同时会自动处理重复语句的去重。
  • 必须确保导入角色时设置了mutable: true,否则CDK不允许修改该角色的配置。

替代方案:直接覆盖信任策略(不推荐)

如果需要完全替换原有信任策略结构,可以使用addOverride方法,但该方法依赖固定的JSON路径,一旦原策略结构变化会导致错误,仅在特殊场景下使用:

existingRole.addOverride('Properties.AssumeRolePolicyDocument.Statement.0.Principal.AWS', [
  'arn:aws:iam::12345:role/role_1',
  'arn:aws:iam::23451:role/role_2',
]);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 06:25:30