こんにちは!大崎です!
みなさんはルートユーザーのログイン検知をしたいと考えたことはないでしょうか?
「権限も強く、普段使用しないルートユーザーのログイン検知をしたいが設定がわからない…」
今回はそんな疑問にお答えします。
本記事でわかること
- ルートユーザーとは
- ルートユーザーのログイン検知の設定方法
- 動作検証
ルートユーザーとは
- AWSアカウントを作成したときに最初に作られる特権ユーザーです。
- メールアドレスとパスワードでログインするアカウントで、すべてのAWSサービスとリソースに対する完全なアクセス権限を持っています。
- IAMポリシーやSCPの制限を受けません。
特徴
- 削除できません。
- 権限は変更不可(常にフルアクセス)です。
- MFA(多要素認証)を設定することが推奨されています。
セキュリティ上のベストプラクティス
- MFAを必ず有効化
→ 不正ログイン防止のためです。 - アクセスキーを作成しない
→ プログラムからの利用はIAMユーザーやロールを使うようにします。 - 日常業務では使わない
→ IAMユーザーやロールを作成しての運用が推奨されます。 - ルートユーザーのメールアドレスを安全に管理
→ パスワードとメールのセキュリティを強化のためです。
ルートユーザーでしかできない操作
- AWSアカウントの閉鎖
- 支払い情報の変更
- サポートプランの変更
- 一部のサービスの有効化(例:AWS Organizationsの初期設定)
ルートユーザーのログイン検知の設定方法
以下の手順でルートユーザーログイン検知設定を行います。上記ベストプラクティスにも記載の通り、基本は使用しないものになりますが、不正ログイン等の際には気づけるようにしておくことが重要です。今回はCloudTrailとCloudWatchを使用してログイン検知の設定を行います。
①「CloudTrail」より「証跡」から「証跡の作成」を選択します。

②CloudWatchLogsを有効にして任意のロググループとIAMロールを選択後、「次へ」を選択します。
※その他の設定項目は任意の設定で問題ありません。
※IAMロールではlogs:CreateLogStreamとlogs:PutLogEventsが許可されている必要があります。

③「ログイベントの選択」にて「管理イベント」を選択、「管理イベント」にて「読み取り」「書き込み」を選択後、「次へ」を選択します。

④設定内容を確認し「証跡の作成」を選択します。

⑤「CloudWatch」より「Log Management」から②で設定したロググループを選択し、「メトリクスフィルター」より「メトリクスフィルターを作成」を選択します。

⑥フィルターパターンに以下を設定し「Next」を選択します。
{ $.userIdentity.type = "Root" && $.eventName = "ConsoleLogin" && $.responseElements.ConsoleLogin = "Success" }
⑦「メトリクス値」に「1」、デフォルト値に「0」を設定し「Next」を選択します。(その他フィルター名は任意の値を設定します。)

⑧設定内容を確認し「メトリクスフィルターを作成」を選択します。

⑨⑧で作成したメトリクスフィルターを選択し「アラームを作成」を選択します。

⑩静的で0より大きいことを条件に設定します。
※その他の設定項目は任意の設定で問題ありません。

⑪アラーム発生時(ルートユーザーログイン検知時)にアラートメールを送信したい宛先を含むSNSトピックを選択し「次へ」を選択します。

⑫アラーム名等任意の値を設定し「次へ」を選択します。

⑬設定内容を確認し「アラームの作成」を選択します。

動作検証
実際にルートユーザーでログインしてみると以下アラートメールが届きました。
想定通りルートユーザーログイン検知できています。

まとめ
今回は、ルートユーザーログイン検知方法についてご紹介しました。
上記の対応を行うことで、
不要なログインがあった際の迅速な対応や、
ルートユーザーのログイン情報漏洩等で不正にログインされた際に気づくことができるなど、
セキュリティリスクの低減が可能になります。
運用やシステム構成に合わせて、ぜひこの仕組みを活用してみてください。


コメント