在AWS IAM角色信任实体中配置多个Principal的正确方式
IAM信任实体添加多Principal的两种正确配置方式
两种配置方式都是正确且有效的,AWS IAM会以相同的权限逻辑处理这两种写法,最终都能实现让账户B、C的Lambda执行角色(L1、L2)Assume账户P中的DDBReadRole的需求。
方式一:合并式配置(单Statement多Principal)
将多个主体的ARN放在同一个Statement的AWS数组中,结构更紧凑,适合权限规则完全一致的多个主体:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::<AccountBId>:role/<AccountBRole>", "arn:aws:iam::<AccountCId>:role/<AccountCRole>" ] }, "Action": "sts:AssumeRole" } ] }
方式二:拆分式配置(多Statement单Principal)
拆分为多个独立的Statement,每个Statement对应一个主体,优势在于后续如果需要给不同主体添加差异化的权限条件(比如限制访问时间、来源IP等),可以更灵活地单独调整:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::<AccountBId>:role/<AccountBRole>" }, "Action": "sts:AssumeRole" }, { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::<AccountCId>:role/<AccountCRole>" }, "Action": "sts:AssumeRole" } ] }
注意事项
- 务必确保ARN中的账户ID和角色名称完全准确,任何拼写错误都会导致信任关系无法生效。
- 两种配置的权限效果完全等价,选择哪种取决于后续的维护需求:若多个主体的权限规则始终一致,方式一更简洁;若未来可能需要差异化配置,方式二更灵活。
内容的提问来源于stack exchange,提问作者parhau
相关产品推荐
相关产品推荐

