AWS控制台切换角色时如何继承原用户的SSMSessionRunAs标签?
AWS控制台切换角色时继承SSMSessionRunAs标签的解决方案
核心结论
控制台原生不支持自动继承原用户的SSMSessionRunAs标签,但可以通过STS会话标签传递机制间接实现,无需为每个用户创建专属切换角色。
具体实现步骤
1. 配置原用户的IAM权限
给需要切换角色的主账号用户添加以下IAM策略,允许其在AssumeRole时传递自身的SSMSessionRunAs标签:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": "arn:aws:iam::[目标账号ID]:role/[切换角色名]", "Condition": { "ForAnyValue:StringEquals": { "sts:TagKeys": "SSMSessionRunAs" } } }, { "Effect": "Allow", "Action": "sts:TagSession", "Resource": "*", "Condition": { "StringEquals": { "aws:ResourceTag/SSMSessionRunAs": "${aws:PrincipalTag/SSMSessionRunAs}" } } } ] }
2. 修改目标角色的信任策略
更新目标账号中切换角色的信任策略,允许原账号用户传递SSMSessionRunAs标签:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::[原账号ID]:user/[用户名]" }, "Action": "sts:AssumeRole", "Condition": { "ForAnyValue:StringEquals": { "sts:TagKeys": "SSMSessionRunAs" } } } ] }
3. 控制台切换角色时开启标签传递
在AWS控制台切换角色的界面,点击高级选项:
- 勾选传递会话标签
- 在标签列表中添加
SSMSessionRunAs,值填写原用户标签对应的操作系统用户名
完成以上步骤后,切换角色后的Session Manager会话会自动使用原用户指定的操作系统用户登录。
备选方案:SAML联合身份(若环境支持)
如果使用SAML身份提供商管理用户身份,可以在SAML断言中携带SSMSessionRunAs属性,然后在IAM角色的信任策略中配置,让角色自动从断言中提取该值并设置为会话标签,实现无缝继承。
最后备选:专属角色方案
仅当上述方案无法落地时,才考虑为每个用户创建专属切换角色,并在角色上绑定对应的SSMSessionRunAs标签。但该方案维护成本高,不推荐大规模使用。
内容的提问来源于stack exchange,提问作者Phil
相关产品推荐
相关产品推荐

