CloudTrailデータ上のテーブル作成
監査イベントを直接クエリできるスキーマを定義します。
「CloudTrailデータ上のテーブル作成」はCoddyKit上の無料Cloud & IT Cert Prepレッスンです。 これはレッスン2/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはCloud & IT Cert Prep学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Cloud & IT Cert Prepコースには全4レッスンが含まれています。
テーブルが必要な理由
Athenaは、読み取り方法を指定しなければ、S3の生ファイルに対してクエリを実行できません。テーブルによって、S3バケット内のCloudTrail JSONファイルを、型付きの名前付き列に対応付けます。テーブルを作成すると、CloudTrailイベントが持つ豊富な構造を通常のSQLで参照できるようになります。
CloudTrailログの構造
CloudTrailはイベントをJSON形式で配信します。各レコードには1回のAPI呼び出しに関する情報が記録され、userIdentity、eventName、sourceIPAddress、requestParametersなどのネストされたフィールドが含まれます。テーブルスキーマは、オブジェクトにstruct型を使用するなど、このネスト構造を反映する必要があります。これにより、userIdentity.arnのようなフィールドを参照できます。
AWS提供のDDLの使用
スキーマを手作業で記述する必要はありません。AWSはCloudTrail用の標準CREATE TABLE文を公開しており、CloudTrailコンソールとAthenaで生成することもできます。提供されたDDLを使用すると、深くネストされたフィールドを含め、すべてのフィールドが正しく対応付けられるため、クエリでデータを取りこぼしません。
SerDe
SerDe(Serializer/Deserializer)は、各ファイルの解析方法をAthenaに指示します。CloudTrailのテーブルでは、CloudTrailのJSONレイアウト向けに設計されたSerDeを使用します。このSerDeは、records配列やネストされた構造を理解します。正しいSerDeを選択することは不可欠です。誤ったSerDeを選ぶと、解析エラーが発生したり、列がnullになったりします。
ROW FORMAT SERDE
'com.amazon.emr.hive.serde.CloudTrailSerde'
STORED AS INPUTFORMAT
'com.amazon.emr.cloudtrail.CloudTrailInputFormat'S3ロケーションを指定する
テーブルのLOCATION句は、CloudTrailがログを保存するS3プレフィックスを指定します。通常は、アカウントIDやリージョンを含むパスです。このプレフィックスを正しく指定することが重要です。広すぎると無関係なデータまでスキャンし、狭すぎるとクエリ対象にしたかったイベントを見落とします。
ネストされたフィールドをクエリする
テーブルを作成したら、userIdentity.arnやrequestParameters.bucketNameのように、ドット記法を使ってネストされたフィールドをクエリできます。SQL関数を使えば、配列やJSON文字列を展開できます。ここでAthenaの強みが発揮されます。あらゆるAPI呼び出しについて、イベント名、プリンシパル、パラメータを正確に条件指定できます。
代替手段としてのGlueクローラー
手動でDDLを記述する代わりに、AWS Glue crawlerでS3データをスキャンし、スキーマを推測してData Catalogに自動登録できます。CloudTrailのようによく知られた形式では、提供されているDDLのほうが通常はすっきりしています。一方、手作業でスキーマを記述したくないカスタム形式や変化するログ形式では、クローラーが役立ちます。
JSON特有の扱いに対処する
CloudTrail JSONには、それ自体がJSON文字列になっているフィールドがあります。サービスによって値が異なるrequestParametersなどがその例です。こうしたフィールドは、クエリ実行時にJSON関数で解析することがよくあります。一部の列はあらかじめ構造化された列ではなく、解析が必要な文字列だと理解しておくと、フィールドが通常の列のように動作しない場合でも混乱しません。
組織トレイルのテーブル
organization trailでは、すべてのアカウントのログが、アカウント固有のプレフィックスの下にある1つのバケットに保存されます。プレフィックス全体に対して1つのテーブルを作成し、すべてのアカウントを一度にクエリすることも、分離のためにアカウントごとのテーブルを作成することもできます。統合されたテーブルを使えば、組織全体の脅威ハンティングを1つのクエリで実行できます。
テーブルを検証する
テーブルを作成したら、少量のLIMITを指定した簡単なSELECTを実行し、行が返され、列に期待どおり値が入ることを確認します。列がnullの場合は、SerDe、ロケーション、またはスキーマが正しくない可能性があります。この健全性チェックにより、壊れたまま気付かれないテーブルを使って調査を進めることを防げます。
テーブルから調査へ
CloudTrailテーブルが正しく設定されると、記録された全履歴を横断してクエリできる監査証跡が得られます。コンソールへのログイン、API呼び出し、エラーのすべてが、条件指定や集計の対象となる行になります。このテーブルが、次に作成するインシデント調査用クエリの基盤です。
理解度チェック
テーブル作成に関する知識を確認しましょう。
まとめ
AthenaでCloudTrailをクエリするには、JSONファイルを列に対応付けるtableを作成します。その際、AWSが提供するCREATE TABLE DDL、正しいSerDe、適切なS3LOCATIONを使用します。nested fieldsはドット記法でクエリし、JSON文字列の列はクエリ実行時に解析し、少量のSELECTで検証します。organization trailには、組織全体のハンティング用に1つのテーブルを使用できます。
よくある質問
「CloudTrailデータ上のテーブル作成」レッスンは無料ですか?
はい。「CloudTrailデータ上のテーブル作成」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Cloud & IT Cert Prepコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Cloud & IT Cert Prepコースには全4レッスンが含まれています。
「CloudTrailデータ上のテーブル作成」で何を学びますか?
監査イベントを直接クエリできるスキーマを定義します。 ブラウザで直接実行するハンズオンコードでCloud & IT Cert Prepを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Cloud & IT Cert Prepを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのCloud & IT Cert Prepは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/4です。
「CloudTrailデータ上のテーブル作成」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このCloud & IT Cert Prepレッスンでコードを書いて実行できますか?
はい。すべてのCloud & IT Cert Prepレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- AthenaによるS3ログのクエリ
- CloudTrailデータ上のテーブル作成
- SQLクエリによるインシデント調査
- 速度とコストのためのログパーティション化