代表IAM用户X获取临时会话令牌

问题描述 投票:0回答:2

是否可以通过使用用户Y的凭据为用户X生成临时令牌?我找不到任何文件。

我用这个代码:

BasicAWSCredentials awsCreds = new BasicAWSCredentials(awsAccessKey, awsSecretKey);
AWSSecurityTokenServiceClient stsClient = new AWSSecurityTokenServiceClient(awsCreds);
GetSessionTokenRequest getSessionTokenRequest = new GetSessionTokenRequest();
getSessionTokenRequest.setDurationSeconds(7200);
GetSessionTokenResult sessionTokenResult = stsClient.getSessionToken(getSessionTokenRequest);
Credentials sessionCredentials = sessionTokenResult.getCredentials();

此代码创建一个临时令牌,该令牌具有原始访问/密钥的所有权限。我希望临时令牌具有IAM用户X的权限

java amazon-web-services amazon-iam
2个回答
0
投票

在您的代码中,您刚刚将长期凭证转换为短期临时凭证 - 这有很多用途。

接下来,您应该使用所需的权限创建IAM角色。然后在STS你打电话给assumeRole()。这将使用该角色的权限创建新的临时凭证。请注意,假定角色的拼写取决于SDK语言。

你仍然是你自己。 STS不会切换用户身份。


0
投票

您可以使用GetFederationTokenRequestAssumeRoleRequest获取临时凭证并使用它们。在任何一种情况下,您都无法获得其他用户的权限。

  1. 如果您有权使用lamble,则可以使用AssumeRoleRequest获取与角色关联的权限。
  2. 您可以使用GetFederationTokenRequest获取与您的用户(其子集)相关联的权限。

但重要的一点是始终使用具有这些调用的策略,以便临时令牌用于所需目的。例如,获取s3对象 -

Policy policy = policy.withStatements(new Statement(Effect.Allow).withActions(S3Actions.GetObject)
                    .withResources(new Resource("arn:aws:s3:::myBucket/objectKey)));
GetFederationTokenRequest getFederationTokenRequest = new GetFederationTokenRequest();
getFederationTokenRequest.setDurationSeconds(3600);
getFederationTokenRequest.setName("username");
getFederationTokenRequest.setPolicy(policy.toJson());
© www.soinside.com 2019 - 2024. All rights reserved.