如何检查 AWS STS 访问令牌是否有效

How to check if an AWS STS access token is valid

我有一个 lambda 函数,它使用 AWS STS 生成临时凭证,然后通过 HTTP 将访问令牌发送到 EC2 实例中的 Web API。

有没有办法验证从 API 收到的访问令牌?

调用 STS GetCallerIdentity 会告诉您凭据是否可用于进行 API 调用,并且它会识别底层 AWS 账户和承担的角色。

例如:

aws sts get-caller-identity
{
    "UserId": "AROAABCDEFGHIJKLMNOPQ:xyz",
    "Account": "123456781234",
    "Arn": "arn:aws:sts::123456781234:assumed-role/somerole"
}

关于 response object 的注释:

  • Account 是 owns/contains 调用实体
  • 账户的 AWS 账号
  • UserId是调用实体的唯一标识符。确切的值取决于进行调用的实体的类型。

AWS 安全架构向您保证 IAM 生成的任何令牌都代表有效令牌,并且生成令牌的给定服务具有这样做的权限。如果您担心某些具有提升权限的实体生成了令牌,并且该令牌不受信任,那么您就会遇到安全配置问题。您需要检查 CloudWatch 以查看生成令牌的实体,并撤销其权限。

正如@jarmod 所建议的,如果给定的令牌有效,那么它就是有效的。这就是您对它的有效性的全部了解。