CloudTrail SerDe - Amazon Athena

CloudTrail SerDe

AWS CloudTrail は、Amazon Web Services アカウントの AWS API コールとイベントを記録するサービスです。CloudTrail は、暗号化されたログを生成し、それらを Amazon S3 に保存します。ログの LOCATION を指定することで、Athena を使用してこれらのログを Amazon S3 から直接クエリできます。

Athena で CloudTrail ログをクエリするには、ログからテーブルを作成し、CloudTrail SerDe を使用してログデータをデシリアライズします。

CloudTrail SerDe の使用に加えて、異なる SerDe を使用したり、JSON からデータを抽出したりすることが必要になるインスタンスがあります。CloudTrail ログの特定のフィールドは、サービスに応じて異なる変数のデータ形式を持つ場合がある STRING 値です。その結果、CloudTrail SerDe はそれらを予想通りにデシリアライズできなくなります。以下のフィールドをクエリするには、データのパターンを識別して OpenX JSON SerDe など、別の SerDe を使用します。また、これらのフィールドからデータを取得するには、JSON_EXTRACT 関数を使用します。詳細については、「JSON からのデータの抽出」を参照してください。

  • requestParameters

  • responseElements

  • additionalEventData

  • serviceEventDetails

SerDe 名

CloudTrail SerDe

ライブラリ名

com.amazon.emr.hive.serde.CloudTrailSerde

以下の例は、架空のログファイルのセットに CloudTrail SerDe を使用して、それらに基づくテーブルを作成します。

この例では、フィールド requestParametersresponseElements、および additionalEventData は実際には JSON の STRUCT の一種ですが、CREATE TABLE ステートメントでは、json_extract 関数を使用してデータを取得できるように、それらを STRING として指定します。詳細については、「JSON からのデータの抽出」を参照してください。

CREATE EXTERNAL TABLE cloudtrail_logs ( eventversion STRING, userIdentity STRUCT< type:STRING, principalid:STRING, arn:STRING, accountid:STRING, invokedby:STRING, accesskeyid:STRING, userName:STRING, sessioncontext:STRUCT< attributes:STRUCT< mfaauthenticated:STRING, creationdate:STRING>, sessionIssuer:STRUCT< type:STRING, principalId:STRING, arn:STRING, accountId:STRING, userName:STRING>>>, eventTime STRING, eventSource STRING, eventName STRING, awsRegion STRING, sourceIpAddress STRING, userAgent STRING, errorCode STRING, errorMessage STRING, requestParameters STRING, responseElements STRING, additionalEventData STRING, requestId STRING, eventId STRING, resources ARRAY<STRUCT< ARN:STRING, accountId:STRING, type:STRING>>, eventType STRING, apiVersion STRING, readOnly STRING, recipientAccountId STRING, serviceEventDetails STRING, sharedEventID STRING, vpcEndpointId STRING ) ROW FORMAT SERDE 'com.amazon.emr.hive.serde.CloudTrailSerde' STORED AS INPUTFORMAT 'com.amazon.emr.cloudtrail.CloudTrailInputFormat' OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat' LOCATION 's3://cloudtrail_bucket_name/AWSLogs/Account_ID/';

次のクエリは、24 時間中に行われたログイン数を返します。

SELECT useridentity.username, sourceipaddress, eventtime, additionaleventdata FROM default.cloudtrail_logs WHERE eventname = 'ConsoleLogin' AND eventtime >= '2017-02-17T00:00:00Z' AND eventtime < '2017-02-18T00:00:00Z';

詳細については、「AWS CloudTrail ログのクエリ」を参照してください。