繁体   English   中英

获取STS代入角色用户标签

[英]Get STS Assume Role User Tags

我正在尝试将元数据存储到 STS“承担角色”session 中,以便在 session 用户调用我的服务时检索它。

为此,我在 STS assumeRole创建期间设置了一个标记:

AWSSecurityTokenService service = ...
AssumeRoleRequest request = new AssumeRoleRequest();
request.setTags(ImmutableList.of(new Tag().withKey("metadataKey").withValue("metadataValue")));
...
service.assumeRole(request);

在我的后端服务中,我收到对应于临时 session 的调用方的用户名和 ARN。但是,我无法查找 IAM 用户的详细信息(其中包含标签)。

AmazonIdentityManagement iamClient = ...
GetUserRequest request = new GetUserRequest();
request.setUsername(...);
// this next line fails because the temporary user has a colon in the username
iamClient.getUser(request);

我将如何检索临时“担任角色用户”的标签?

我将如何检索临时“担任角色用户”的标签?

这个问题是基于对标签的用途的误解。 标签用于进一步允许/拒绝对资源的访问 它们不用作存储元数据的 canvas。 AWS 文档支持这一点:

当您使用 session 凭证发出后续请求时,请求上下文包含 aws:PrincipalTag 上下文键。 您可以在策略的 Condition 元素中使用 aws:PrincipalTag 键来允许或拒绝基于这些标签的访问。 在这里查看更多

无法从 IAM ARN 中查找临时 session 用户,因为 AWS 没有存储持久数据。

但是,有一种解决方法,您可以使用“会话名称”字段存储有限的元数据。 AWS 在 ARN 中使用 session 名称,因此实际上可以存储值,只要它们不是敏感信息即可。

角色创建期间:

AWSSecurityTokenService service = ...
request.setRoleSessionName("metadata=test");
service.assumeRole(request);

最后,用户ARN是这种格式,可以被其他服务读取

[generatedId]:metadata=test[moreData]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM