CloudTrailのJSON確認方法とEventBridgeでのイベントキャプチャ手法
EventBridgeは、AWSサービスやカスタムアプリケーションからのイベントを受け取り、指定したターゲットにルーティングするサービスです。CloudTrailと組み合わせることで、特定のイベントが発生した際に自動的に処理を行えます。
AWSリソースの変更やAPIコールをトリガーとしてEventBridgeで検出する場合、CloudTrailのJSONイベントを使用します。しかし、CloudTrailのコンソール画面での確認だけでは十分でないことがあります。
そこで、より詳細な条件でのイベントキャプチャ方法について解説します
使用するリソース
- CloudTrail
- Eventbridge
- Lambda
- CloudWatch Logs
Lambdaの作成
Lambda関数内でイベントデータをログに出力することで、どのようなイベントがキャプチャされているかを確認できます。
import json
def lambda_handler(event, context):
print(json.dumps(event))
return {
'statusCode': 200,
'body': json.dumps('Event received')
}
EventBridgeのイベントパターンを作成する
下記の例は「AWS コンソールへのログイン(ConsoleLogin イベント)が発生したとき」にトリガーするイベントパターンです。
{
"source": ["aws.signin"],
"detail-type": ["AWS Console Sign In via CloudTrail"],
"detail": {
"eventName": ["ConsoleLogin"]
}
}
EventbridgeとLambdaを連携させる
上記のEventbridgeの条件のイベントをトリガーにして、LambdaにJSONが出力されます。
その確認方法としてCloudWatch LogsでLambda関数のログを確認しにいくと、イベントの内容のJSONを詳細に把握できます
詳細な設定を行う場合のイベントパターンの例
出力されるJSONが確認できたら、特定のイベントが出た場合にEventbridgeのイベントパターンに引っ掛けることも可能になります
下記は、アカウントID、IPアドレスなどのを指定した場合の例
{
"source": ["aws.signin"],
"detail-type": ["AWS Console Sign In via CloudTrail"],
"detail": {
"eventName": ["ConsoleLogin"],
"userIdentity": {
"type": ["AssumedRole"],
"accountId": ["123456789012"],
"arn": ["arn:aws:iam::123456789012:role/SpecificRole"]
},
"sourceIPAddress": ["203.0.113.0/24"]
}
}
まとめ
CloudTrailとEventBridgeを組み合わせることで、AWS環境内のさまざまなイベントを効果的に監視・処理することができます。CloudTrailのJSONイベントを確認し、EventBridgeで広範なイベントをキャプチャする方法から、詳細な条件で特定のイベントのみをキャプチャする方法までを解説しました。これらの手法を活用して、AWSリソースの監視や自動化ができます。