AWSアカウントで実行されたAPIを監視する CloudTrail + CloudWatch
2024年1月4日- By Rika Chinen
Ⅰ. はじめに
この記事ではAWSアカウントでのAPI検知の実装について書きたいと思います。CloudTrailとCloudWatchを組み合わせることで実装できます。
Ⅱ. CloudTrail とは
CloudTrailとはAWS上で実行されたAPIアクションを記録し、AWSアカウントの運用と監査を可能にするサービスです。
Ⅲ. ユースケース – 監視項目
どのようなアクションを監視するか、ユースケースを考えてみます。
Ⅳ. 作るもの
a. CloudTrail – アカウントのAPIアクションを記録する
b. CloudTrailのCloudWatch Log Group
CloudTrailの設定でCloudWatch Logsを有効化するとロググループが作成されます。
c. CloudWatch Metrics Filter
上記ロググループにメトリクスフィルターを作成し、検知したいAPIをフィルターします。
d. CloudWatch Alarms
メトリクスフィルターから取得したメトリクスを使ってCloudWatch アラームを作成します。
Ⅴ. 実践
上記を実装してみました。「III.ユースケース– 監視項目」の「CreateAPICall」の作成を以下のステップで説明します。
- CloudTrailの設定
- CloudWatch Logsの確認
- Metrics Filterの作成
- CloudWatch Alarmの作成
- アラームのトリガーテスト
CloudTrailを作成し、CloudWatch Logs を有効にします。
AWSコンソール>CloudTrailに遷移し、「証跡の作成」をクリックします。
証跡名に任意の値を入力し、CloudWatch Logsを有効にします。
2. CloudWatch Logs を確認
AWSコンソール>CloudWatch > ロググループに遷移し、cloudtrail証跡のロググループが作成されていることを確認します。
対象のロググループをクリックし、ログが出力されていることをのロググループをクリックし、ログが出力されていることを確認します。
ログストリームをクリックすると右のようなログが確認できます。
3.Metrics Filterを作成
ロググループ画面の「メトリクスフィルター」タブに移動し、「メトリクスフィルターを作成」をクリックします。
フィルターパターンに以下を指定します。
{$.eventName = “Create*“ && $.eventName != “CreateLogStream”}
上記はCreate APIが呼ばれた場合、かつ CreateLogStream以外のアクションの場合にメトリクスを「1」と取得します。
*CreateLogStreamは大量に呼ばれるため、今回は排除しています。
メトリクス名前空間とメトリクス名にに任意の名前を指定します。
この例では以下の値とします。
メトリクス名前空間:「CloudTrailMetrics」
メトリクス名:「CreateAPICall」
メトリクス値: 1
Unit – カウント
確認画面で内容をチェックし、「メトリクスフィルターを作成」をクリックします。
4. CloudWatch Alarm作成
「メトリクスフィルター」タブで3で作成したメトリクスフィルターを選択し、「アラームを作成」をクリックします。
まずはアラームが発砲されることを確認したいので、期間: 1分、閾値:1で設定します。
**このままだと大量のアラートが上がってくるのでアラームの機能を確認後、調整することをお勧めします。
通知先のSNSを設定します。
アラーム名に任意の値を指定し、「アラームの作成」をクリックします。
5. アラームのトリガーテスト
最後にアラームの動作確認を実施します。
テスト前のアラームは「OK」状態です。
今回作成したアラームはAWSアカウントでリソースを作成したとき、すなわちCreate APIが呼ばれた時に発砲します。
テストとしてS3バケットを作成します。
アラームが「アラーム状態」に変われば動作確認はOKです。
CloudWatch > Metrics画面ではメトリクスとグラフが表示されます。
終わりに
いかがだったでしょうか。以上、CloudTrailとCloudWatchを組み合わせた、AWSでのAPI検知の実装について手順を書かせていただきました。皆様のお役に立てば幸いです。
Rackspaceについて
Rackspace Technologyの日本国内サービスは、アイレット株式会社Global Solutions事業部より提供させていただきます。Amazon AWSとMicrosoft Azureの導入検討のコンサルティング(勉強会)から構築、運用・保守までワンストップのクラウド支援サービスです。
お客様のご要望に柔軟に対応いたします。まずはお気軽にご相談ください。