如何通过AWS CLI获取联邦用户的AWS主体会话标签值
结论
无法通过常规AWS CLI命令直接获取当前联邦用户会话上附带的ABAC会话标签明文值,具体说明和可替代方案如下:
- 首先是核心限制:不管是外部IdP对接AWS SSO签发的联邦会话,还是普通SAML/OIDC联邦角色会话,AWS STS签发的临时安全凭证本身不会携带会话标签明文。你调用常用的身份查询命令
aws sts get-caller-identity时,返回结果仅包含账号ID、角色ARN、主体ARN三个字段,不会返回SSMSessionRunAs这类传入的会话标签内容。 - 可行的间接获取/验证方案:
- 条件校验反推:你可以编写测试用IAM权限策略,通过
aws:PrincipalTag/<标签键>条件键做权限判断,仅当标签值匹配你预设的取值时,允许执行无风险的基础操作(比如调用aws sts get-caller-identity),通过操作是否被允许来验证标签值是否符合预期。这种方式仅适合校验已知取值,无法直接拉取全量未知标签。 - CloudTrail事件查询:如果账号已开启CloudTrail管理事件记录,AWS SSO签发联邦会话、代入SAML角色的对应事件中,会完整记录传入的所有会话标签字段。你可以筛选当前会话对应的角色代入事件,从事件详情中直接查到
SSMSessionRunAs等标签的实际传递值,该方式需要你拥有CloudTrail对应事件的查看权限。 - SSM场景本地获取:你提到的
SSMSessionRunAs是AWS SSO对接SSM Session Manager的专用传递标签,如果你已经通过SSO成功建立了到目标实例的SSM会话,可以直接在EC2实例内部,从本地元数据服务或SSM Agent的会话配置文件中读取该标签值,无需调用云端AWS API。
- 条件校验反推:你可以编写测试用IAM权限策略,通过
注意:不建议通过IAM策略模拟接口暴力枚举标签值,这类操作效率极低,同时如果账号开启了GuardDuty等威胁检测服务,高频的权限枚举行为会触发异常访问告警。
内容的提问来源于stack exchange,提问作者RVKarmani
相关产品推荐
相关产品推荐

