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

时间:2017-12-24 15:01:38

标签: java amazon-web-services amazon-iam

是否可以通过使用用户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的权限

2 个答案:

答案 0 :(得分:0)

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

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

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

答案 1 :(得分:0)

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

  1. 如果您有权使用角色,则可以使用AssumeRoleRequest获取与角色相关的权限。
  2. 您可以使用GetFederationTokenRequest获取与您的用户(其子集)相关联的权限。
  3. 但重要的一点是始终使用具有这些调用的策略,以便临时令牌用于所需目的。例如,获取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());