Edited at

[AWS] マネジメントコンソールへのIAMユーザーログイン時に発生するイベント

More than 1 year has passed since last update.


発端

CloudWatch Events を使って、AWSマネジメントコンソールへのIAMユーザーのログイン失敗を検知していました。

ですが、どうやら「非存在ユーザー」のログイン失敗を検知できなくなっているようです。ここ1〜2ヶ月の間に。

というわけで、目的↓


目的

IAMユーザーのマネジメントコンソールログイン時、成功/失敗でそれぞれどのようなイベントが発生するかを確認する。


調査方法

CloudWatch Events で SignIn のイベントを検知し、Lambdaに流してログ出力します。

※以前のイベントパターンとの比較もできればよかったのですが、わかりやすくログを残してない&遡って調べる気力は無いので、やりません。

AWS-Login-Event_Architecture.png


CloudWatch Event Rule のイベントパターン

{

"detail-type": [
"AWS Console Sign In via CloudTrail"
]
}


調査パターン&結果

この表で伝わるでしょうか・・・。2行目までヘッダです。

IAMユーザー

認証

結果(発生イベントから抜粋)

ユーザー有無
MFA設定
パスワード
MFA
結果
eventName
responseElements

非存在
-
-
-
×NG
CheckMfa
{CheckMfa:Failure}

存在
なし
◯正
-
◯OK
ConsoleLogin
{ConsoleLogin:Success}

×誤
-
×NG
ConsoleLogin
{ConsoleLogin:Failure}

あり
◯正
◯正
◯OK
CheckMfa
{CheckMfa:Success}

ConsoleLogin
{ConsoleLogin:Success}

×誤
×NG
CheckMfa
{CheckMfa:Success}

ConsoleLogin
{ConsoleLogin:Failure}

×誤
◯正
×NG
CheckMfa
{CheckMfa:Success}

ConsoleLogin
{ConsoleLogin:Failure}

×誤
×NG
CheckMfa
{CheckMfa:Success}

ConsoleLogin
{ConsoleLogin:Failure}


まとめ


  • MFA設定があるIAMユーザーのみ、イベントが2つ発生する。


  • eventName : CheckMfa イベントは


    • MFAが設定されていれば、入力したワンタイムパスワードが正しくても誤っていても responseElements : {CheckMfa:Success} となる。

    • IAMユーザーが存在しない場合のみresponseElements : {CheckMfa:Failure} となる。




  • eventName : ConsoleLogin


    • IAMユーザーが存在しない場合は発生しない。(以前は発生していたはず!)

    • パスワード認証とMFA認証のどちらが誤であっても結果は responseElements : {ConsoleLogin:Failure}

    • それ以外(必要な認証方法すべてが正)の場合に responseElements : {ConsoleLogin:Success}



フローチャートも作ってみようと思いましたが、ちょっと面倒だったのでやめました。

IAMユーザーあり&MFA設定なしの場合に何故 Success でイベントが発生しないのかがイマイチ釈然としない。


ログイン失敗を検知したかったら

下記の判定を行えばよさそうです。

responseElements.CheckMfa = Failure

or
responseElements.ConsoleLogin = Failure