2023年11月16日付けのアップデートで、AWS CloudTrail が Amazon SQS (Simple Queue Service) のデータイベントのログ記録をサポートしました。
SQSを対象としたCloudTrailを設定、そのログ出力を確認する機会がありましたので、紹介させていただきます。
CloudTrail設定
検証のため、SQS データイベントのみを記録する証跡を新規に作成しました。
- イベントタイプ は、「データタイプ」のみとしました。
- データイベント設定で、「データイベントタイプ」はSQSを選択しました。
動作確認
以下のSQSデータイベントが CloudTrailで記録可能になりました。
- ChangeMessageVisibility
- ChangeMessageVisibilityBatch
- DeleteMessage
- DeleteMessageBatch
- ReceiveMessage
- SendMessage
- SendMessageBatch
今回、CLIを利用、SendMessage、ReceiveMessage、DeleteMessage操作時のログ確認を試みました。
SQS_URL='https://sqs.us-west-1.amazonaws.com/00000000/0000'
aws sqs send-message --queue-url ${SQS_URL} --message-body "test"
aws sqs receive-message --queue-url ${SQS_URL}
RECEIPT_HANDLE="00000000"
aws sqs delete-message --queue-url ${SQS_URL} --receipt-handle ${RECEIPT_HANDLE}
ログ結果
- CloudTrailログ出力先として設定した、CloudWatch Logsで確認を試みました。
- 今回、SQSの操作を実施した約5分後、CloudWatch Logs にログが記録されました。
send-message
{
"eventVersion": "1.09",
"userIdentity": {
"type": "AssumedRole",
"principalId": "0000:xxxx",
"arn": "arn:aws:sts::00000000:assumed-role/xxxx/xxxx",
"accountId": "00000000",
"accessKeyId": "00000000",
"sessionContext": {
"sessionIssuer": {
"type": "Role",
"principalId": "0000",
"arn": "arn:aws:iam::00000000:role/xxxx",
"accountId": "00000000",
"userName": "xxxx"
},
"attributes": {
"creationDate": "2023-11-17T03:45:34Z",
"mfaAuthenticated": "true"
}
}
},
"eventTime": "2023-11-17T05:23:23Z",
"eventSource": "sqs.amazonaws.com",
"eventName": "SendMessage",
"awsRegion": "us-west-1",
"sourceIPAddress": "54.215.xx.xx",
"userAgent": "aws-cli/2.13.32 Python/3.11.6 Linux/5.10.198-187.748.amzn2.x86_64 exec-env/CloudShell exe/x86_64.amzn.2 prompt/off command/sqs.send-message",
"requestParameters": {
"messageBody": "HIDDEN_DUE_TO_SECURITY_REASONS",
"queueUrl": "https://sqs.us-west-1.amazonaws.com/00000000/0000"
},
"responseElements": {
"messageId": "0000-0000-0000-0000-ff97c87f20df",
"mD5OfMessageBody": "098f6bcd4621d373cade4e832627b4f6"
},
"requestID": "0000-0000-0000-0000-2d2296f1d470",
"eventID": "0000-0000-0000-0000-48e5fe12c6ef",
"readOnly": false,
"resources": [
{
"accountId": "00000000",
"type": "AWS::SQS::Queue",
"ARN": "arn:aws:sqs:us-west-1:00000000:0000"
}
],
"eventType": "AwsApiCall",
"managementEvent": false,
"recipientAccountId": "00000000",
"eventCategory": "Data",
"tlsDetails": {
"tlsVersion": "TLSv1.2",
"cipherSuite": "ECDHE-RSA-AES128-GCM-SHA256",
"clientProvidedHostHeader": "sqs.us-west-1.amazonaws.com"
},
"sessionCredentialFromConsole": "true"
}
receive-message
{
"eventVersion": "1.09",
"userIdentity": {
"type": "AssumedRole",
"principalId": "0000:xxxx",
"arn": "arn:aws:sts::00000000:assumed-role/xxxx/xxxx",
"accountId": "00000000",
"accessKeyId": "00000000",
"sessionContext": {
"sessionIssuer": {
"type": "Role",
"principalId": "0000",
"arn": "arn:aws:iam::00000000:role/xxxx",
"accountId": "00000000",
"userName": "xxxx"
},
"attributes": {
"creationDate": "2023-11-17T03:45:34Z",
"mfaAuthenticated": "true"
}
}
},
"eventTime": "2023-11-17T05:23:25Z",
"eventSource": "sqs.amazonaws.com",
"eventName": "ReceiveMessage",
"awsRegion": "us-west-1",
"sourceIPAddress": "54.215.xx.xx",
"userAgent": "aws-cli/2.13.32 Python/3.11.6 Linux/5.10.198-187.748.amzn2.x86_64 exec-env/CloudShell exe/x86_64.amzn.2 prompt/off command/sqs.receive-message",
"requestParameters": {
"queueUrl": "https://sqs.us-west-1.amazonaws.com/00000000/0000"
},
"responseElements": null,
"requestID": "0000-0000-0000-0000-541f9c0a8b88",
"eventID": "0000-0000-0000-0000-9315d686f17d",
"readOnly": true,
"resources": [
{
"accountId": "00000000",
"type": "AWS::SQS::Queue",
"ARN": "arn:aws:sqs:us-west-1:00000000:0000"
}
],
"eventType": "AwsApiCall",
"managementEvent": false,
"recipientAccountId": "00000000",
"eventCategory": "Data",
"tlsDetails": {
"tlsVersion": "TLSv1.2",
"cipherSuite": "ECDHE-RSA-AES128-GCM-SHA256",
"clientProvidedHostHeader": "sqs.us-west-1.amazonaws.com"
},
"sessionCredentialFromConsole": "true"
}
delete-message
{
"eventVersion": "1.09",
"userIdentity": {
"type": "AssumedRole",
"principalId": "0000:xxxx",
"arn": "arn:aws:sts::00000000:assumed-role/xxxx/xxxx",
"accountId": "00000000",
"accessKeyId": "00000000",
"sessionContext": {
"sessionIssuer": {
"type": "Role",
"principalId": "0000",
"arn": "arn:aws:iam::00000000:role/xxxx",
"accountId": "00000000",
"userName": "xxxx"
},
"attributes": {
"creationDate": "2023-11-17T03:45:34Z",
"mfaAuthenticated": "true"
}
}
},
"eventTime": "2023-11-17T05:23:49Z",
"eventSource": "sqs.amazonaws.com",
"eventName": "DeleteMessage",
"awsRegion": "us-west-1",
"sourceIPAddress": "54.215.xx.xx",
"userAgent": "aws-cli/2.13.32 Python/3.11.6 Linux/5.10.198-187.748.amzn2.x86_64 exec-env/CloudShell exe/x86_64.amzn.2 prompt/off command/sqs.delete-message",
"requestParameters": {
"receiptHandle": "00000000",
"queueUrl": "https://sqs.us-west-1.amazonaws.com/00000000/0000"
},
"responseElements": null,
"requestID": "0000-0000-0000-0000-6ad0acfb9dd9",
"eventID": "0000-0000-0000-0000-fb4ede9cc8d4",
"readOnly": false,
"resources": [
{
"accountId": "00000000",
"type": "AWS::SQS::Queue",
"ARN": "arn:aws:sqs:us-west-1:00000000:0000"
}
],
"eventType": "AwsApiCall",
"managementEvent": false,
"recipientAccountId": "00000000",
"eventCategory": "Data",
"tlsDetails": {
"tlsVersion": "TLSv1.2",
"cipherSuite": "ECDHE-RSA-AES128-GCM-SHA256",
"clientProvidedHostHeader": "sqs.us-west-1.amazonaws.com"
},
"sessionCredentialFromConsole": "true"
}
まとめ
Amazon SQS の データイベントのログが利用可能になりました。
SQSのアクセス元について詳細な情報を確認可能になった事で、古いSDKや、アクセスキーを利用したアクセス元の特定などに役立つと予想されます。
なお、一部の項目は記録対象から除外、「HIDDEN_DUE_TO_SECURITY_REASONS」となる事が確認できました。 こちらは 2023年9月にログ記録がサポートされていた SNSと同様の仕様と推測されます。 監査証跡としてSQSのメッセージ本文まで残す必要がある場合にはご注意ください。