フェイス・ソリューション・テクノロジーズ株式会社 IS 本部 OS ユニットの Saki@猫好き です。AWS 活用していますか?
今日は、スイッチロールについて書いてみたいと思います。複数アカウントを利用されている方であれば是非使ってみて頂きたい AWS の便利機能の一つです。
複数アカウントをまとめて管理する便利な AWS Organizations については、こちらをご参考ください。
スイッチロールとは?
複数のアカウントで AWS を利用されている方は多いと思います。プロジェクトごとに、部署ごとに、AWS アカウントを作成される方は多いのではないでしょうか。弊社でも、私個人でも、複数の AWS アカウントを利用しています。
例えば、A アカウントで作業を行った後、引き続き B アカウントで作業を行う場合、どうしますか?
一度、サインアウトをして、サインイン画面でアカウント ID とユーザー名、パスワードを入力し直してサインインする。専用の MFA ツールを立ち上げる。とても手間がかかります。アカウント ID やパスワードの管理、MFA ツールの管理など、セキュリティ的にも課題が残ります。
A アカウントを利用するロール(権限)から、B アカウントを利用するロール(権限)へスイッチすることで、アカウントを変更する手間から解放されるだけでなく、セキュリティ面でも安全に AWS アカウントを利用出来るようになる仕組みが、スイッチロールです。
スイッチロールを利用するための設定方法
接続先アカウントでの作業
1. 接続先アカウントの IAM コンソール画面から、「ロール」を選択します。

2. 「ロールを作成」を選択します。

3. 信頼されたエンティティタイプ > AWS アカウント を選択し、下部の別の AWS アカウントに、接続元の AWS アカウント IDを入力します。
入力が終わったら、「次へ」を選択します。

4. ユーザーに許可するポリシーを選択します。(作成することも出来ます)
ここでは、EC2 インスタンスの読み取りだけが出来るポリシー AmazonEC2ReadOnlyAccess を付けてみます。
ご自身の用途にあったポリシーを選択ください。

5. ロール名と、そのロールの簡単な説明を入力します。
ここでは、接続元アカウント A からスイッチする、という意味を込めて、「switchFrom-A」というロール名にしました。
入力が済みましたら、「ロールの作成」を選択します。

接続元アカウントでの作業
1. 接続元アカウントの IAM コンソール画面から、「ポリシー」を選択します。

2. 「ポリシーを作成」を選択します。

3. 「JSON」のタブを選択します。ここにポリシーを記述していきます。

4. ポリシーを記述します。ポイントは Resource の項目です。
arn:aws:iam::接続先アカウント ID :role/先ほど作成したロール名

{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"sts:AssumeRole"
],
"Resource": [
"arn:aws:iam::123456789012:role/switchFrom-A"
]
}
]
}
5. タグが必要であれば、タグを追加します。
「次のステップ:確認」を選択します。

6. ポリシーの名前と、その説明を入力します。
ここでは、接続先アカウント B へスイッチする、という意味を込めて、「switchTo-B」というポリシー名にしました。
入力が済みましたら、「ポリシーの作成」を選択します。

7. スイッチロールを行うユーザーにポリシーをアタッチします。
IAM コンソール画面の左ペインから、「ユーザー」を選択し、スイッチロールを行うユーザーを選択します。

8. 「既存のポリシーを直接アタッチ」を選択し、先ほど作成した「switchTo-B」というポリシーを選択します。

9. 確認画面で間違いないことを確認したら、「アクセス権限の追加」を選択します。

10. 「switchTo-B」というポリシーがアタッチされました。

11. 実際に、スイッチロールを実行してみます。
マネジメントコンソール画面右上のユーザー名が表示されているところをクリックし、「ロールの切り替え」を選択します。

12. 接続先アカウント IDと、ロール名(今回は「switchFrom-A」)を入力します。
表示名と色については、ご自由に選択ください。「ロールの切り替え」を選択します。

13. スイッチロールし、接続元アカウントから接続先アカウントへスイッチすることができました。

14. 次回以降は、「ロール履歴」から、ワンクリックでスイッチロールが出来るようになります。
※端末の Cookie に保存されていますので、Cookie を削除すると「ロール履歴」も削除されます。

ロール(権限)に間違いがないか確認してみる
先ほどスイッチロールに使用したロール「switchFrom-A」には、EC2 インスタンスの読み取りだけが出来るポリシー AmazonEC2ReadOnlyAccess をアタッチしていました。EC2 以外の読み取りが出来ないことを確認してみます。
EC2 コンソール画面を開いてみます。
特にエラー表示などなく、EC2 コンソール画面を見ることができます。

EC2 インスタンスを起動してみます。
「You are not authorizesd to perform this operation.」
実行権限がないと怒られました。
※インスタンス起動設定画面は開いちゃいます。ここは少し戸惑うかもしれません。

S3 コンソール画面を開いてみます。
「バケットを一覧表示するアクセス許可がありません」

問題なく、AmazonEC2ReadOnlyAccess がアタッチされていそうです。AWS では、「最小権限の原則」がベストプラクティスとして掲げられています。アタッチするポリシーは、必要最小限のもののみにするようにしましょう。
以上で、セキュリティ面でも安全に AWS アカウントを利用出来るイメージが持てたのではないかと思います。
最後に
いかがでしたでしょうか。手順が多く、大変な作業に見えるかもしれませんが、慣れればそんなに時間はかかりません。一度設定してしまえば、複数の AWS アカウントを利用するのに大変便利な機能です。
是非、挑戦してみてください!
コメント