Amazon Connect の緊急管理者ログインをリアルタイムに検知する

Amazon Connect の緊急管理者ログインをリアルタイムに検知してみたい背景

Amazon Connect には「緊急管理者ログイン」というログイン方法があります。
「緊急管理者ログイン」についてドキュメントでは以下のように記載しています。

緊急管理者ログイン - Amazon Connect

ただし、緊急の場合は、AWS アカウントの認証情報を使用して Amazon Connect コンソールからログインできます。例えば、次のような場合は、この方法でログインする必要があります。
・ Amazon Connect 管理者パスワードを忘れてしまい、リセットする他の Amazon Connect 管理者がいない場合。
・ 誰かが誤って Amazon Connect 管理者 セキュリティプロファイルを削除した場合。
...
重要
毎日使用する場合は、常にインスタンス URL を使用してログインすることを強くお勧めします。この記事で説明する手順は、インスタンス URL の使用がオプションではない場合に、緊急アクセスにのみ使用してください。

上記の記述のように、緊急時のみに利用するログイン方法となっています。
一方で、管理者権限を有しているので、悪用されると大変なことになります。

Amazon Connect にはログイン/ログアウトレポート機能があり、こちらでエージェントによるログイン/ログアウトだけでなく、「緊急管理者ログイン」によるログイン/ログアウトも確認が可能です。
しかし、「緊急管理者ログイン」のリアルタイムな検知には向かないため、別の方法がないか調べてみました。

Amazon Connect の緊急管理者ログインをリアルタイムに検知するにはどうすればいいか

Amazon Connect エージェントイベントストリームを使う

Amazon Connect には「Amazon Connect エージェントイベントストリーム」という Amazon Connect インスタンス内のエージェントによるアクティビティを Amazon Kinesis Data Streams に配信する機能です。
「Amazon Connect エージェントイベントストリーム」についてドキュメントでは以下のように記載しています。

Amazon Connect エージェントのイベントストリーム - Amazon Connect

Amazon Connect エージェントのイベントストリームは、Amazon Connect インスタンス内のエージェントによるアクティビティを、ほぼリアルタイムでレポートするための Amazon Kinesis のデータストリームです。ストリームに発行されたイベントには、次の CCP イベントが含まれます。
・ エージェントのログイン
・ エージェントのログアウト
・ エージェントが問い合わせに接続する
・ エージェントのステータスの変更 (問い合わせに対応できる [使用可能]、[休憩中] または [トレーニング] など)。

上記の記述には、「エージェントのログイン/ログアウト」と「緊急管理者ログイン」については明記されていませんが、検証してみたところ、「緊急管理者ログイン」のログイン/ログアウトに関しても配信されることを確認できました。

後は、Amazon Connect エージェントイベントストリーム を Kinesis Data Streams に配信する設定を行い、コンシューマーとして、EventType:LOGIN を検出した場合に通知を行うようなアプリケーションを Lambda などで構築することで「緊急管理者ログイン」のリアルタイム検知が可能になります。

緊急管理者ログイン時のデータ
Copied!
{
    "AWSAccountId": "126721485485",
    "AgentARN": "arn:aws:connect:ap-northeast-1:xxxxxxxxxxx:instance/xxxxxxx-yyyy-zzzz-wwww-1111111111/agent/5da9e1aa-1234-45cb-asdf-4b2fdsa5af2e",
    "CurrentAgentSnapshot": {
        ...
    },
    "EventId": "3e00cbd8-xxxx-xxxx-xxxx-e4329a6e907b",
    "EventTimestamp": "2021-12-22T03:26:20.146Z",
    "EventType": "LOGIN",
    "InstanceARN": "arn:aws:connect:ap-northeast-1:xxxxxxxxxxx:instance/xxxxxxx-yyyy-zzzz-wwww-1111111111",
    "PreviousAgentSnapshot": {
       ...
    },
    "Version": "2017-10-01"
}

Amazon Connect の緊急管理者ログインをリアルタイムに検知する おまけ

「緊急管理者ログイン」の検証時に CloudTrail のログを確認したらそれらしいログが記録されていることが確認できました。

  • eventNameAdminGetEmergencyAccessToken のログの件数と、ログイン/ログアウトレポートの結果の件数が一致することを確認済み。
  • ログアウトを示すログはなかった。ログアウト自体 Amazon Connect Instace 側でやっているから CloudTrail に出ないのかも。
  • 通常のエージェントのログインを示すようなログは確認できなかった。ログイン URL が Amazon Connect Instace 側だから CloudTrail に出ないのかも。
緊急ログインと思われるログ
Copied!
{
  "eventVersion": "1.08",
  "userIdentity": {
    ...
  },
  "eventTime": "2021-10-22T01:20:48Z",
  "eventSource": "connect.amazonaws.com",
  "eventName": "AdminGetEmergencyAccessToken",
  ...
}