はじめに

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

CloudTrail とは

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

ユースケース – 監視項目

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

 作るもの

  • CloudTrail – アカウントのAPIアクションを記録する
  • CloudTrailのCloudWatch Log Group
    CloudTrailの設定でCloudWatch Logsを有効化するとロググループが作成されます。
  • CloudWatch Metrics Filter
    上記ロググループにメトリクスフィルターを作成し、検知したいAPIをフィルターします。
  • 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検知の実装について手順を書かせていただきました。皆様のお役に立てば幸いです。

アイレット株式会社のGlobal Solutions事業部では、お客様のビジネス変革を実現しながら、最新のデータソリューションの導入を加速できるように設計されたデータ分析ソリューションとデータサービスの幅広いポートフォリオを提供しています。ビジネスの成功こそ、私たちが追求するものです。お困りの際はぜひ一度お気軽にお問い合わせください。

cloudpack サービスページ