Closed6

awscliでスイッチロールする

not75743not75743

登場人物

  • クライアント
  • アカウントA(スイッチ元)
  • アカウントB(スイッチ先)

流れ

  • アカウントAでIAMユーザを用意する
  • アカウントBでスイッチ先のロールを用意する
    • スイッチ元のAssumeRoleを許可する
    • スイッチ先で使用したい権限をつける
  • profileを追加する
  • 試す

構成図

not75743not75743

アカウントBでスイッチ先のロールを用意する

アカウントAのIAMユーザを許可します。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::<AccountID>:user/<スイッチ元ユーザ>"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}

ポリシーはアカウントBで操作したいリソースのものをつけましょう

not75743not75743

profileを設定する

awscliのためにprofileを設定します。

/path/to/.aws/config
[profile assumerole-test]
region = ap-northeast-1
output = json
role_arn = arn:aws:iam::<AccountID>:role/<スイッチ先ロール名>
source_profile = <スイッチ元プロファイル>

プロファイルdefaultを使用していたらsource_profiledefaultとなります

not75743not75743

動作確認

--profileで指定して、返事が返ってきたらOK

$ aws sts get-caller-identity --profile assumerole-test 
{
    "UserId": "略",
    "Account": "<AccountID>",
    "Arn": "arn:aws:sts::<AccountID>:assumed-role/<スイッチ先ロール名>/botocore-session-xxxxxxxxxxxx"
}
このスクラップは2023/05/27にクローズされました