是否可以通过使用用户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的权限
答案 0 :(得分:0)
在您的代码中,您刚刚将长期凭据转换为短期临时凭证 - 这有很多用途。
接下来,您应该使用所需的权限创建IAM角色。然后在STS中呼叫assumeRole()
。这将使用该角色的权限创建新的临时凭证。请注意,假定角色的拼写取决于SDK语言。
你仍然是你自己。 STS不会切换用户身份。
答案 1 :(得分:0)
您可以使用GetFederationTokenRequest
或AssumeRoleRequest
获取临时凭据并使用这些凭据。在任何一种情况下,您都无法获得其他用户的权限。
AssumeRoleRequest
获取与角色相关的权限。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());