Могу ли я получить учетные данные по роли AWS IAM, опубликованной другой учетной записью aws?
К сожалению, я потерял несколько дней для этой работы.
Как я могу получить временные учетные данные по роли IAM? Это возможно?
Вот мой сценарий и код.(AWS SDK на Java)
Экземпляр STS с помощью учетной записи AWS accessKey и secretKey
AWSSecurityTokenService tokenService = new AWSSecurityTokenServiceClient(new BasicAWSCredentials(awsProperty.getAccess(), awsProperty.getSecret()));
сделать AssumeRoleRequest
AssumeRoleRequest assumeRoleRequest = new AssumeRoleRequest(); assumeRoleRequest.setRoleArn(arn); assumeRoleRequest.setDurationSeconds(900); assumeRoleRequest.setRoleSessionName("for_test"); assumeRoleRequest.setExternalId("ext_id");
получить SessionCredentials
AssumeRoleResult roleResult = tokenService.assumeRole(assumeRoleRequest); Credentials credentials = roleResult.getCredentials(); AWSCredentials awsCredentials = new BasicSessionCredentials(credentials.getAccessKeyId(), credentials.getSecretAccessKey(), credentials.getSessionToken());
Работа
AmazonCloudFrontClient cloudFrontClient = new AmazonCloudFrontClient(awsCredentials);
Это бросает AWSSecurityTokenServiceException
User: arn:aws:iam::{account}:user/{user_name} is not authorized to perform: sts:AssumeRole on resource: arn:aws:iam::{role_account}:role/{role_name} (Service: AWSSecurityTokenService; Status Code: 403; Error Code: AccessDenied;
Я делаю политику, как это. прикрепить к роли IAM Role и IAM User.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Stmt1490674259000",
"Effect": "Allow",
"Action": [
"sts:AssumeRole"
],
"Resource": [
"*"
]
}
]
}
РЕДАКТИРОВАТЬ:
Я протестировал политику (измененную) с помощью IAM Policy Simulator. Выбрать AWS Security Token Service-AssumeRole
с IAM Role ARN
- это разрешено.
1 ответ
Решение
Вы должны добавить доверительные отношения к своей роли IAM, чтобы разрешить их использование.