EC2からAWS Tools for PowerShellを利用する際に、クロスアカウントアクセスロールを利用して別のAWSアカウントの操作をする方法を書いていきます。
具体的には、
アカウントAのAWSの情報を、
アカウントBのEC2上で実行するPowerShellから、
AWS Tools for PowerShellにて操作する、
方法を例を使いながら書いていきます。
アカウントA作業
まずはアカウントAの作業です。アカウントAのManagement Consoleにログオンします。
クロスアカウントロール作成
MyCrossAccountRoleというロールを作成します。
クロスアカウントアクセスのロールを選択していきます。
アカウントIDにはアカウントBのアカウントID(12桁)を入れます。
適当なポリシーを選択しロールにアタッチします。
内容を確認してロールを作成します。ロールのARNを覚えておきましょう。
arn:aws:iam::999999999999:role/MyCrossAccountRole
これでアカウントA側の作業は完了です。アカウントBのEC2上のPowerShellからアクセスした際には、ここで作ったロールの権限でアクセスされます。
アカウントB作業
アカウントBのEC2インスタンスからPowerShellを使ってアカウントAを操作してみます。
EC2ロールにポリシー追加
アカウントBのManagement Consoleにログオンして、以下のポリシーを追加しておきます。このポリシーを付与したロールをPowerShellを実行するEC2に割り当ててください。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": ["sts:AssumeRole"], "Resource": ["*"] } ] }
PowerShellスクリプトでアカウントAを操作
EC2から以下のスクリプトを実行します。
#適当なリージョンを設定してください $region = "ap-northeast-1" #アカウントAで作成したロールのARN $roleARN = "arn:aws:iam::999999999999:role/MyCrossAccountRole" #ログなどセッションを特定するために使われる名前です。任意の文字列でOK。 $sessoinName = "MySession" $sts = Use-STSRole -Region $region -RoleArn $roleARN -RoleSessionName $sessoinName Get-IAMUsers -Credential $sts.Credentials
アカウントB上のEC2インスタンスからアカウントAのIAMユーザの一覧が取得できたと思います。なお、Credentialの引数にNull値を渡した場合はアカウントBのIAMユーザが取得されます。