個人で使う分には全く必要ないと思いますが、ゆえあってAWS Organizationsを始めてみます。Oragnizationsの記事はQiitaあたりに結構あるので、あくまでも個人メモ。
事前準備
- Oragnizationsを始める場合、いきなり既存アカウントを使うのではなく、新規アカウントを作成して始めたがいいらしいので、とりあえずAWSアカウントを作成
- これがマスターアカウントになります
- MFAの設定をまずはお忘れなく
- CloudTrailが使えるようになるまでにはちょっと時間がかかるので注意(48時間ほどかかった)
Oragnizations作成
では、Organizationsの作成を行います。右上のアカウント名をクリックして、リストから「マイ組織」をクリック。
Organizationsのトップが表示されるので「組織の作成」をクリック。
組織が作成されます。同時にアカウントが正しいかをチェックするためにマスターアカウントのメールアドレスに確認メールが飛びます。
"Verify your email address"をクリックして確認します。
メールアドレスの確認が完了しました。
これでOrganizationsの準備が完了しました。
組織の設計
では、まず組織を設計しましょう。とりあえずこんな感じで今回はやってみたいと思います。
- マスターアカウント
- アカウントの管理
- 請求と支払い管理
- 全アカウントに対するAdministratorAccess
- 複数の環境に合わせて、OUと小アカウントを作成する
- 本番環境用アカウント
- ステージング環境用アカウント
- 開発環境用アカウント
- それぞれのアカウントの切り替えは今回はAWS Single Sign-Onを使ってやってみる
子アカウントの作成
では小アカウントを作成していきます。「アカウントの追加」をクリックします。
既存アカウントを招待することもできますが、今回は新規に作成します。「アカウントの作成」をクリック。
アカウント名とメールアドレスを入力して、「作成」をクリックします。IAMロール名は一旦空で置いておきます。
これを繰り返してそれぞれのアカウントを作成します。こんな感じになりました。
それぞれのメールアドレスにアカウントが作成されたというメールも飛んでいます。
AWS Single Sign-Onの有効化と設定
次に、AWS Single Sign-Onにアクセスします。
AWS SSOは、2020/6/23現在、東京リージョンでは提供されていませんのでこういう画面がでます。
バージニア北部リージョンに切り替えます。
AWS SSOのページが表示されます。SSOを有効化します。1分程度かかります。
有効化が完了すると以下の画面が表示されます。IDソースは今回AWS SSOを使いますので特に設定しません。グループを追加しましょう。
ユーザーとグループはとりあえずこんな感じで追加したいと思います。(良い例でなくてすいません)
- グループ
- admin(インフラ担当)
- dev(開発担当)
- ユーザー
- adminグループ
- admin01
- admin02
- devグループ
- dev01
- dev02
- adminグループ
ではグループを作成します。「グループの作成」をクリック。
グループ名・説明を入れて「作成」をクリック。
同様にdevグループも追加するとこんな感じになります。次にユーザーを作成していきましょう。「ユーザー」をクリック。
「ユーザーを追加」をクリック。
ユーザー名やメールアドレス等を入力します。パスワードはユーザ側に設定をおまかせすることにしましょう。「次:グループ」をクリックします。
グループを設定して、「ユーザーを追加」をクリック。
ユーザーが作成されました。同様にしてユーザーを作成していきます。
とりあえず4アカウント作りました。ではAWSアカウントと紐付けていきます。「AWSアカウント」をクリック。
Organizationsに登録されているAWSアカウントの一覧が表示されます。とりあえずadminグループはマスターアカウント以外と紐付けるようにしてみます。マスターアカウント以外にチェックを入れて「ユーザーの割り当て」をクリックします。
SSOのユーザー一覧が表示されます。今回はグループで割り当てますので、「グループ」のタブをクリックします。
adminグループを選択して、「次:アクセス権限セット」をクリックします。
アクセス権限セットは、各AWSアカウント内でのアクセス権限をSSO側で管理します。実際にはIAMロールで各AWSアカウント内に作成されるようなのでスイッチロールする形になると思います。「新しいアクセス権限セットを作成」をクリックします。
アクセス権限セットは、カスタムで作ることもできますが、予め用意されたものから選択することも可能です。今回は用意されたものを使いましょう。adminグループにNetworkAdministratorの権限セットを付与したいと思います。「既存の職能ポリシーを使用」を選択、「NetworkAdministrator」を選択して「作成」をクリックします。
権限セットが追加されました。再度「新しいアクセス権限セットを作成」をクリックして更に追加することもできるようです。同様にして「DatabaseAdministrator」「SystemAdministrator」も追加しておきます。
必要なアクセス権限セットを追加したら、チェックを入れて「完了」をクリックします。
SSOグループ・ユーザとAWSアカウントとの紐付けが完了しました。「AWSアカウントに進む」をクリックします。
同じようにdevグループも紐付けます。こちらは、
- adminとdevの違いを確認するため、こちらはステージング環境・開発環境アカウントと紐付ける -権限セットは「System Administrator」のみとする
というふうにしておきます。とりあえずSSOの設定はこれで終わりです。
AWS Single Sign-Onでのログイン
では実際のユーザーになりきってパスワードを設定してみましょう。まずSSOユーザには、以下のようなメールが送信されていますので、これに従ってパスワードを設定します。「Accept Invitation」をクリックします。
パスワード設定画面が表示されますので、パスワードを設定して「ユーザの更新」をクリックします。
設定完了です。「続行する」をクリックします。
初回のみ「続行する」でSSOログイン後の画面が表示されます。実際にはメールに記載されていたポータル画面にアクセスしてログインすることになると思います。「AWS Account」をクリックします。
先程設定したとおり、アクセスできる環境≒AWSアカウントが3つ表示されていますね。本番用のアカウントをクリックしてみます。
3つの権限セットが表示されていますね・・・そうか、権限セット≒IAMロールにスイッチ、なので、複数の権限セットが付与されるということではなくて、どの権限セットのIAMロールにスイッチしてログインするか、ということですね。であれば、Adminグループの場合は「PowerUserAccess」とかにしておいた方が良かったですねぇ。ま、とりあえず気にせず、「NetworkAdministrator」の「Management console」をクリックします。
マネジメントコンソールが表示されました。アカウント情報を見てみましょう。
アカウントは伏せていますが、数字で表示されていますのでちょっとどの環境かわかりにくいですね。一応、本番環境のAWSアカウントになっています。
では権限セットが正しく設定されている見てましょう。NetworkAdministratorなのでVPC等の設定はできるはずですね。VPCの画面を開いて、VPCを作成してみます。
できました。
次にEC2インスタンスを立ち上げようとすると、権限がないのでエラーになります。
ではSystemAdministratorならどうでしょうか?SSOの画面からSystemAdministratorでManagement consoleにアクセスしてみます。
こちらだとEC2の起動も問題なくできますね。
ではdevユーザでSSOしてみるとどうなるでしょうか?
はい、ちゃんとSSOグループ・ユーザに紐付けられたAWSアカウントしか見えなくなっています。権限セットも同じですね。
そしてマスターアカウントのCloudTrailにSSOで各アカウントにログインした履歴が残っているようですね
とりあえずここまで。以下はもうちょっと調べます。
- 監査用アカウントのCloudTrail設定
- OUとか使ってもうちょっと細かく制御
- 小アカウントの削除とか