Cloudtrail証跡の管理イベントとデータイベントは同じファイルに出力されますか?
困っていた内容
1つのCloudtrail証跡に対して、管理イベントとデータイベント両方を取得するよう設定し、S3バケットを保存先としようとしています。
管理イベントとデータイベントのログは同じファイルに保存されますか?別々のファイルに保存されますか?
どう対応すればいいの?
1つのCloudTrail証跡に管理イベントとデータイベント両方を取得するよう設定すると、それぞれ別のログファイルとしてS3に保存されます。
一方で、生成されるログファイル名だけでは管理イベントとデータイベントの区別が難しいものとなっています。
やってみた
管理イベントを取得しているCloudTrail証跡に対して、データイベントについても取得するよう設定し、生成されるログファイルを確認します。
- CLoudTrail証跡の「データイベント」を編集し、データイベントを有効にします。データイベントソースとしてS3を設定します。今回は検証のため、読み取りバケットを任意のバケット1つに限定しています。
-
データイベントソースに設定したS3バケット内のオブジェクトに対して、任意のデータイベントアクションを実行します。(例:DeleteObject,GetObject,PutObjectなど)
-
CloudTrail証跡の保存先として設定されているS3バケット内のオブジェクトを確認します。該当の操作時間におけるログファイルを確認すると以下のように、管理イベントとデータイベントで別れていることが確認できます。また、判別方法としては、"eventCategory"が"management"のものは管理イベント、"Data"のものはデータイベントと判別することが可能です。
管理イベントログ一部抜粋
{
"Records": [
{
"eventVersion": "1.11",
"userIdentity": {
"type": "AssumedRole",
"principalId": "AROAXXXXXXXXXXXXXXX:XXXX-user",
"arn": "arn:aws:sts::1111111111:assumed-role/XXXX-user/XXXX-user",
"accountId": "1111111111",
"accessKeyId": "ASIAXXXXXXXXXXXXXXX",
"sessionContext": {
"sessionIssuer": {
"type": "Role",
"principalId": "AROAXXXXXXXXXXXXXXX",
"arn": "arn:aws:iam::1111111111:role/XXXX-user",
"accountId": "1111111111",
"userName": "XXXX-user"
},
"attributes": {
"creationDate": "2025-05-23T06:37:32Z",
"mfaAuthenticated": "true"
}
}
},
"eventTime": "2025-05-23T08:36:12Z",
"eventSource": "s3.amazonaws.com",
"eventName": "GetBucketVersioning",
"awsRegion": "ap-northeast-1",
"sourceIPAddress": "14.13.240.128",
"userAgent": "[Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36]",
"requestParameters": {
"bucketName": "pythonslack-searchresultsbucket-XXXXXXXXXX",
"Host": "s3.ap-northeast-1.amazonaws.com",
"versioning": ""
},
"responseElements": null,
"additionalEventData": {
"SignatureVersion": "SigV4",
"CipherSuite": "TLS_AES_128_GCM_SHA256",
"bytesTransferredIn": 0,
"AuthenticationMethod": "AuthHeader",
"x-amz-id-2": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"bytesTransferredOut": 113
},
"requestID": "XXXXXXXXXX",
"eventID": "923803fb-cdfb-4485-ba03-b991efd5ebc2",
"readOnly": true,
"resources": [
{
"accountId": "1111111111",
"type": "AWS::S3::Bucket",
"ARN": "arn:aws:s3:::pythonslack-searchresultsbucket-XXXXXXXXXX"
}
],
"eventType": "AwsApiCall",
"managementEvent": true,
"recipientAccountId": "1111111111",
"eventCategory": "Management",
"tlsDetails": {
"tlsVersion": "TLSv1.3",
"cipherSuite": "TLS_AES_128_GCM_SHA256",
"clientProvidedHostHeader": "s3.ap-northeast-1.amazonaws.com"
}
},
{
"eventVersion": "1.09",
"userIdentity": {
"type": "AssumedRole",
"principalId": "AROAXXXXXXXXXXXXXXX:XXXX-user",
"arn": "arn:aws:sts::1111111111:assumed-role/XXXX-user/XXXX-user",
"accountId": "1111111111",
"accessKeyId": "ASIAXXXXXXXXXXXXXXX",
"sessionContext": {
"sessionIssuer": {
"type": "Role",
"principalId": "AROAXXXXXXXXXXXXXXX",
"arn": "arn:aws:iam::1111111111:role/XXXX-user",
"accountId": "1111111111",
"userName": "XXXX-user"
},
"attributes": {
"creationDate": "2025-05-23T06:37:32Z",
"mfaAuthenticated": "true"
}
}
},
"eventTime": "2025-05-23T08:36:21Z",
"eventSource": "notifications.amazonaws.com",
"eventName": "ListNotificationEvents",
"awsRegion": "ap-northeast-1",
"sourceIPAddress": "14.13.240.128",
"userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36",
"requestParameters": {
"maxResults": "100",
"locale": "ja_JP"
},
"responseElements": null,
"requestID": "936b6112-30ce-48fa-ad82-1a193156b54a",
"eventID": "4b5fc35a-dda1-4165-84e6-c157dec6eca4",
"readOnly": true,
"eventType": "AwsApiCall",
"managementEvent": true,
"recipientAccountId": "1111111111",
"eventCategory": "Management"
},
{
"eventVersion": "1.11",
"userIdentity": {
"type": "AssumedRole",
"principalId": "AROAXXXXXXXXXXXXXXX:XXXX-user2",
"arn": "arn:aws:sts::1111111111:assumed-role/XXXX-user2/XXXX-user2",
"accountId": "1111111111",
"accessKeyId": "ASIAXXXXXXXXXXXXXXX",
"sessionContext": {
"sessionIssuer": {
"type": "Role",
"principalId": "AROAXXXXXXXXXXXXXXX",
"arn": "arn:aws:iam::1111111111:role/XXXX-user2",
"accountId": "1111111111",
"userName": "XXXX-user2"
},
"attributes": {
"creationDate": "2025-05-23T08:33:34Z",
"mfaAuthenticated": "true"
}
}
},
"eventTime": "2025-05-23T08:36:16Z",
"eventSource": "s3.amazonaws.com",
"eventName": "GetBucketVersioning",
"awsRegion": "ap-northeast-1",
"sourceIPAddress": "104.28.243.105",
"userAgent": "[Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36]",
"requestParameters": {
"bucketName": "members-cloudtrail-1111111111",
"Host": "s3.ap-northeast-1.amazonaws.com",
"versioning": ""
},
"responseElements": null,
"additionalEventData": {
"SignatureVersion": "SigV4",
"CipherSuite": "TLS_AES_128_GCM_SHA256",
"bytesTransferredIn": 0,
"AuthenticationMethod": "AuthHeader",
"x-amz-id-2": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"bytesTransferredOut": 193
},
"requestID": "XXXXXXXXXX",
"eventID": "155475cb-9f47-4305-bcd3-9382d8dc8203",
"readOnly": true,
"resources": [
{
"accountId": "1111111111",
"type": "AWS::S3::Bucket",
"ARN": "arn:aws:s3:::members-cloudtrail-1111111111"
}
],
"eventType": "AwsApiCall",
"managementEvent": true,
"recipientAccountId": "1111111111",
"eventCategory": "Management",
"tlsDetails": {
"tlsVersion": "TLSv1.3",
"cipherSuite": "TLS_AES_128_GCM_SHA256",
"clientProvidedHostHeader": "s3.ap-northeast-1.amazonaws.com"
}
}
]
}
データイベントログ一部抜粋
{
"Records": [
{
"eventVersion": "1.11",
"userIdentity": {
"type": "AWSService",
"invokedBy": "cloudtrail.amazonaws.com"
},
"eventTime": "2025-05-23T08:37:19Z",
"eventSource": "s3.amazonaws.com",
"eventName": "PutObject",
"awsRegion": "ap-northeast-1",
"sourceIPAddress": "cloudtrail.amazonaws.com",
"userAgent": "cloudtrail.amazonaws.com",
"requestID": "XXXXXXXXXX",
"eventID": "db9b00cc-3631-39aa-871f-bbe2b8a78014",
"readOnly": false,
"resources": [
{
"accountId": "1111111111",
"type": "AWS::S3::Bucket",
"ARN": "arn:aws:s3:::XXXX-cloudtrail-1111111111"
},
{
"type": "AWS::S3::Object",
"ARN": "arn:aws:s3:::XXXX-cloudtrail-1111111111/AWSLogs/1111111111/CloudTrail/ap-northeast-1/2025/05/23/1111111111_CloudTrail_ap-northeast-1_20250523T0835Z_XXXXXXXXXX.json.gz"
}
],
"eventType": "AwsApiCall",
"managementEvent": false,
"recipientAccountId": "1111111111",
"sharedEventID": "01dada74-b38b-4b7c-880a-c110465313a2",
"vpcEndpointId": "cloudtrail.amazonaws.com",
"vpcEndpointAccountId": "cloudtrail.amazonaws.com",
"eventCategory": "Data"
},
{
"eventVersion": "1.11",
"userIdentity": {
"type": "AWSService",
"invokedBy": "cloudtrail.amazonaws.com"
},
"eventTime": "2025-05-23T08:38:31Z",
"eventSource": "s3.amazonaws.com",
"eventName": "PutObject",
"awsRegion": "ap-northeast-1",
"sourceIPAddress": "cloudtrail.amazonaws.com",
"userAgent": "cloudtrail.amazonaws.com",
"requestID": "XXXXXXXXXX",
"eventID": "f1f84d68-c267-35ec-a35b-033e007de37b",
"readOnly": false,
"resources": [
{
"accountId": "1111111111",
"type": "AWS::S3::Bucket",
"ARN": "arn:aws:s3:::XXXX-cloudtrail-1111111111"
},
{
"type": "AWS::S3::Object",
"ARN": "arn:aws:s3:::XXXX-cloudtrail-1111111111/AWSLogs/1111111111/CloudTrail/us-east-1/2025/05/23/1111111111_CloudTrail_us-east-1_20250523T0840Z_XXXXXXXXXX.json.gz"
}
],
"eventType": "AwsApiCall",
"managementEvent": false,
"recipientAccountId": "1111111111",
"sharedEventID": "6f248f8d-de4b-403d-a712-38b70ac8bfe2",
"eventCategory": "Data"
},
{
"eventVersion": "1.11",
"userIdentity": {
"type": "AWSService",
"invokedBy": "cloudtrail.amazonaws.com"
},
"eventTime": "2025-05-23T08:38:35Z",
"eventSource": "s3.amazonaws.com",
"eventName": "PutObject",
"awsRegion": "ap-northeast-1",
"sourceIPAddress": "cloudtrail.amazonaws.com",
"userAgent": "cloudtrail.amazonaws.com",
"requestParameters": {
"bucketName": "XXXX-cloudtrail-1111111111",
"Host": "XXXX-cloudtrail-1111111111.s3.ap-northeast-1.amazonaws.com",
"x-amz-acl": "bucket-owner-full-control",
"x-amz-server-side-encryption": "AES256",
"key": "AWSLogs/1111111111/CloudTrail/eu-north-1/2025/05/23/1111111111_CloudTrail_eu-north-1_20250523T0840Z_XXXXXXXXXX.json.gz"
},
"requestID": "XXXXXXXXXX",
"eventID": "9fbd7d6b-4013-3ea5-827c-f99c9a09fc5b",
"readOnly": false,
"resources": [
{
"accountId": "1111111111",
"type": "AWS::S3::Bucket",
"ARN": "arn:aws:s3:::XXXX-cloudtrail-1111111111"
},
{
"type": "AWS::S3::Object",
"ARN": "arn:aws:s3:::XXXX-cloudtrail-1111111111/AWSLogs/1111111111/CloudTrail/eu-north-1/2025/05/23/1111111111_CloudTrail_eu-north-1_20250523T0840Z_XXXXXXXXXX.json.gz"
}
],
"eventType": "AwsApiCall",
"managementEvent": false,
"recipientAccountId": "1111111111",
"sharedEventID": "9da528d9-118f-4862-89c5-d1ac742326c3",
"eventCategory": "Data"
}
]
}
まとめ
検証の結果、1つのCloudTrail証跡で管理イベントとデータイベントの両方を有効にした場合でも、それぞれは別々のログファイルとしてS3バケットに保存されることが確認できました。
ログファイル内の各イベントは、以下の方法で区別できます:
- 管理イベント: "eventCategory": "Management"
- データイベント: "eventCategory": "Data"
これにより、CloudTrailログを分析する際に、管理イベントとデータイベントを適切に識別して処理することが可能になります。
参考資料