AWSアカウントで実行されたAPIを監視する CloudTrail + CloudWatch

2024年1月4日- By Rika Chinen

Ⅰ. はじめに

この記事ではAWSアカウントでのAPI検知の実装について書きたいと思います。CloudTrailとCloudWatchを組み合わせることで実装できます。

Ⅱ. CloudTrail とは

CloudTrailとはAWS上で実行されたAPIアクションを記録し、AWSアカウントの運用と監査を可能にするサービスです。

Ⅲ. ユースケース – 監視項目

どのようなアクションを監視するか、ユースケースを考えてみます。

Ⅳ. 作るもの 

a. CloudTrail – アカウントのAPIアクションを記録する

b. CloudTrailCloudWatch Log Group
CloudTrailの設定でCloudWatch Logsを有効化するとロググループが作成されます。

c. CloudWatch Metrics Filter
上記ロググループにメトリクスフィルターを作成し、検知したいAPIをフィルターします。

d. CloudWatch Alarms
メトリクスフィルターから取得したメトリクスを使ってCloudWatch アラームを作成します。

Ⅴ. 実践

上記を実装してみました。「III.ユースケース監視項目」の「CreateAPICall」の作成を以下のステップで説明します。

  1. CloudTrailの設定
  2. CloudWatch Logsの確認
  3. Metrics Filterの作成
  4. CloudWatch Alarmの作成
  5. アラームのトリガーテスト
 1. CloudTrail の設定

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画面ではメトリクスとグラフが表示されます。

終わりに

いかがだったでしょうか。以上、CloudTrailCloudWatchを組み合わせた、AWSでのAPI検知の実装について手順を書かせていただきました。皆様のお役に立てば幸いです。

Rackspaceについて 

Rackspace Technologyの日本国内サービスは、アイレット株式会社Global Solutions事業部より提供させていただきます。Amazon AWSMicrosoft Azureの導入検討のコンサルティング(勉強会)から構築、運用・保守までワンストップのクラウド支援サービスです。

お客様のご要望に柔軟に対応いたします。まずはお気軽にご相談ください。