如何限制IAM角色IPR仅允许RDS代理RP调用sts:AssumeRole?
问题描述
现有配置:
- RDS代理
RP,其密码存储在由KMS密钥K加密的密钥S中 - IAM角色
IPR,供RP用于访问密钥S和KMS密钥K
需要限制IPR的sts:AssumeRole操作,仅允许指定的RDS代理RP的ARN来扮演该角色。目前已通过账户级限制实现部分效果,对应的信任策略如下:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "rds.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:ResourceAccount": [ "1234567891" ] } } } ] }
期望通过SourceArn或类似方式实现针对RP的ARN的更具体限制,寻求解决方案。
解决方案
直接修改IAM角色IPR的信任策略,通过aws:SourceArn条件精确匹配目标RDS代理RP的完整ARN,即可实现仅允许该特定代理扮演角色的限制。
修改后的信任策略示例:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "rds.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceArn": "arn:aws:rds:你的区域:1234567891:db-proxy:你的RP代理名称" } } } ] }
注意事项:
- 务必将示例中的
你的区域和你的RP代理名称替换为实际信息,保证ARN的准确性 - 若需要允许多个特定RDS代理,可将
aws:SourceArn改为aws:SourceArns,并传入ARN数组,示例如下:
"StringEquals": { "aws:SourceArns": [ "arn:aws:rds:us-east-1:1234567891:db-proxy:rp-prod", "arn:aws:rds:us-east-1:1234567891:db-proxy:rp-test" ] }
内容的提问来源于stack exchange,提问作者gratinierer
相关产品推荐
相关产品推荐

