新規でAWSを使うときのIAMで押さえておきたいこと

最近AWSの管理者となりAWS業務に携わるようになりました。
その影響でプライベートで適当に運用していたアカウント周りの整理も兼ねて書いていきます。

rootアカウントではログインしない

AWSを利用する際はアカウント登録します。
このアカウントはrootアカウントになります。
基本的に管理者もこのアカウントでログインしないようにします。
https://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/best-practices.html#create-iam-users

グループの作成

「IAM>グループ>新しいグループの作成」から新しいグループを作成します。
名前は全体管理者っぽい「Administrator」にしておきました。

ポリシーのアタッチでは「AdministratorAccess」を選択します。

ユーザーの追加

アクセス範囲はグループで制御できますので、ここでは各個人にログインさせるアカウントを作成します。

「IAM>ユーザー>ユーザーを追加」
ユーザー名を入力して「AWSマネジメントコンソールへのアクセス」にチェックをいれます。
パスワードの設定は運用方針に合わせればいいと思います。

事前にグループを作ったのでそののまま作成したアカウントをグループに追加することができます。
「Administrator」グループにチェックをいれてすすめてユーザーを作成します。

rootユーザーからログアウトしてIAMユーザ専用のマネジメントコンソールへのアカウントURLからログインします。
rootアカウントとのログインの違いはアカウントを指定する必要があることです。

ポリシー設定

上記でAdministratorAccessを管理者に設定しましたが、他にもポリシーはたくさんあります。
例えばDNSのRoute53管理者やレコードのリード権限のみを与えたりする場合は「AmazonRoute53FullAccess」や「AmazonRoute53ReadOnlyAccess」といったポリシーを割り当てることが可能です。

自分でポリシーを作成することもできるのでかなり柔軟に設計することができます。
かなり量がありますが一読しておきたいところかなと。

https://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/access_policies.html

ちなみにRoute53のフルアクセス権限は以下のJSONで書かれています。

スイッチロールの設定

実際の運用だとXサービスの運用チーム、Yサービスの運用チームなどがあると思います。
一つのAWSアカウントでVPCを分けて、AWSのアクセス権限を制限しようとするとアカウント管理が複雑になるので、上記のポリシー設計に加えてAWSアカウント自体を分けることも検討してみたほうがよさそうです。

複数のAWSアカウントを持つことは管理が煩雑になるのですが、ここで便利な「スイッチロール」というAWSの機能があります。

一例ですが、以下のようなアカウント制御が可能です。
スイッチロール先で割り当てるグループ・ポリシーも制御することができます。

実際にスイッチロールの設定をしてみる

まずはAWSアカウントを2つ用意します。

移行元アカウントID:111111111111
移行先アカウントID:999999999999
移行先のロール:switch-role-admin

ロール名「switch-role-admin」で作成したのですが、実際は移行先ロールに「switch-role」という言葉を入れる必要はありませんでした。今回の場合「administrator」などでよかったです。
移行元でswitch-roleと分かれば大丈夫でした。

移行先アカウントの作業

移行先でスイッチするロールを作成します。今回は移行先でAdminstratorAccessのポリシーを割り当てます。

ロール作成をクリックします。

別のAWSアカウントを選択して、移行元となるアカウントIDを入力します。
MFA(多要素認証)はセキュリティポリシーに応じて選択してください。
スイッチロール時にMFAが必要であれば、チェックをいれてください。

今回は移行先でAdministratorAccessの権限を付与します。

わかりやすいロール名を入力します。

移行元アカウントでの作業

IAM>ポリシー>JSON から移行先アカウント(ロール)への切替許可ポリシーを作成します。

今回の場合は以下のような設定になります。

https://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/id_roles_use_permissions-to-switch.html

ポリシー名は移行先が分かる名前にしておきます。今回はsubという単語をつけています。
ポリシー名:swich-role-admin-sub

ポリシーをアタッチするグループを作成します。
今回はわかりやすいようにポリシー名と合わせます。

作成したポリシーをグループにアタッチします。

IAM>ユーザ スイッチロール許可を与えるユーザをグループに追加します。

アカウントの切り替え

右上のユーザ名から「ロールの切り替え」をクリックします。

ロールの切替をクリックします。

移行先のアカウント・移行先で作成したロール名を入力します。
表示名は切替時にわかりやすい名前を入力します。

設定後はsubに切替中は右上がこのような表示になります。

移行元にいる場合は右上のユーザ名から以下のロール履歴から切替ができます。

おまけ

デフォルトだと直近5個位までしからAWS上でスイッチできないので、管理者でたくさんのAWSアカウントを管理するのは不便です。
なのでブラウザに以下のアドオンを入れると幸せになれます。
AWS Extend Switch Roles
https://chrome.google.com/webstore/detail/aws-extend-switch-roles/jpmkfafbacpgapdghgdpembnojdlgkdl

アドオンをインストール後鍵マークから「Configuration」をクリックします。
今回を例にすると以下のような設定をすれば大丈夫です。

これでAWSのスイッチロールの設定が完了です。
複数のアカウントを持つことに抵抗がある人も多いと思いますが、このスイッチロールの機能を使いこなすとAWSのアカウント管理が楽になります。
今回設定してみましたが、2つしかアカウントを持っていなくても設定したほうがいいなと感じました。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です