AWSのCloudTrail Lakeの設定/削除とSQLでデータを確認するサンプルです。
目次
サンプル | CloudTrail Lakeとは |
CloudTrail Lakeを設定する | |
CloudTrail LakeのデータをSQLで確認する | |
CloudTrail LakeのSQLの例 | |
SQLの結果の全件をCSVで取得する | |
CloudTrail Lakeを削除する |
CloudTrail Lakeとは
- CloudTrail Lakeは、CloudTrailのデータをSQL文で検索できます。
- CloudTrail Lakeを有効にしてからデータが蓄積されていきます。
- 料金は、取り込みと分析でかかります。
https://aws.amazon.com/jp/cloudtrail/pricing/
取り込み | 最初の 5 TB: 1 GB あたり 2.5 USD その後の 20 TB: 1 GB あたり 1 USD 25 TB 以上: 1 GB あたり 0.5 USD |
分析 | スキャンしたデータ 1 GB あたり 0.005 USD |
CloudTrail Lakeを設定する
1.検索入力欄で「CloudTrail」と入力し、表示された「CloudTrail」をクリックします。
※画面右上のリージョンを確認します。例:東京 ap-northeast-1
2.画面左の「レイク」をクリックします。
3.「イベントデータストアの作成」をクリックします。
4.イベントデータストア名、保存期間を入力します。次へをクリックします。
5.必要なイベントタイプにチェックを入れます。
管理イベントは、ログインやEC2インスタンスの作成、削除等を指します。
データイベントは、リソースの操作ログを指します。
データイベントは以下を選択できます。(2023/06時点)
6.管理イベントです。必要に応じてチェックを入れます。
7.データイベントです。必要に応じて選択します。
次へをクリックし確認画面で問題なければイベントデータストアの作成をクリックすると作成されます。
8.作成後は一覧に表示されます。
CloudTrail LakeのデータをSQLで確認する
1.画面左の「レイク」をクリックします。
2.「エディター」でSQLを入力できます。
fromのテーブルを指定する箇所は、イベントデータストアIDを指定します。
eventTimeで日時の範囲を指定し、LIMITで出力件数を絞ります。
実行ボタンをクリックするとSQLが実行されます。
eventTime >= '2022-07-01 00:00:00' and eventTime < '2022-08-16 00:00:00'
LIMIT 30;
※betweenはうまくいきません。時間の00が0だとうまくいきません。
3.SQLの実行結果は、画面下にスクロールすると表示されています。
CloudTrail LakeのSQLの例
CloudTrail Lakeは、json形式になっていますが、SQLで指定できます。
取得方法1:イコールで指定、否定は!=
取得方法2:項目をドットつなぎにする
取得方法3:element_atで指定する(requestParametersの項目)
取得方法4:errorCode is not null ,is nullでエラー有り無しの抽出
取得方法1:イコールで指定、否定は!=
SELECT * FROM テーブル名
WHERE eventName = 'PutObject' and sourceIPAddress = '10.0.10.4'
limit 10
値はシングルコーテーションで括ります。
否定は、!=です。
limitは出力件数です。
日時のfrom-to指定
SELECT * FROM テーブル名
eventTime >= '2022-07-01 00:00:00' and eventTime < '2022-08-16 00:00:00'
LIMIT 30;
※betweenはうまくいきません。時間の00が0だとうまくいきません。
取得方法2:項目をドットつなぎにする
波括弧で括られている箇所は、JSONのオブジェクトです。
{
"eventVersion": "1.08",
"userIdentity": "{type=AWSService, ・・・identityprovider=null}",
like文
SELECT * FROM テーブル名
WHERE userIdentity.type like 'AWSSer%'
ドットでつなぎます。
in句 (tlsのバージョンを指定)
SELECT * FROM テーブル名
WHERE tlsDetails.tlsVersion IN ('TLSv1','TLSv1.1','TLSv1.2')
取得方法3:element_atで指定する(requestParametersの項目)
{
"eventVersion": "1.08",
"requestParameters": "{tableName=library}",
element_atを使用します
SELECT * FROM テーブル名
WHERE (element_at(requestParameters, 'tableName') like 'lib%')
https://docs.aws.amazon.com/ja_jp/awscloudtrail/latest/userguide/query-limitations.html#query-supported-functions
※CloudTrail Lakeの画面の「サンプルクエリ」のタブにサンプルのSQLがあります。
取得方法4:errorCode is not null ,is nullでエラー有り無しの抽出
SELECT * FROM テーブル名
WHERE errorCode is null
limit 10
is null またはis not nullを使用できます。
SQLの結果の全件をCSVで取得する
1.「結果をS3に保存」にチェックを入れSQLを実行します。
「S3を参照」をクリックすると対象のS3が表示されます。
対象のS3のバケットがない場合は自動で作成されます。
2.csv.gzの行にチェックをいれダウンロードをクリックするとCSVでダウンロードされます。
拡張子のgzはダウンロードすると外れます。
3.以下のようなCSVがダウンロードされます。
CloudTrail Lakeを削除する
1.画面左のレイクをクリックします。
2.イベントデータストアをクリックします。
3.削除するイベントデータストアのリンクをクリックします。
4.アクションから削除をクリックします。
削除がグレイアウトの場合は、終了保護の変更をクリックして終了保護を無効にします。
関連の記事
AWS CloudTrailでEC2の起動を確認する
AWS CloudTrail のデータをAthenaで確認するサンプル