2017-03-28 4 views
0

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.

+1

Ü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? –

+0

@JohnRotenstein vielen Dank! Ich bestätige Vertrauensbeziehung und fixiere Parameter. Es klappt! – myoungjin

Antwort

1

Sie sollten Ihrer IAM-Rolle eine trust relationship hinzufügen, damit diese angenommen werden kann.

+0

danke! Es klappt! – myoungjin

Verwandte Themen