2017-11-08 1 views
0

Ich habe eine Anwendung, die auf einer EC2-Instanz ausgeführt wird, die ein IAM-Profil mit EC2-Beschreibung für das Konto aufweist, in dem sie sich befindet. Es hat auch AssumeRole für ein anderes Konto (diese Rolle gewährt EC2 auch beschreiben). Hier ist, was meine IAM-Rolle auf dem Hauptkonto wie folgt aussieht:AWS Java SDK: AssumeRole vom EC2-Instanzprofil?

{ 
    "Version": "2012-10-17", 
    "Statement": [ 
     { 
      "Effect": "Allow", 
      "Action": "ec2:Describe*", 
      "Resource": "*" 
     }, 
     { 
      "Sid": "{SID}", 
      "Effect": "Allow", 
      "Action": [ 
       "sts:AssumeRole" 
      ], 
      "Resource": [ 
       "arn:aws:iam::{ACCT_NUM}:role/{ROLE_NAME}" 
      ] 
     } 
    ] 
} 

Hier ist die IAM Rolle aus dem sekundären Konto ist:

{ 
    "Version": "2012-10-17", 
    "Statement": [ 
     { 
      "Effect": "Allow", 
      "Action": "ec2:Describe*", 
      "Resource": "*" 
     } 
    ] 
} 

Im Grunde, was muss ich tun, ist es, die EC2-Instanzen von beiden bekommen Konten. Ist das mit dem aktuellen SDK möglich? Momentan bekomme ich nur die Instanzen vom Hauptkonto.

Antwort

1

Ja, Sie können mit dem SDK. Nachdem Sie die EC2-Instanzen mithilfe der Anmeldeinformationen aus dem Hauptkonto (Standardkonto) aufgelistet haben, rufen Sie mithilfe von STS AssumeRole() auf, um Anmeldeinformationen für das Cross-Konto abzurufen. Listen Sie dann diese EC2-Instanzen auf.

+0

Für den Aufruf von AssumeRole() muss ich den ARN/Session-Namen angeben? Gibt es sie trotzdem aus dem Instanzprofil, auf dem die Anwendung läuft? – jkinz

+0

Sie können einer Instanz nur eine Rolle zuweisen. Um eine andere Rolle zu übernehmen, müssen Sie den vollständigen ARN angeben. Welche Sprache wird verwendet? –

+0

http://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-api.html –

3

Das Hinzufügen von ec2:AssumeRole leitet Befehle nicht automatisch über die Konten weiter.

Sie müssen ec2:DescribeInstances für jeden AWS-Account einmal anrufen & Region, von der Sie Instanzinformationen abrufen möchten.

Ihre IAM-Rolle für EC2 ermöglicht Ihnen den Zugriff auf das primäre Konto. Wenn Sie nur diese Anmeldeinformationen mit ec2:DescribeInstances aufrufen, erhalten Sie nur Informationen zur EC2-Instanz für dieses Konto.

Als Nächstes müssen Sie ec2:AssumeRole anrufen, um neue Anmeldeinformationen für das sekundäre Konto zu erhalten. Sobald Sie diese haben, verwenden Sie diese, um ec2:DescribeInstances für das sekundäre Konto aufzurufen.