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

如何在AWS CDK Python中正确为IAM角色添加多账号信任关系?

在AWS CDK Python中为IAM角色添加多账号信任关系的正确方法

错误原因说明

你遇到的TypeError有两个核心原因:

  1. 调用add_to_principal_policy时不需要显式传入self——这是实例方法,调用时会自动绑定实例作为第一个参数,额外传入self会导致参数冲突。
  2. add_to_principal_policy的作用是给角色添加权限策略(定义角色能执行的操作),而非修改信任关系(定义谁能扮演这个角色),用它来修改信任关系本身就是方向错误。

正确方法一:创建角色时直接指定多账号信任主体

通过CompositePrincipal组合多个账号主体,在角色初始化时就完成多账号信任配置:

from aws_cdk import aws_iam as iam

role = iam.Role(
    self,
    "TestRole",
    # 用CompositePrincipal组合当前账号与目标外部账号
    assumed_by=iam.CompositePrincipal(
        iam.AccountPrincipal(self.account),
        iam.AccountPrincipal("xxxxxxxxx")  # 替换为实际的外部账号ID
    ),
    inline_policies={
        "Auth": iam.PolicyDocument(
            statements=[
                iam.PolicyStatement(
                    actions=["rds-db:connect"],
                    effect=iam.Effect.ALLOW,
                    resources=[
                        f"arn:aws:rds-db:{self.region}:{self.account}:dbuser:*/auth"
                    ]
                )
            ]
        )
    },
    path="/"
)

正确方法二:创建角色后追加信任主体

如果需要在角色创建完成后再添加外部账号信任,可以直接修改角色的assume_role_policy(信任策略文档):

from aws_cdk import aws_iam as iam

# 先创建初始角色(仅允许当前账号扮演)
role = iam.Role(
    self,
    "TestRole",
    assumed_by=iam.AccountPrincipal(self.account),
    inline_policies={
        "Auth": iam.PolicyDocument(
            statements=[
                iam.PolicyStatement(
                    actions=["rds-db:connect"],
                    effect=iam.Effect.ALLOW,
                    resources=[
                        f"arn:aws:rds-db:{self.region}:{self.account}:dbuser:*/auth"
                    ]
                )
            ]
        )
    },
    path="/"
)

# 向信任策略中追加外部账号的允许声明
role.assume_role_policy.add_statements(
    iam.PolicyStatement(
        effect=iam.Effect.ALLOW,
        principals=[iam.AccountPrincipal("xxxxxxxxx")],  # 替换为实际的外部账号ID
        actions=["sts:AssumeRole"]
    )
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 09:37:23