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

AWS联合登录场景下如何校验sts:RoleSessionName中的caller-specified-name

实现方案

联合登录场景下aws:userid默认采用[前缀部分]:[caller-specified-name]的格式,你可以直接通过IAM变量的通配符截取能力提取冒号后的会话名部分,直接在校验RoleSessionName的条件中引用即可。

配置示例

直接修改你的AssumeRole对应权限策略(如果是角色信任策略就加到信任策略的Statement里,身份权限策略就加到对应身份的权限规则里):

{
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "sts:AssumeRole",
      "Resource": "arn:aws:iam::[你的AWS账号ID]:role/[你要代入的目标角色名]",
      "Condition": {
        "StringEquals": {
          "sts:RoleSessionName": "${aws:userid/*:}"
        }
      }
    }
  ]
}

规则说明

  • ${aws:userid/*:}是IAM内置的变量截取语法,含义为匹配aws:userid字段中最后一个冒号后的所有内容,刚好对应你需要的caller-specified-name部分
  • 如果你的联合登录场景下aws:userid存在多个冒号,调整通配符匹配规则即可,比如存在2个冒号要取最后一段,就写为${aws:userid/*:*:}

验证建议

正式上线前可以先将StringEquals替换为StringLike,配合CloudTrail的AssumeRole事件日志确认字段匹配逻辑符合预期,避免误拦截正常的角色代入请求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 15:15:03