Leider habe ich mehrere Tage für diese Arbeit verloren.Kann ich Anmeldeinformationen von AWS IAM abrufen, die von einem anderen aws-Konto veröffentlicht wurden?
Wie kann ich temporäre Anmeldeinformationen von IAM Role erhalten? Ist das möglich?
hier ist mein Szenario und Code. (AWS SDK auf Java)
STS Instanz von AWS-Konto accessKey und SecretKey
AWSSecurityTokenService tokenService = new AWSSecurityTokenServiceClient(new BasicAWSCredentials(awsProperty.getAccess(), awsProperty.getSecret()));
AssumeRoleRequest machen
AssumeRoleRequest assumeRoleRequest = new AssumeRoleRequest(); assumeRoleRequest.setRoleArn(arn); assumeRoleRequest.setDurationSeconds(900); assumeRoleRequest.setRoleSessionName("for_test"); assumeRoleRequest.setExternalId("ext_id");
Holen Sie sich SessionCredentials
AssumeRoleResult roleResult = tokenService.assumeRole(assumeRoleRequest); Credentials credentials = roleResult.getCredentials(); AWSCredentials awsCredentials = new BasicSessionCredentials(credentials.getAccessKeyId(), credentials.getSecretAccessKey(), credentials.getSessionToken());
Arbeit
AmazonCloudFrontClient cloudFrontClient = new AmazonCloudFrontClient(awsCredentials);
Es wirft 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;
I-Politik wie diese machen. an IAM-Rolle und IAM-Benutzer anhängen.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Stmt1490674259000",
"Effect": "Allow",
"Action": [
"sts:AssumeRole"
],
"Resource": [
"*"
]
}
]
}
EDIT:
I getestet Politik (modifiziert) mit IAM-Politik Simulator. wählen AWS Security Token Service-AssumeRole
mit IAM Role ARN
- es erlaubt.
Übernehmen Sie eine Rolle in einem anderen AWS-Konto? Hat Ihre Rolle eine [Vertrauensbeziehung] (http://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_manage_modify.html) definiert? –
@JohnRotenstein vielen Dank! Ich bestätige Vertrauensbeziehung und fixiere Parameter. Es klappt! – myoungjin