Switch Roleの履歴が・・・消えた・・・? って焦る前に入れておくと幸せになれるAWS Extend Switch Rolesの紹介

Switch Roleの履歴が・・・消えた・・・? って焦る前に入れておくと幸せになれるAWS Extend Switch Rolesの紹介

一体いつからSwitch Roleの履歴が永続的に残るものだと錯覚していた。

というわけで錯覚していた同僚が履歴が消えたことに絶望していたので、 そうなる前に導入しておくと便利なAWS Extend Switch Rolesの紹介です。

Switch Roleってなんぞ?

以下のブログで一発なのでそれを引用したいと思います。

Switch Roleとは複数のAWSアカウントを持っている時にいちいちログアウト - ログインを繰り返さなくてもRoleを設定しておくだけで 簡単に別のアカウントにスイッチできる機能です

【小ネタ】複数のSwitch Roleでのクロスアカウントアクセスをブラウザのブックマークで管理する

弊社でもAWS環境を扱う際は基幹となるAWS アカウントから払い出されたIAM ユーザーに一度ログインし、 その後案件ごとのAWSアカウントのIAM RoleにSwitchする運用になっています。

この場合、担当する案件数が増えれば増えるほど切り替えをしなくてはいけないSwitch Roleが増えることになり、デフォルトのManagement Consoleの履歴では管理しきれないことになります。

Switch Roleの履歴が消えた・・・

様々なツールの検証等でうまく動かない時に、Cookieの削除を求められることがあります。 ツールの検証が目的なのでなにも考えずに削除を行い、その後Management Consoleを開くと絶望することになります。

勘の良い方は気づいたかも知れません。 Switch Roleの履歴はCookieを用いて管理されているため、Cookieの削除を行うと消えてしまうことになります。(冒頭で紹介した同僚もまさにこのような流れでした。)

消えてしまうとSwitch RoleのURLを思い出す必要がありますが、そのアカウントに入る方法が履歴のリンクのみとなると、入る手段を失ったことになります。

こうなると、そのアカウントに入れる他のメンバーにURLを再度教えてもらうといったことを行う必要があり非常に焦ることになります。

そうなる前に入れておくと便利なGoogle Chrome拡張・FireFox Add-onであるAWS Extend Switch Rolesの紹介です。

AWS Extend Switch Rolesの導入

導入自体は以下のサイトから導入することが可能です。

また、Chromium 版のEdgeでも導入することが可能です。

導入が完了したら以下のようなアイコンがブラウザのURLの横に表示されていれば導入は完了です。

AWS Extend Switch Roles導入後

基本的な使い方

Switch Role用のURLが払い出された際にまず、AWS Extend Switch Rolesに登録をしてしまいましょう。 払い出されたRole入れることを確認後、登録することを忘れると上記のようなケースに遭遇した瞬間泣くしかありません。 そうなる前に、まず登録しましょう。

登録する情報として、Switch先のRoleのARNが必要です。 Switch先のRoleがIAMにアクセス可能であれば、ManagementConsoleから該当のロールのARNを確認し、 クリップボードにコピーでARNをコピーするのが一番容易かと思います。

ManagementConsoleからロール ARNをクリップボードにコピー

IAM にアクセスできない場合は、 Switch RoleのURLから割り出すことが可能です。 払い出されたURLが下記だったと仮定します。

https://signin.aws.amazon.com/switchrole?roleName=switch-target-role&account=123456789012

上記の場合、RoleのARNは以下になります。 arn:aws:iam::123456789012:role/switch-target-role

urlに含まれるroleName=の後ろがrole/の後ろの値となり、account=の後ろの値がiam:: の後ろの値となります。

AWS Extend Switch Roleをクリックし、Configurationから以下のように記載しSaveを押下します。

[profile TargetRole]
role_arn = arn:aws:iam::123456789012:role/switch-target-role

また、この際に既存の履歴とAWS Extend Switch Roleの設定で表示される履歴の両方が表示されるのを避けるために、Setting内のHide original role historyにチェックを入れています。 この項目にチェックを入れることで、AWS Extend Switch Roleで設定したSwitch Roleの項目のみが表示されることになります。

正しく設定されていると、ManagementConsoleにアクセスした際に、Switch Roleの履歴のところに以下のように表示されます。 すでにManagement Consoleが表示されている場合は、ブラウザを更新すると表示されるかと思います。

AWS Extend Switch Roles導入後

基本的な使い方はこれでOKです。以下は応用的な使い方になります。

便利な使い方 - aws/configを元に手軽に生成する

こちらのブログに記載されている方法になります。

「AWS Extend Switch Roles」の設定をaws/configを元に手軽に生成してみる

cat ~/.aws/config | awk '/^(role_arn.*|[profile .*])$/ { print $0 }' | pbcopy

上記のコマンドで上記で入力するrole_arn = arn:aws:iam::123456789012:role/switch-target-role 形式の文字列をaws/configから生成することが可能です

便利な使い方 - Switchするロールごとの色を設定する

Management Consoleの履歴機能でも6色から設定できましたが、 AWS Extend Switch Rolesではカラーコードの指定でRoleごとの色を設定することが可能です。

この場合は先程のProfileに以下のように追加します。

[profile TargetRole]
role_arn = arn:aws:iam::123456789012:role/switch-target-role
color = FF0000

color =の後ろはカラーコード表記となります。 上記の作例では真っ赤になることになります。

真っ赤

便利な使い方 - Switch元のIAM ユーザーごとに表示するRoleを制御する

Switch元のIAM ユーザーが複数になったことを想定してみます。 その際に、ログインしているIAM ユーザーからSwitchできないRoleの表示を抑制したいといったことになるかと思います。 そのような機能もAWS Extend Switch Rolesでは提供されていたりします。

まずSwitch元のIAM ユーザーのアカウント名を取得します。 ManagementConsoleでSwitch元のIAM ユーザーでログインした際にユーザー名を表示した際に表示される値になります。AWSアカウントのエイリアスを用いてIAM ユーザーにログインしている場合、その値になります。

IAMユーザー アカウント

次に取得したアカウント名をAWS Extend Switch RolesのConfigurationに記載します。 これをAWS Extend Switch Rolesではbase accountと称します。

[baseaccount1]
aws_account_id = 123456789012
[baseaccount2]
aws_account_id = your-account-alias

SwitchするRoleのbase accountの情報をsource_profileという項目で設定します。

以下の作例の場合、Base1-Role1baseaccount1で設定されたAWSアカウント123456789012のIAMユーザーでログインしたときのみ表示され、 Base2-Role1baseaccount2で設定されたAWSアカウントのエイリアスがyour-account-aliasのIAMユーザーでログインしたときのみ表示されることになります。

[baseaccount1]
aws_account_id = 123456789012
[baseaccount2]
aws_account_id = your-account-alias
[Base1-Role1]
role_arn = arn:aws:iam::234567890123:role/Role1
source_profile = baseaccount1
[Base2-Role1]
role_arn = arn:aws:iam::234567890123:role/Role1
source_profile = baseaccount2

このようにすることでSwitch元のIAMユーザーが複数ある場合であっても、SwitchするRoleのみ表示すると言ったことが可能になります。

まとめ

AWS Extend Switch Rolesの基本的な使い方と実際に自分が使ったことのある便利機能の紹介でした。 AWS Extend Switch Rolesは精力的にアップデートもされているため、また何か自分が使ってみて便利な機能があったときは紹介したいと思います。