0Pricing
Cloud & IT Cert Prep · レッスン

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フィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. AthenaによるS3ログのクエリ
  2. CloudTrailデータ上のテーブル作成
  3. SQLクエリによるインシデント調査
  4. 速度とコストのためのログパーティション化
← Cloud & IT Cert Prepに戻る