Amazon SQSのデータイベントがCloudTrailで記録可能になりました
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のメッセージ本文まで残す必要がある場合にはご注意ください。