PowerShellでIAM roleにSwitchする

AWS運用自動化サービス「Cloud Automator」

技術4課の鎌田(裕)です。
マネジメントコンソールでのアクセス時にSwitch Roleを使いこなしてらっしゃる方は多いかと思います。
しかし、コマンドベースでお使いの方はなかなか少ないかも知れません。

この記事では、PowerShellでIAM RoleにSwitchして、作業をする時の方法と、必要な準備をご紹介します。

手順としては、以下の流れになります。

  1. IAMユーザーを作る
  2. IAMユーザーにSwich Roleの権限だけを与える
  3. 実際の作業をする時の権限を持ったIAM Roleを作る
  4. PowerShellにAccess Keyの情報を登録
  5. 実際にSwichしてみる

そもそもIAM Roleってなんだ、と思われた方は、別記事にてIAM roleの解説をしていますので、そちらを併せてお読みください。
本件の手順は、AWSドキュメントのこちらの手順も併せてお読みください。

PowerShellでSwitch Roleの手順

1.IAMユーザーを作る

まずはSwich Role専用のユーザーを作ります。Switch Roleの権限はJSONで書く必要があるため、一旦ポリシーのアタッチはせずに進めましょう。
プログラムからのアクセスにチェックを入れるのをお忘れなく。

アクセスキーが発行されたら、保存しましょう。この後の手順で使います。



2.IAMユーザーにSwitch Roleの権限だけを与える

以下のような内容のポリシーで、Swich Roleの権限を持たせられます。
3.の手順で作成するRole名をここで決めておく必要があります。また、付けたRole名は忘れないようにしましょう。この後の手順に必要です。

{
“Version”: “2012-10-17”,
“Statement”: {
“Effect”: “Allow”,
“Action”: “sts:AssumeRole”,
“Resource”: “arn:aws:iam::AWSアカウント番号:role/role名”
}
}

1.で作成したユーザーをクリックしてアクセス権限のタブを表示し、のインラインポリシーを作成して、JSONで上記の内容を貼り付け、権限を割り当てます。




3.実際の作業をする時の権限を持ったIAM Roleを作る

Switch RoleするRoleを作成します。同一AWSアカウントのSwitch Roleの時でも、Roleを作る時は「別のAWSアカウント」のところを選択してください。

アカウントIDを入力し、必要な権限のポリシーをアタッチし、名前を付けたら作成します。


4.PowerShellにAccess Keyの情報を登録

PowerShellを起動して、1.で作成したアクセスキーを登録します。
以下のコマンドを実行します。

Set-AWSCredential -AccessKey 発行されたアクセスキー -SecretKey 発行されたシークレットキー -StoreAs アクセスキーを保存するストア名

これで準備が整いました。

5.実際にSwitchしてみる

実際にSwitchしてみましょう。以下のようなコマンドを実行します。これで、登録したアクセスキーを使って、Roleから一時アクセスキーを取得しています。

$creds = (Use-STSRole -RoleArn “arn:aws:iam::AWSアカウント番号:role/role名” -RoleSessionName test -ProfileName アクセスキーを保存したストア名).Credentials

実際にコマンド実行後、変数の中身を見ると、

ちゃんとアクセスキーが取れて、期限も設定されていますね。

発行された一時アクセスキーを使う

発行された一時アクセスキーを使う時は、各コマンドを実行する時に必ず、

-Credential $creds

というオプションを付ければOKです。

おわりに

Power Shellでも簡単に、Switch Roleが出来ることがお分かりいただけると思います。
Roleを使いこなして、よきAWSライフを!

AWS運用自動化サービス「Cloud Automator」