[英]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.