Organizations環境の証跡管理に「CloudTrail Lake」をおすすめする理由 #opsjaws
あしざわです。
先日開催されたOps-JAWS Meetup34 Organizations & ControlTowerにて、『Organizations環境の証跡管理に「CloudTrail Lake」をおすすめする理由』 というタイトルでLTさせていただきました。
本記事では、イベントのアーカイブ動画(YouTube)および登壇資料(Speakerdeck)を共有し、当日お話しした内容を簡単に紹介します。
アーカイブ動画(YouTube)
登壇資料(Speakerdeck)
お話しした内容
AWS CloudTrail とは?
AWS CloudTrail は、AWSアカウント内のAPIアクティビティをイベントログとして記録・保存するサービスです。
AWSアカウント上で 「誰が」「いつ」「何をしたか」を記録するサービス と表現すると、わかりやすい人もいるかもしれません。
CloudTrailは、AWSアカウントの作成時に全てのリージョンでデフォルトで有効化されています。
CloudTrailがデフォルトで記録するログは「管理イベント」と呼ばれるAWSアカウントのリソースで実行される管理オペレーションを可視化したログです
デフォルトで有効化されている管理イベントは記録されてから90日間、CloudTrailのマネジメントコンソールのイベント履歴から検索・閲覧できます。
これらのデフォルト機能は 無料 で利用できます。
追加コストはかかりますが、CloudTrailの設定を変更することで機能を拡張できます。
例えば、記録するログの長期保存です。
通常のCloudTrailであれば90日間しかイベントログにアクセスできませんが、証跡と呼ばれるリソースを追加設定することで、S3などの永続ストレージに記録したイベントログを保管できます。この証跡は各AWSアカウントのリージョンごとに1つまでなら無料で利用できます。
証跡を利用すると、管理イベント以外のイベントログを記録できるようになります。
- データイベント:S3のオブジェクトに関するAPIアクティビティ、Lambdaの実行記録
- ネットワークアクティビティイベント:プライベート VPC から VPC エンドポイント経由で実行されたAPIアクティビティ
その他、CloudTrailについてはこちらの記事にまとめています。
ここまでが前置きです。
マルチアカウント環境のCloudTrail管理の「基本」
今回のイベントの主題は「AWS Organizations/AWS Control Tower」ということもあり、このLTでは マルチアカウント環境におけるCloudTrail管理 に関してお話しました。
マルチアカウント環境のCloudTrail管理の文脈でよく使われる設定・機能がこちらの2つです。
- 証跡
- 組織の証跡
「証跡」は、CloudTrail イベントをS3やCloudWatch Logsなどの永続ストレージに出力する 設定 です。
CloudTrailの機能の紹介でも触れたようにマルチアカウント環境独自の概念ではない、ログを長期間保存する際によく利用される設定です。
ログの出力先となる永続ストレージは同じAWSアカウント内でも良いし、他のAWSアカウントも指定できます。
対して、「組織の証跡」です。こちらはAWS Organizations を用いたマルチアカウント環境において、組織内のAWSアカウントすべてに同じ設定の証跡を複製する 機能 です。
同じ証跡を複製するのでログの出力先はすべて同じになります。よって、組織内のAWSアカウントのCloudTrailログを集約し一元管理をする際に役に立つ機能です。
先述した通り、証跡は各AWSアカウントのリージョンごとに1つまで無料です。Organizations組織で組織の証跡を利用していても、各アカウントで他の証跡を作らなければ無料枠の中で証跡が管理できます。
実質ゼロコストで運用できることになるので、一番手軽かつお安くCloudTrail証跡を管理する方法は、この組織の証跡を利用する方法です。
ただ、マルチアカウント環境でCloudTrailを効率的に運用していこうとすると、組織の証跡以外の手段をとった方が良いことがあるかもしれない。それがこの資料の肝です。
(補足)
「証跡」と「組織の証跡」は、どちらも 証跡 という言葉が使われており似たような概念のようにみえますが、個人的には異なる概念です。
「証跡」は同名のリソースが作成されますが、「組織の証跡」は証跡を複製する"設定" に過ぎません。組織の証跡というリソースが存在するわけではないので、認識しておきましょう。
Organizations環境の証跡管理において考慮すべきこと
Organizations環境でCloudTrailの証跡管理をする上で気になる点はこちらの3点です。
- 統制
- コスト
- 運用
1点目は「統制」の観点です。
証跡を利用していると、作成後にアカウント利用者が誤って設定を変更してしまった場合、ログが保存されなくなってしまいます。
組織の証跡を利用していれば、管理アカウント以外から証跡の設定を変更できないため心配ないですが、通常の証跡を利用する場合は注意です。
2点目は「コスト」の観点です。
CloudTrail証跡が無料なのは1つ目の証跡までなので、組織の証跡と別に個別の証跡を作ってしまうとCloudTrail証跡で発生するコストが課金されてしまいます。
具体的には、配信される管理イベント 100,000 あたり 2.00 USD
という料金体系なのであまり安いとは言えません。
AWS Control Tower環境で組織の証跡を有効化したことで、想定外のコストを発生させてしまった事例がこちらです。
組織の証跡はControl Towerの機能ではなくOrganizationsそのものに関連した機能であることを覚えておくと良いです。
3点目は「運用」です。
証跡でS3にログ出力している場合は、ログを効率的に閲覧するためにAmazon Athenaを利用してクエリ実行する環境が必須と言えます。
単一のアカウントならそこまで問題になりませんが、マルチアカウント環境ではAthenaの管理コストが運用負荷につながるケースもあるはずです。
Organizations環境の証跡管理における課題をまとめると以下です:
- 統制:設定によっては勝手に変更されてしまう場合も(組織の証跡ならOK)
- コスト:証跡の重複で他アカウントで追加コストが発生する場合も
- 運用: ログ閲覧用Athenaの管理コスト
CloudTrail Lakeについて
ここからはこのような課題を解決できるかもしれない、『CloudTrail Lake』について紹介していきます。
CloudTrail Lakeとは、CloudTrailイベントログの集約やクエリ実行基盤がマネージドに利用できるようになるサービスです。
特徴や良いところ
CloudTrail Lakeはイベントログを イベントデータストア という独自のストレージに保存します。S3やCloudWatch Logsとは別の存在です。
組織単位でログを収集することはもちろんできますが、イベントデータストアはCloudTrail Lakeを管理するアカウント上だけに作成され、他のアカウントにはリソースが何も作成されないため、リソース管理上設定変更の恐れがありません。
CloudTrail Lakeの料金はイベントデータストアの管理アカウント上でのみ発生します。イベントデータストアの利用料金は「0.75 USD/GB」で、データクエリにかかるコストはまた別途発生します(0.005 USD/GB)
証跡の重複と同じようにコストが発生してしまいますが、2個目の証跡よりもお安く利用できるのでこちらの方をお勧めしたいです。
また、イベントデータストアでログを収集される管理下にある他のアカウントではコストが発生せず、証跡のリソースが作成されないことから個別の証跡を独自管理することも可能です。
最後に運用観点ですが、イベントデータストアが作成されているアカウントのマネジメントコンソール上で独自のクエリエディタをマネージドに利用できます。
Athenaのような個別のリソースの管理が不要となるため、運用上大変嬉しいです。
また、CloudTrail Lakeはここ1年くらいで色々なアップデートがきており、今後の機能拡充に期待できる点も嬉しいところです。
改善して欲しいところ
ここまで良いところをメインに紹介しましたが、まだまだ改善して欲しいところはあります。
1点目はコストの高さです。
リリース時は7年保存オプションしか存在せずかなりお高いイメージがありましたが、1年保存オプションが登場し比較的リーズナブルに利用開始できるようになりました。
しかし、組織単位でログ収集すると自動で全アカウントのログを収集する仕様であることから、アカウント数が増えてくると管理アカウントで発生するコストも気になります。
組織の証跡のようにゼロコスト運用させろ!とは言いませんが、Security Lake のように管理するアカウントを選択できるとコストが抑えられ、検証しやすくなり嬉しいなと思いました。
2点目は機能の不十分さです。
「リソースベースポリシーを利用したクロスアカウトアクセス」や「生成AIを利用した自然言語のよるクエリ生成」など直近で良い感じの方向のアップデートがありますが、制御できるポリシーが不足していたり日本語非対応であったりと、まだまだ十分ではありません。
この辺りはユーザーである私をはじめとして、たくさん使ってフィードバックしていきたいと思っています。
まとめ
本記事ではOps-JAWS Meetup34 Organizations & ControlTowerでの登壇内容をもとに、AWS CloudTrailの基本機能、マルチアカウント環境での証跡管理における課題、そしてこれらの課題を解決する可能性があるCloudTrail Lakeの特徴や利点について詳しく解説しました。
CloudTrail Lakeは、イベントログの集約やクエリ実行基盤をマネージドで提供し、運用負荷の軽減やコスト削減に寄与します。
特に、2024年11月のアップデートで追加された包括的なダッシュボード機能やクロスアカウントでのデータアクセス機能により、組織全体のアクティビティログの分析がより効率的に行えるようになりました。
一方で、コストや機能面での改善点も存在するため、これらを考慮しつつ、組織の要件に合わせた適切な証跡管理手法を選択することが重要です。
正直なところ、証跡の管理に困っていない環境ではCloudTrail Lakeではなく、ゼロコスト運用が可能な組織の証跡を利用した方が良いです。
現状、組織の証跡を使った運用でお困りの方がいたら、CloudTrail Lakeという選択肢があるということをお伝えいただければと思います。
以上です。
最後まで読んでいただきありがとうございます。