[Amazon Web Services] Centralize root access 使ってみた

年度末が迫り、定例作業で忙しい今日この頃。
単純な管理作業を削減し、やりたいことの時間を確保したいものです。
そこで、本日はAWSルートユーザ管理を効率化するサービス「Centralize root access」についてまとめておきます。

## ルートユーザ管理の課題
みなさん、ルートユーザ使っていますでしょうか。

#### ルートユーザとは
一言でいうと、AWSアカウントにおけるすべての操作を行うことができる特権ユーザです。

>Amazon Web Services (AWS) アカウントを初めて作成する際に提供するメールアドレスとパスワードは、アカウントのすべての AWS サービスとリソースにアクセスできるルートユーザーの認証情報です。
https://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/id_root-user.html

#### ルートユーザの使用機会は少ない
特権ユーザのため、通常の変更作業では使用が推奨されておりません。
では、どんな時にルートユーザが必要になるかというと、ざっくり以下の場面になります。

- アカウント設定変更　アカウント名、E メールアドレス、アカウントのクローズ
- 未使用のリザーブドインスタンスの販売登録
- 誤操作により、ルートユーザ以外でアクセス不可となったリソースポリシーの変更
https://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/id_root-user.html#id_root-user-access-management


ほうほう、という感じですが、
上記の作業を頻繁に行うユーザはかなり少ないと思っています。

#### ルートユーザ管理は手間がかかる
一方で、特権ユーザということもあり、
通常、ルートユーザには下記のセキュリティ設定とその運用が必要となります。

- 新規AWSアカウント作成時のMFA設定作業
- MFAデバイスの管理
- ルートユーザパスワードのローテーション作業

使用機会の割に管理作業は手間がかかります。

## Centralize root access 使ってみた
前置きが長くなりましたが、その課題、
Centralize root access で解決することができます。

#### Centralize root access とは
AWS Organizationsで導入された、複数のAWSアカウントにまたがるルートユーザーを一元的に管理および制御する新機能。簡単に言うと、管理アカウントにルートユーザ権限を集約してしまいます。

■Centralize root access でできること■
- Organizationsメンバーアカウントのルートユーザの削除
- Organizations管理アカウントによる、メンバーアカウントでの特権アクション実行
（特権アクション）誤って設定され、ルートユーザでしか修正作業不可となったリソースベースポリシーの修正

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3822026/770ad8be-69ef-4869-a3af-76547de445ca.png)

https://dev.classmethod.jp/articles/root-access-management/

#### Centralize root access 有効化
Centralize root access の有効化は非常に簡単で、
IAMコンソール>ルートアクセス管理にてすぐに有効化することが出来ます。
※有効化するだけでは、メンバーアカウントのルートユーザは削除されません。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3822026/fc346f76-9ca6-4484-aba6-65c11c6c3321.png)

#### メンバーアカウントでの特権アクション実行
有効化後、ルートアカウント管理画面が表示され、
管理アカウント→メンバーアカウントへ特権アクションを一元的に実行することができます。
ここの特権アクションの一つとして、ルートユーザ削除を選択することができます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3822026/8fdd24d8-3c3f-4486-905c-e18170dbc9f9.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3822026/8f3bcdcd-7056-4c32-90e5-4d07b175eb2b.png)

#### ルートユーザ削除
実際にルートユーザを削除し、メンバーアカウントに特権ユーザでログインしようとすると以下のように弾かれます。パスワードの回復も禁止されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3822026/1a9fe77b-1f2c-43d7-9675-9f1d39bffe20.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3822026/8c44533d-0a4b-488a-b869-28c302ded760.png)

## 使用開始時の注意点
上記のようにCentralize root access 非常に簡単な手順でルートユーザを削除し、
AWS環境のセキュリティ向上、管理作業の効率化を図ることができます。
ただし、使用開始時には少しだけ注意点もあるため、記載しておきます。

#### 既存メンバーアカウントのルートユーザーは自動的に削除されない
上記でお気づきの方もいらっしゃるかと思いますが、
Centralize root access を単純に有効化するだけでは既存メンバーアカウントのルートユーザは削除されません。
削除のためには、マネコン上で一つひとつ手動削除していく必要があります。
※新規にメンバーアカウントを追加する場合は、デフォルトでルートユーザは削除された状態でAWSアカウントが作成されます。

数十、数百単位でのAWSアカウント管理が当たり前のこの時代、非常にめんどいです。

そんな時は、プログラム化・スクリプト化しましょう。
サンプルコードも公開中です。
https://aws.amazon.com/jp/blogs/news/centrally-managing-root-access-for-customers-using-aws-organizations/

#### 新規メンバーアカウントにはルートユーザが作成されないため、初回ログインにルートユーザを使用できない。
新規メンバーアカウントにはルートユーザはいません。
そのため初回の環境構築ではメンバーアカウント作成時に指定したIAMロールを使用して、スイッチロールを行いましょう。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3822026/5df31ef6-ad72-47be-9535-5af101793ce7.png)


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3822026/cef9c413-7d6f-46e8-8c78-6fa236917302.png)

#### 場面は少ないものの、各メンバーアカウントのルートユーザでしかできない設定はある。
本記事では伝わりにくかった感が否めませんが、
Centralize root access 有効化後、管理アカウントは無制限に特権アクションを実行できるわけではありません。
管理アカウントによる特権アクションでは、以下のようなことはできません。
ルートユーザ削除後、もし以下を実行したい場合にはメンバーアカウントにルートユーザを再作成する必要があります。

- アカウント設定変更　アカウント名、E メールアドレス、アカウントのクローズ
- 未使用のリザーブドインスタンスの販売登録
- 誤操作により、ルートユーザ以外でアクセス不可となったリソースポリシーの変更

## まとめ
、ということでCentralize root accessについてまとめてみました。
多少の注意点はありますが、定例作業撲滅運動の一員としてまずはルートユーザ管理の楽をしてみませんか。（適当だな。）本記事がどなたかの参考になれば幸いです。