CloudTrail Lakeを使用する際の各設定項目を調べてみた
お疲れさまです。とーちです。
とあるアップデートを試そうと思って、CloudTrail Lakeを初めて触ってみました。初期設定周りで分かりづらいパラメータがいくつかあったので、この記事ではそのあたりを解説していこうと思います。
CloudTrail Lakeの料金体系
CloudTrail Lakeは料金が高騰する可能性があるサービスなのでまず料金体系を確認しました。最新かつ正確な料金情報については以下の公式ドキュメントをご参照ください。
上記のCloudTrail Lakeの料金を見ると「1 年間の延長可能な保持料金」と「7 年間のリテンション価格」で料金が分かれています。
データ取り込み料金の違い
大きな違いとしては、データ取り込み料金のところでしょうか。「1 年間の延長可能な保持料金」のほうは1ヶ月に1GBあたり0.75 USD(CloudTrail 管理、データ、ネットワークアクティビティイベントの場合)、「7 年間のリテンション価格」のほうは、1ヶ月に1GBあたり2.5 USD(最初の 5 TB)となっており、7 年間のリテンション価格のほうだとなかなかの料金になりそうです。
データ保持期間による料金の違い
また、データ保持期間による料金の違いも重要なポイントです。
「1 年間の延長可能な保持料金」のほうは1年間は保持料金は無料(データ取り込み料金に含まれる)なのに対し、「7 年間のリテンション価格」のほうは7年間、保持料金は無料(データ取り込み料金に含まれる)になります。
「1 年間の延長可能な保持料金」で、1年を超えて保持されるデータはどうなるかというと、1 か月あたり 0.023 USD/GB の追加料金がかかります。
また事前にどのくらいのデータ量が毎月取り込まれるのか、大体でいいので把握しておくといいですね。CloudTrailは大抵の環境では有効化されていると思うので、以下のようなコマンドを実行するとおおよそのサイズ感がわかると思います。
aws s3 ls s3://バケット名/AWSLogs/アカウントID/CloudTrail/ap-northeast-1/2025/05/ --recursive --human-readable --summarize
まとめると、CloudTrail Lake作成時に 料金プランを「1 年間の延長可能な保持料金」にし、保持期間を1年にすれば、主要な料金としては、1GBあたり0.75 USD/月くらいと考えられそうです。上記のように既存CloudTrailの一ヶ月あたりのデータサイズが分かれば、料金感の目処がつきそうですね。
CloudTrail Lakeの設定
それでは、CloudTrailの画面にいき実際に作っていきながら各項目について見ていきましょう。CloudTrail Lakeではイベントデータストアという単位でデータ保管場所を構築しそこにイベントを保管していきます。そのため、まずは「イベントデータストアを作成」を押します。
料金オプションの設定
料金オプションの設定です。こちらについては上記の料金の説明をご参照ください。
Lake クエリーフェデレーションとリソースポリシー
続いてLake クエリーフェデレーションとリソースポリシーという設定があります。
Lake クエリーフェデレーション
Lake クエリーフェデレーションはCloudTrail LakeのデータをAthenaでも使えるようにする 機能です。
AthenaでもCloudTrail Lakeのデータをクエリできるようになるので、例えばBIツールと連携しやすくなる他、Lake Formationとも統合されるので列レベル、行レベルでアクセスを制御したりといったことができるようになります。
リソースポリシー
リソースポリシーは、対象のイベントデータストアに対するリソースレベルのポリシーになります。S3バケット等のバケットポリシー等と同等の機能です。例えば特定のIAMユーザー・ロールにのみアクセスを許可するといったことが出来ます。
イベントタイプの選択
続いてイベントタイプの指定です。
イベントタイプはAWSイベントと統合からのイベントの2つの中から選択できます。統合からのイベントはオンプレミス等からユーザーのアクティビティデータをCloudTrail Lakeに取り込むときに使用するものだそうです。ここではAWSイベントを中心に説明します。
AWSイベントの種類
AWSイベントは大きく、CloudTrailイベント、CloudTrail Insightsイベント、設定項目の3種類から選択できます。
CloudTrailイベント
まずCloudTrailイベントから説明していきます。CloudTrailイベントは「CloudTrail証跡」のほうでも取得できるイベント類なのでこれは馴染みがあるかなと思います。
- 管理イベント: API操作(リソースの作成・削除等)
- データイベント: データアクセス(S3オブジェクトの読み書き等)
- ネットワークアクティビティイベント: ネットワーク通信
ちなみに私は勘違いしていたのですが、CloudTrail Lakeを使用するにあたりCloudTrail証跡は必ずしも有効にしておく必要はありません。CloudTrail証跡が存在しなくてもCloudTrail Lakeにはイベントが収集されていきます。
CloudTrail Insights イベント
続いてCloudTrail Insights イベントです。
CloudTrail Insights自体は管理イベントを対象として、APIコールボリュームとAPIエラーレートの異常なパターンを検出するためのものです。現在のコール量やエラー率が標準的なパターンから大きく外れている場合にInsightsイベントが生成されます。CloudTrail Lakeではそれらの異常イベントをSQLで分析できるというわけです。
CloudTrail Insights イベントを選択する場合は、ソースとなる別のCloudTrail Lakeイベントデータストアも必要になります。CloudTrail Insights イベントを収集するイベントデータストアを作成した後に、上記のAWS管理イベントを収集し、かつ「Insightイベントのキャプチャ」を有効にしたイベントデータストアを作成します。
設定項目(AWS Config)
最後に設定項目です。こちらは日本語だと分かりづらいのですが、「AWS Config」のデータを収集するイベントデータストアになります。AWS Configで収集した設定項目に対してクエリを実行できるとのことなので、AWS Configアグリゲーターの高度なクエリに近いイメージなのかもしれません。
CloudTrail Lakeではリソース設定やコンプライアンス履歴を含む、すべての AWS Config 設定項目をカバーするとのことなので、もしかすると高度なクエリよりも使いやすいかもしれないですね。機会があれば使ってみようかと思います。
CloudTrailイベントの詳細設定
以降はCloudTrailイベントを選択した場合の設定項目について説明していきます。
上述の通りCloudTrailイベントには管理イベント、データイベント、ネットワークアクティビティイベントの3つがあります。これらのイベントそれぞれについてCloudTrail Lakeで収集対象とするかどうかを選択できます。
証跡イベントをコピー
「証跡イベントをコピー」という項目が気になる方がいるかもしれません。こちらは既に存在している「CloudTrail証跡」をCloudTrail Lakeに取り込むオプションとなっています。このオプションを選択すると以下のような設定項目が追加され、既存のCloudTrail証跡が記録されているS3バケットの指定等ができるようになります。
イベントの取り込みに関する設定
つづいてイベントの取り込みに関する設定です。それぞれ以下のような設定内容です。
- イベントデータストアに現在のリージョン(ap-northeast-1)のみを含める: デフォルトでは、AWSアカウントの すべてのリージョンからイベントが収集される設定になっています。この項目を有効にすると現在のリージョンのイベントのみを収集します。
- イベントを取り込む: CloudTrail証跡でも同様の機能がありますが、CloudTrail Lakeでもイベントの取り込みを一時停止することもできます。このオプションは取り込みを一時停止した状態でイベントデータストアを作成するかどうかを決める項目です。
管理イベントの設定
次の項目は管理イベントの設定です。これは上記のCloudTrailイベント設定で「管理イベント」を選択したときに出る項目です。「シンプルなイベント収集」と「高度なイベント収集」の2つがあります。
シンプルなイベント収集
シンプルなイベント収集はそんなに難しい設定はないと思います。ちなみにCloudTrail証跡の設定と同じ設定項目になっています。
高度なイベント収集
高度なイベント収集はイベントデータストアにどのイベントを含めるかをより細かく制御するための設定で、予め用意されたテンプレートとカスタム設定があります。
テンプレートの種類
テンプレートは以下の5種類です。
- すべてのイベントをログに記録する: すべてのイベントをログに記録します。
- 読み取りイベントのみをログに記録:
Get*
、Describe*
などの読み取りイベントのみをログに記録するテンプレートです。 - 書き込みイベントのみをログに記録:
Put*
、Delete*
などの書き込みイベントのみをログに記録するテンプレートを選択します。 - AWS マネジメントコンソールのイベントのみをログに記録する: AWS マネジメントコンソールから発生したイベントのみをログに記録するテンプレートです。
- AWS サービスによって開始されたイベントを除外する: CloudTrailで記録されるイベントには
eventType
というフィールドがありますが、これがAwsServiceEvent
の場合は各AWSサービスが行ったリクエストになります。このテンプレートではeventType
がAwsServiceEvent
及び サービスリンクロールで開始されたイベントが除外されます。
カスタム設定
この他にカスタム設定もあります。カスタム設定では以下のようにCloudTrailで記録されるイベントのフィールドと値に基づいてイベントをフィルタリングし、記録対象とすることができます。
データイベントの設定
データイベントを取得対象としたときは以下の設定項目が出てきます。データイベントは例えばS3バケット上のオブジェクトやDynamoDB上の各アイテムの作成・削除など、あるAWSリソース上のデータに対する操作を記録するイベントです。
データイベントの対象のリソースタイプは以下のURLに記載があります。
管理イベントの設定の高度なイベント収集と同様にどの種類のイベントを収集するかをテンプレートかカスタム設定から選択できます。
ネットワークアクティビティイベントの設定
ネットワークアクティビティイベントを取得対象としたときは以下の設定項目が出てきます。ネットワークアクティビティイベントではVPCエンドポイントを介した通信に関するAWS APIコールを記録します。例えばVPCエンドポイント経由でのAWS API呼び出しや、VPCエンドポイントへのアクセス拒否などが対象となります。
ネットワークアクティビティイベントの対象のリソースタイプは以下のURLに記載があります。
高度なイベント収集と同様に収集するイベント種別を選ぶテンプレートがありますが、こちらに関しては「すべてのイベントをログに記録する」か「ネットワークアクティビティアクセス拒否イベントをログに記録」のどちらかのテンプレートとカスタム設定のみが使用できます。
イベントのエンリッチ化設定
マネジメントコンソール上では、この後、イベントのエンリッチ化に関する設定がありますが、こちらの設定はオプション扱いであることと、私が動作をちゃんと確認できていないので、ここでの説明は割愛します。(機会があれば別途記事にします)
まとめ
以上、CloudTrail Lakeを初めて設定するときの各設定項目に関する説明でした。調べてみるといろいろなことができそうで、使ってみようという気持ちになりましたね。
雑にまとめると以下のあたりは初期設定時に覚えておくといいかもしれないです。
- 料金プランの選択: 最小コストで利用したい場合は「1年間の延長可能な保持料金」を選択し、保持期間を1年に設定する
- 証跡との関係: CloudTrail Lakeは既存のCloudTrail証跡がなくても独立して動作する
- データ量の事前把握: 既存のCloudTrailログのサイズから月間データ量を推定しておく
以上、とーちでした。