LoginSignup
1
3

More than 5 years have passed since last update.

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

Last updated at Posted at 2018-06-14

発端

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
1
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3