AWSはインターネットからアクセス可能なクラウドシステムのため、過大な料金請求に発展する不正利用が気になりますよね。また複数の利用者による運用の監査や、トラブルが発生した場合のトラブルシューティング等、操作ログはとても大事です。 AWSアカウントを作成したら、まずは運用状況をモニタリングするためAWS CloudTrail(CloudTrail)を使用して操作状況などのログ( 証跡ログ)をAmazon Simple Storage Service(S3)バケット保存することをお勧めします。証跡ログには下記の情報が記録されています。
初出:2021年8月20日
AWSコンソールからCloudTrailを選択し、ダッシュボード画面から「証跡の作成」をクリックして証跡作成を開始します。
証跡名やストレージを格納するバケットおよび証跡ログの暗号化等を指定します。
ここで作成する証跡は「すべてのリージョンの証跡ログが格納」されます。以前は「マルチリージョンの証跡可否」を選択できたのですが、現在(2021年8月現在)ではAWSコンソールからは自動的にマルチリージョンの証跡となるようです。
証跡ログはCMK(customer master key)で暗号化することも可能です。CMKは「AWS Key Management Service(KMS)」で作成、管理します。CMKは有償です。CMKを保有する管理者を限定することで証跡ログが関係者以外に参照されることを防止します。
余談ですが、本記事の掲載が遅れたのは、ここで暗号化を選択し「AWS Key Management 」でCMKを設定したところ思わぬ課金が発生し、サービスの理解に時間がかかったことが原因でした・・・KMSの詳細については後日、機会があればご紹介したいと思います。
(認証属性の設定値一覧)
名称 | 設定値 | 備考 |
---|---|---|
証跡名 | 任意の証跡名を設定する。 | |
有効化範囲 | 選択しない(デフォルト) | 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バケットのCloudTrailフォルダには下記のようにリージョン毎のフォルダが作成され、それぞれのリージョンでの証跡ログが該当するリージョン名のフォルダに格納されます。
証跡ログを格納するイベントの種類を選択します。この記事では管理イベント(管理オペレーションの記録等)のみを対象とします。管理イベントの証跡は一つまでは無料使用枠となります。
(認証属性の設定値一覧)
名称 | 設定値 | 備考 |
---|---|---|
証跡名 | 任意の証跡名を設定する。 | |
イベントタイプ | 管理(デフォルト) | 管理オペレーションのみが記録されます。データ/Insightsイベントは高額となる可能性があるため、格納データ量を事前に見積の上、前述の「AWS CloudTrail の料金」を参考にしながら選択の可否判断を行ってください。 |
APIアクティビティ | 読み取り/書き込み | リソースの読み取り、書き込み(変更または、変更する可能性がある)API操作が証跡ログの対象となります。 |
AWS KMS イベントの除外 | いいえ(デフォルト) | KMSによる暗号化・復号化を行う場合にKMSイベントを記録します。 |
Amazon RDS のデータ API イベントを除外 | いいえ(デフォルト) | Amazon RDSデータAPIイベントが含まれます。詳細については「Amazon Auroraユーザーガイド・AWS CloudTrail による Data API コールのログ記録」を参照してください。 |
設定値を確認して「証跡の作成」をクリックします
証跡ログを検索するにはAthenaを使用します。S3バケットに格納される証跡ログデータからAthenaテーブルを作成し、SQLで検索する方法について説明します。
作成した証跡はダッシュボード画面で確認できます。同じ画面に表示されるイベント履歴は90日間の管理イベントが表示されます。CloudTrailが格納した証跡ログを作成するにはAthenaを使用します。証跡ログからAthenaテーブルを作成するには、「イベント履歴」メニューを選択します。
イベント履歴画面右上の「Athenaテーブルを作成」をクリックする。
CloudTrail証跡ログを格納したS3バケットを選択して「テーブルを作成」をクリックします。
テーブルが作成されると、イベント履歴画面に完了メッセージが表示されます。
セキュリティ上の都合により画面キャプチャは省略していますが、Athenaテーブル作成と同時に「クエリ結果を格納するS3バケット」も同時に作成されます。このバケットは次のAthena設定画面で使用します。
CloudTrailの証跡ログテーブルの選択と検索結果格納バケットを選択してSQLでの検索を実行します。
Athenaテーブルを作成後にAthenaコンソール画面を開くと、S3バケットにクエリ結果の格納場所を指定するようメッセージが表示されているので、「Settings」から設定します。
「Data source」と「Database」はいずれもデフォルト表示のまま使用します。「Tables」では先ほど作成したのAthenaテーブルを選択します。
クエリ実行結果を格納するS3バケットの選択と、その他の設定情報を入力後に「Save」をクリックすると設定内容が保存されます。
(設定値一覧)
名称 | 設定値 | 備考 |
---|---|---|
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 の料金」を参照してください。
(証跡ログ検索)
名称 | 説明 | 備考 |
---|---|---|
①クエリエディタ(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レコード内容
Athenaで検索クエリで使用するSQL文法は上記を参照してください。ANSI-SQL 準拠のクエリを実行できます。
- CloudTrail レコードの内容
SQL文を記述する際に指定するカラム名は上記を参照してください。
証跡ログの検索SQLを保存するには「Query editor」画面の「Save as」ボタンをクリックします。
ダイアログ画面(下記画面)が表示されたらクエリの名前、コメントを記入し「Save」ボタンをクリックします。
保存したクエリは「Saved queries」画面に表示されます。再利用する場合は保存したクエリをダブルクリックすることで「Query editor」画面に表示され、再利用することができます。
実行したクエリは「History」画面で参照できます。料金計算の対象となるスキャンデータ量も「Data scanned」から参照でき、実行結果も「Action」列の「Download results」からダウンロードできます。