ルートアクセス管理から「パスワード回復を許可」してAWSアカウントのルートユーザーの認証情報を回復してみた
こんにちは、臼田です。
みなさん、ルートユーザーを封印してますか?(挨拶
今回はどうしてもやんごとなき理由により封印されているルートユーザーを解放する必要がある際の、ルートアクセス管理からルートユーザーのパスワードを作成する手順を紹介します。
概要
AWSアカウントを作成する際に、最初に作成するユーザーがルートユーザーです(AWSアカウント単体で作成した際)。あるいは、AWS Organizations環境では「アカウント所有者の E メールアドレス」としてルートユーザーとなるメールアドレスを登録します。
ルートユーザーは非常に権限が強く制御が基本的にできないため、「MFAを設定して封印して使わないこと」が長いことベストプラクティスでした。
しかし、2024年末のre:Inventにて待望の「ルートアクセス管理」機能がリリースされ、AWS Organizationsの管理アカウントあるいは委任された管理者アカウントからルートユーザーの認証情報を削除できるようになりました!
これにより、ベストプラクティスは「そもそもルートユーザーを使えなくする(封印する)」となりました。
通常はそれでよいのですが、どうしてもやんごとなき理由により、この封印を解かねばならない場合が、基本的にはこれっぽっちも無いのですが、そういう時にはこの手順を回していく必要があります。
というわけでルートアクセス管理から「パスワード回復を許可」して実際にパスワードを使える状態にしていきます。
やってみた
※通常ルートユーザーのパスワードを使えるようにする事はデメリットしかありませんのでぜったいにやらないでください
さて、やんごとなき理由により仕方なくルートユーザーのパスワードを設定して、サインインできるようにしていきます。
現代のAWS Organizationsではもうあたりまえのように使う機能であるルートアクセス管理機能ですが、こちらにより新規に作成するAWSアカウントのルートユーザーは最初から作成していないことが多いのではないでしょうか?
しかし、この状態でルートユーザーを利用するために「パスワードリセット」の手順を行うと以下のようにエラーとなり実行できません。
パスワードの回復に失敗しました
AWS アカウントのパスワードの回復は無効になっています。管理者にサポートを依頼してください。
というわけでこれを許可していく必要があります。
ルートアクセス管理からパスワードの回復を許可する
AWS Organizationsと連携する機能ですが、ルートアクセス管理は管理アカウントのIAMのマネジメントコンソールから利用します。

ルートアクセス管理を開くと、該当アカウントのルートユーザー認証情報が「存在しない」となっています。
本来はこれが正しい状態ですが、仕方なく変更していきます。
「特権的なアクションを実行する」を押します。
実行できる特権的なアクションから「パスワード回復を許可」を選択して進めます。

許可されて、「ルートユーザーはパスワードを忘れた場合のフローでパスワードを回復できるようになりました。」と表示されました。

この状態でルートユーザー認証情報が「存在する」に変わっています。
フォーカスを当てると、コンソールパスワードのみ「存在する」となっているようです。

この状態でパスワードリセットの手順が実行できるということですね。
パスワードを回復する
ではパスワードを回復してみます。ルートユーザーのサインイン画面でメールアドレスを入力してパスワード入力画面に進みます。
「パスワードをお忘れですか?」を押します。

パスワードの回復のため、指示通りに文字を入力してロボットの確認を行います。

問題なければリセット用のメールが飛びます。

メールを確認すると以下のメールが届きます。
- タイトル: アマゾン ウェブ サービス パスワードアシスタント
- 送信元: password-reset-no-reply@verify.signin.aws

リンクを開くと新しいパスワードを設定する画面となりますので、設定します。

無事リセットできたらサインインを行います。

今回はサインインした段階で、リスクがあると判断されたのか本人確認のために検証コードがメールで送られました。

検証コードのメールとして以下のメールが届きます。
- タイトル: ご本人確認のお願い
- 送信元: no-reply@verify.signin.aws

検証コードを入力して進めると、今度はMFAを設定する画面が出てきます。
最近はルート認証情報を使う場合にはMFAが必須とされていて、すぐには強制されませんが35日以内の設定が必要です。というわけでこれも設定しましょう。一瞬だけだからと言って設定しないのは良くないですね。絶対スキップしないで設定しましょう。最近ならパスキーが簡単でおすすめですね。

というわけでMFAの設定も完了しました。これでルートユーザーでAWSマネジメントコンソールへアクセスができます。

ルートユーザーの認証情報を削除する
やんごとなき理由によりルートユーザーのパスワードを回復しましたが、いつまでもその状態は良くないですよね。
再び管理アカウントからルートアクセス管理の画面を確認すると、以下のようにコンソールパスワードの他にMFAデバイスの設定もされていることが確認できます。

しかしそれだけでは良くないです。
「特権的なアクションを実行する」を押して進むと、「ルートユーザー認証情報を削除」の選択肢が出ていて、削除が可能となっています。

ルートユーザーのパスワードを使う必要がなくなったら、すぐにでもここから良い状態にしましょう。
まとめ
本来のAWSセキュリティのベストプラクティスから外れますが、やんごとなき理由によりルートユーザーの封印を解き、パスワードを設定する手順を確認しました。
昔はルートユーザーの管理が大変でしたが、今は認証情報を削除して持たなくて良くなっているので大変よい時代です。ぜひルートユーザーの認証情報を封印して楽な管理を謳歌しましょう。








