AWS アカウントのルートユーザーはなぜ危険なのか - 権限分離の設計思想と封印の実践
AWS ルートユーザーが IAM では制限できない特権を持つ理由、ルートユーザーでしかできない操作の一覧、MFA の設定方法、Organizations のルートアクセス管理による封印戦略を解説します。
ルートユーザーの特権 - IAM では制限できない
AWS アカウントのルートユーザーは、そのアカウント内のすべてのリソースに対する完全なアクセス権を持ちます。IAM ポリシーで制限することはできません。IAM の Deny ポリシーも、Service Control Policy (SCP) も、ルートユーザーの権限を制限できません。SCP はメンバーアカウントのルートユーザーには適用されますが、管理アカウントのルートユーザーには適用されません。ルートユーザーが危険である理由は、この「制限不能性」にあります。IAM ユーザーやロールは、最小権限の原則に従って必要な権限だけを付与できます。しかし、ルートユーザーは常にすべての権限を持っており、権限を絞ることができません。ルートユーザーの認証情報が漏洩した場合、攻撃者はアカウント内のすべてのリソースにアクセスでき、すべてのデータを削除でき、アカウントの設定を変更でき、さらにはアカウント自体を閉鎖することもできます。
ルートユーザーでしかできない操作
ルートユーザーを完全に封印できない理由は、ルートユーザーでしか実行できない操作が存在するためです。代表的なものを挙げます。アカウントの設定変更 (アカウント名、メールアドレス、パスワードの変更) はルートユーザーでしか行えません。AWS サポートプランの変更もルートユーザーが必要です。S3 バケットポリシーで明示的に全員のアクセスを拒否した場合、そのバケットポリシーを修正できるのはルートユーザーだけです。IAM ユーザーが自分自身のアクセスを拒否するポリシーを設定してロックアウトされた場合も、ルートユーザーで復旧します。GovCloud アカウントの作成、Route 53 ドメインの AWS アカウント間移転、一部の AWS Marketplace サブスクリプションの管理もルートユーザーが必要です。これらの操作は頻度が低いため、ルートユーザーは「緊急時の鍵」として厳重に管理し、日常業務では使用しないのが正しい運用です。
ルートユーザーの MFA - ハードウェアキーが最強
ルートユーザーには必ず MFA (多要素認証) を設定してください。MFA なしのルートユーザーは、メールアドレスとパスワードだけでログインできるため、フィッシングやパスワードリスト攻撃に対して脆弱です。MFA のデバイスには 3 種類あります。仮想 MFA デバイス (Google Authenticator、Authy など) は最も手軽ですが、スマートフォンの紛失や故障でアクセスできなくなるリスクがあります。ハードウェア TOTP デバイス (Gemalto トークンなど) は、専用のハードウェアで OTP を生成します。スマートフォンに依存しないため、仮想 MFA より安全です。FIDO2 セキュリティキー (YubiKey など) は、最も安全な選択肢です。フィッシング耐性があり、秘密鍵がデバイスから取り出せないため、リモートからの攻撃に対して最も強固です。AWS は 2024 年からルートユーザーの MFA を必須化しました。MFA が設定されていないルートユーザーでコンソールにログインすると、MFA の設定を求められます。ルートユーザーの MFA デバイスは、金庫や耐火金庫に保管し、アクセスできる人を限定してください。
Organizations によるルートアクセスの集中管理
AWS Organizations を使用している場合、2024 年に導入された「ルートアクセスの集中管理」機能で、メンバーアカウントのルートユーザーの認証情報を削除できます。この機能を有効にすると、メンバーアカウントのルートユーザーのパスワードと MFA が削除され、ルートユーザーでのログインが不可能になります。ルートユーザーでしかできない操作 (S3 バケットポリシーの修正など) が必要になった場合は、管理アカウントから一時的なルートセッションを発行して実行します。この一時セッションは、指定された操作のみを実行でき、セッションの有効期限が切れると自動的に無効化されます。この設計により、ルートユーザーの認証情報が存在しないため、漏洩のリスクがゼロになります。必要な操作は管理アカウントから一時的に実行できるため、運用上の支障もありません。Organizations を使用していない単一アカウントの場合は、ルートユーザーのアクセスキーを削除し、強力なパスワードと MFA を設定し、日常業務では IAM ユーザーまたは IAM Identity Center のユーザーを使用してください。
ルートユーザーの監視 - 使われたら即座に検知する
ルートユーザーが使用された場合、それ自体が異常事態です。日常業務でルートユーザーを使用しない運用が確立されていれば、ルートユーザーのログインは不正アクセスの可能性を示唆します。CloudTrail はルートユーザーのすべての API 呼び出しを記録します。CloudWatch Logs にルートユーザーの API 呼び出しを検出するメトリクスフィルターを設定し、CloudWatch アラームで即座に通知する仕組みを構築してください。EventBridge (旧 CloudWatch Events) でも、ルートユーザーのコンソールログインイベントを検出できます。イベントパターンで userIdentity.type が Root のイベントをフィルタリングし、SNS トピックに通知を送信します。GuardDuty は、ルートユーザーの異常な使用パターン (通常使用されないリージョンからのログイン、通常使用されない API の呼び出し) を自動的に検出し、セキュリティ検出結果として報告します。ルートユーザーのセキュリティを体系的に学ぶには、専門書籍 (Amazon)が参考になります。