[広告]

AWS CloudTrail証跡ログの保存と検索

AWSはインターネットからアクセス可能なクラウドシステムのため、過大な料金請求に発展する不正利用が気になりますよね。また複数の利用者による運用の監査や、トラブルが発生した場合のトラブルシューティング等、操作ログはとても大事です。 AWSアカウントを作成したら、まずは運用状況をモニタリングするためAWS CloudTrail(CloudTrail)を使用して操作状況などのログ( 証跡ログ)をAmazon Simple Storage Service(S3)バケット保存することをお勧めします。証跡ログには下記の情報が記録されています。

  • 誰が:操作したユーザー
  • いつ:操作した時間
  • どこから:操作した端末等のIPアドレス
  • どのような操作を行い:APIコールと影響を受けたリソース
  • どのような結果となったか:実行結果(エラーメッセージ等)
上記の情報をもとに、トラブルシューティングに活用していくことで適正な運用やモニタリング可能となります。 保存した証跡ログは電子署名のメカニズムによりCloudTrail以外によって変更されていないことを検証することができます。 証跡ログはJSON形式で保存されます。そのままダウンロードすることも可能ですが、SQL文を利用して証跡ログを検索するAmazon Athena(Athena)も用意されていますので、ここではAthenaを利用した検索方法についても紹介します。システムの適正な運用の参考になれば幸いです。

初出:2021年8月20日

概要

CloudTraillを利用した証跡の作成、証跡ログのS3バケットへの格納、その証跡ログをAthenaでの検索する方法について説明します。

AWS CloudTrailログの保存と検索

AWSの簡単な操作状況は CloudTrail「イベント履歴」で参照可能ですが、履歴は90日間しか保持しないこと、詳細な検索がしにくい等の不便な点もあるため、これを解決する手段の一つとしてAthenaを利用したSQL文での検索を紹介します。

CloudTrail(S3バケット他を含む)および、Athenaサービスは有償です。詳細は下記サイトを参照してください。

サービス別料金
[広告]

証跡の作成

AWSコンソールからCloudTrailを選択し、ダッシュボード画面から「証跡の作成」をクリックして証跡作成を開始します。

AWS CloudTrail ダッシュボード

証跡属性の選択

証跡名やストレージを格納するバケットおよび証跡ログの暗号化等を指定します。

ここで作成する証跡は「すべてのリージョンの証跡ログが格納」されます。以前は「マルチリージョンの証跡可否」を選択できたのですが、現在(2021年8月現在)ではAWSコンソールからは自動的にマルチリージョンの証跡となるようです。

証跡ログはCMK(customer master key)で暗号化することも可能です。CMKは「AWS Key Management Service(KMS)」で作成、管理します。CMKは有償です。CMKを保有する管理者を限定することで証跡ログが関係者以外に参照されることを防止します。

余談ですが、本記事の掲載が遅れたのは、ここで暗号化を選択し「AWS Key Management 」でCMKを設定したところ思わぬ課金が発生し、サービスの理解に時間がかかったことが原因でした・・・KMSの詳細については後日、機会があればご紹介したいと思います。

AWS CloudTrail 証跡属性の選択

(認証属性の設定値一覧)

名称 設定値 備考
証跡名 任意の証跡名を設定する。
有効化範囲 選択しない(デフォルト) AWSアカウントの有効化範囲を組織内のすべてとするか否かについて選択する。
ストレージの場所 「新しい S3 バケットを作成します」(デフォルト) S3バケットを新規作成するか、既存のS3バケットを使用するかについて、任意に選択する。S3バケットはCloudTrail証跡ログを停止又は設定を削除しても、S3バケットにログが格納されている間は料金が発生するので注意が必要。
認証ログバケットおよびフォルダ 任意のS3バケットとフォルダ名を設定する ここで指定したフォルダの配下にすべてのリージョン名のフォルダが自動的に作成され、リージョン毎の証跡ログが保存される。
ログファイルのSSE-KMS暗号化 無効 証跡ログの参照ユーザーをCMKの保有者のみに限定する場合に利用する。デフォルトは「有効」だが、本記事では「無効」を選択した場合で説明する。CMKを利用する場合は$1.00/1件/月の料金が発生する(2021年8月現在)
カスタマー管理のAWS KMSキー (省略) 「新規(デフォルト)」または「既存」のいずれかを選択する。「ログファイルのSSE-KMS暗号化」で「有効」を選択した場合のみ設定可能。
AWS KMSエイリアス (省略) 任意名を設定する。「ログファイルのSSE-KMS暗号化」で「有効」を選択した場合のみ設定可能。
ログファイルの検証 「有効」(デフォルト) CloudTrailが格納した証跡ログが変更、削除等の改ざんがされていないことを検証可能にする。「有効」を設定すると証跡ログ格納時にログダイジェストも格納される。このダイジェストファイルを用いて検証を行う。(参考:CloudTrail ログファイルの整合性の検証)
SNS通知の配信 「無効」(デフォルト) 証跡ログが格納される毎に SNS 通知を送信する場合は、「有効 」を選択する。
新しいSNSトピックの作成 (省略) 「SNS通知の配信」を「有効」にした場合に設定可能となる。
SNSトピック (省略) 「SNS通知の配信」を「有効」にした場合に設定可能となる。
CloudWatch Logs 「無効」(デフォルト) 証跡ログをモニタリングし、特定のアクティビティが発生したときに通知するように CloudWatch Logs を設定する。(参考:Amazon CloudWatch Logs を使用した CloudTrail ログファイルのモニタリング)
タグ 任意のキーと値を設定する

(参考)S3バケットのマルチリージョン証跡フォルダ構成

証跡ログは各リージョン毎に保存(マルチリージョンの証跡)することが推奨されています。証跡を作成するとS3バケットのCloudTrailフォルダには下記のようにリージョン毎のフォルダが作成され、それぞれのリージョンでの証跡ログが該当するリージョン名のフォルダに格納されます。

AWS CloudTrail マルチリージョン証跡

ログイベントの選択

証跡ログを格納するイベントの種類を選択します。この記事では管理イベント(管理オペレーションの記録等)のみを対象とします。管理イベントの証跡は一つまでは無料使用枠となります。

AWS CloudTrail ログイベントの選択

(認証属性の設定値一覧)

名称 設定値 備考
証跡名 任意の証跡名を設定する。
イベントタイプ 管理(デフォルト) 管理オペレーションのみが記録されます。データ/Insightsイベントは高額となる可能性があるため、格納データ量を事前に見積の上、前述の「AWS CloudTrail の料金」を参考にしながら選択の可否判断を行ってください。
APIアクティビティ 読み取り/書き込み リソースの読み取り、書き込み(変更または、変更する可能性がある)API操作が証跡ログの対象となります。
AWS KMS イベントの除外 いいえ(デフォルト) KMSによる暗号化・復号化を行う場合にKMSイベントを記録します。
Amazon RDS のデータ API イベントを除外 いいえ(デフォルト) Amazon RDSデータAPIイベントが含まれます。詳細については「Amazon Auroraユーザーガイド・AWS CloudTrail による Data API コールのログ記録」を参照してください。

確認と作成

設定値を確認して「証跡の作成」をクリックします

AWS CloudTrail ログイベントの選択
[広告]

証跡ログ検索の準備

証跡ログを検索するにはAthenaを使用します。S3バケットに格納される証跡ログデータからAthenaテーブルを作成し、SQLで検索する方法について説明します。

証跡ログ確認とAthenaテーブルの作成

作成した証跡はダッシュボード画面で確認できます。同じ画面に表示されるイベント履歴は90日間の管理イベントが表示されます。CloudTrailが格納した証跡ログを作成するにはAthenaを使用します。証跡ログからAthenaテーブルを作成するには、「イベント履歴」メニューを選択します。

AWS CloudTrailダッシュボード

イベント履歴からAthenaテーブル作成を選択

イベント履歴画面右上の「Athenaテーブルを作成」をクリックする。

AWS CloudTrail イベント履歴画面

Athenaテーブルを作成

CloudTrail証跡ログを格納したS3バケットを選択して「テーブルを作成」をクリックします。

Amazon Athenaテーブルを作成

テーブルが作成されると、イベント履歴画面に完了メッセージが表示されます。

セキュリティ上の都合により画面キャプチャは省略していますが、Athenaテーブル作成と同時に「クエリ結果を格納するS3バケット」も同時に作成されます。このバケットは次のAthena設定画面で使用します。

Athenaテーブル作成完了メッセージ
[広告]

Amazon Athenaでの証跡ログ検索

CloudTrailの証跡ログテーブルの選択と検索結果格納バケットを選択してSQLでの検索を実行します。

証跡ログの検索概要

Athenaコンソール画面

Athenaテーブルを作成後にAthenaコンソール画面を開くと、S3バケットにクエリ結果の格納場所を指定するようメッセージが表示されているので、「Settings」から設定します。

「Data source」と「Database」はいずれもデフォルト表示のまま使用します。「Tables」では先ほど作成したのAthenaテーブルを選択します。

Amazon Athenaコンソール画面

Athena設定画面

クエリ実行結果を格納するS3バケットの選択と、その他の設定情報を入力後に「Save」をクリックすると設定内容が保存されます。

Amazon Athenaクエリ設定

(設定値一覧)

名称 設定値 備考
Workgroup primary(デフォルト) ワークグループは目的、所有者または環境ごとに分類するために使用します。クエリを実行する際のクエリ実行結果格納バケットの指定、処理データ量の制限を行うことでコストの追跡ができるようになります。ワークグループの詳細については「ワークグループを使用してクエリのアクセスとコストを制御する」を参照してください。
Query result location クエリ結果を格納するS3バケットを選択します 「Select」をクリックすると選択可能なS3バケットがリスト表示されます。
Encrypt query results クエリ結果は暗号化しない(デフォルト) S3 に保存されたクエリ結果を暗号化するか否かを設定します。詳細については「保管時の暗号化」を参照してください。
Autocomplete クエリ入力時にオートコンプリートを有効にしない(デフォルト) 「有効にする」(チェックを入れる)とQury editorでクエリを入力している途中で「Cmd又はCtrl+空白キー」で入力文字を補完できます。

証跡ログの検索

Athenaの「Query editor」に検索クエリをSQL文で入力し証跡ログを検索します。検索結果は「Results」 に表示され、ダウンンロードボタンをクリックするとCSV形式でクライアント端末にダウンロードできます。

検索対象のデータ量に比例して料金が発生します。詳細については「Amazon Athena の料金」を参照してください。

Amazon Athena証跡ログの検索

(証跡ログ検索)

名称 説明 備考
①クエリエディタ(New Query2) 任意の検索SQL文を入力します。 SQL文を入力するための文法と、レコード内容(テーブルフォーマット)は欄外の「SQL文法とCloudTrailレコード内容」を参照してください。
②クエリの実行 「Run queryボタン」をクリックします。
③クエリ実行結果の表示 「Results」に実行中メッセージが表示され、しばらく待つと実行結果が表示されます。 実行時間は検索対象のデータの量やSQL文により異なります。
④ダウンロード ダウンロードボタンをクリックすると「Results」に表示されているデータがCSV形式でダウンロードできます。

(検索SQLサンプル)※自由にコピペしてお使いください。

①最新の10件を表示

select * from [テーブル名] order by eventtime desc limit 10;

②最古(証跡ログの先頭)の10件を表示

select * from [テーブル名] order by eventtime asc limit 10;

③コンソールログインしたログの最新10件を表示

select * from [テーブル名] where eventname = 'ConsoleLogin' order by eventtime desc limit 10;

SQL文法とCloudTrailレコード内容

証跡ログの保存と再利用

証跡ログの検索SQLを保存するには「Query editor」画面の「Save as」ボタンをクリックします。

ダイアログ画面(下記画面)が表示されたらクエリの名前、コメントを記入し「Save」ボタンをクリックします。

検索クエリの保存

保存したクエリは「Saved queries」画面に表示されます。再利用する場合は保存したクエリをダブルクリックすることで「Query editor」画面に表示され、再利用することができます。

保存した検索クエリの再利用

クエリ実行履歴の参照

実行したクエリは「History」画面で参照できます。料金計算の対象となるスキャンデータ量も「Data scanned」から参照でき、実行結果も「Action」列の「Download results」からダウンロードできます。

検索履歴の参照
[広告]

編集後記

AWS CloudTrailは、私がAWSを勉強し始めてまもなくサービスを知り、企業内での情報セキュリティ監査、不正利用防止やトラブル対応等に使える!と思い、2020年から記事の執筆を進めていたのですが、調べるほど奥が深く時間がかかってしまいました。執筆にあたり「AWS Black Belt Online Seminar」は簡潔な説明でとても勉強になりました。他のサービスの勉強にも活用していきたいと思います。

前の記事 次の記事
執筆にあたり参考にしたサイト