2017-11-08 5 views
0

私はアプリケーションが存在するアカウントでEC2記述を持つIAMプロファイルを持つEC2インスタンス上で実行しています。また、別のアカウントのAssumeRoleも持っています(そのロールはEC2の記述も許可します)。ここでは主なアカウントの私のIAMの役割は次のようになります。AWS Java SDK:EC2インスタンスプロファイルのAssumeRole?

{ 
    "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}" 
      ] 
     } 
    ] 
} 

ここでセカンダリアカウントからIAMロールです:

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

は基本的に私は何をする必要があるか、両方からEC2インスタンスを取得することですアカウント。これは現在のSDKで可能ですか?現在のところ、プリンシパルアカウントからインスタンスを取得するだけです。

答えて

1

はい、SDKを使用できます。メイン(デフォルト)アカウントの資格情報を使用してEC2インスタンスを一覧表示したら、STSを使用してAssumeRole()を呼び出してクロスアカウントの資格情報を取得します。それらのEC2インスタンスをリストします。

+0

AssumeRole()の呼び出しでは、ARN /セッション名を指定する必要がありますか?アプリケーションが実行されているインスタンスプロファイルからそれらを取得する方法はありますか? – jkinz

+0

インスタンスには1つのロールしか割り当てることができません。別の役割を引き受けるには、完全なARNを指定する必要があります。どの言語を使用しますか? –

+0

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

3

ec2:AssumeRoleを追加すると、アカウント間でコマンドが自動的に伝達されることはありません。

インスタンス情報を取得するAWSアカウント&地域ごとにec2:DescribeInstancesを一度呼び出す必要があります。

EC2のIAMロールは、プライマリアカウントにアクセスできるようにします。 ec2:DescribeInstancesをこれらの資格情報だけで呼出すと、その口座だけのEC2インスタンス情報が得られます。

次に、セカンダリアカウントの新しい資格情報を受け取るには、ec2:AssumeRoleに電話する必要があります。これらのアカウントを取得したら、そのアカウントを使用してec2:DescribeInstancesに電話してください。

関連する問題