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