こんにちは、ひろかずです。
s3に機密データを格納している場合、ACLを設定していても許可以外のユーザーからのアクセスがあるのか心配になりますよね。
今回は、Amazon Macieを使って簡単にアラートを作ることができたので、一筆書きます。
参考ドキュメント
前提条件
- オレゴンかバージニアリージョンにてMacieを有効化していること
- MacieでCloudTrailの情報を評価できる状態になっていること
工程
- カスタムベーシックアラートの作成
- SNSトピックの作成
- 動作確認
1. カスタムベーシックアラートの作成
検出したい動作を抽出するクエリーの作成
クエリーの検索結果からベーシックアラートを作ります。
Macie管理画面のナビゲーションペインのRESEARCH
を選択して、以下クエリー文をクエリー窓に入力します。
今回は、MYBACKETNAMEというs3バケットに対する、GetObject
, PutObject
, DeleteObject
の操作を成否を問わず検出するクエリーにしました。
(eventNameErrorCode.key:"GetObject" OR eventNameErrorCode.key:"PutObject" OR eventNameErrorCode.key:"DeleteObject"); AND; resources.key:"arn:aws:s3:::MYBACKETNAME"
Search(虫眼鏡)アイコンをクリックすると、検索結果が表示されます。
検索結果を確認しながら、クエリーを調整するといいでしょう。
ホワイトリストに掲載するユーザー表記の確認
検索結果が妥当であれば、検索結果からホワイトリストに登録するユーザー表記を確認します。
- ホワイトリストには、Macie unique IDという形式で登録する必要があります。
検索結果の後半にThe following are top 10 matching results:
というセクションがあるので、展開します。
Macie unique IDを見ると、awsmacieservicecustomerservicerole
というものがありますね。
Macieのサービスロールによるアクセスなので、ホワイトリストに登録することにします。
- その他に、意図されているIAMロールやIAMユーザーのアクティビティを探して、Macie unique IDを控えておきます。
カスタムベーシックアラートの作成
クエリー窓下の▲ボタンを選択して、カスタムベーシックアラートを作成します。
アラートタイトルとディスクリプションを適宜設定します。
Severutyは、ひとまずInformational
にしておきますが、検知状況を見ながら適宜調整するといいでしょう。
Whitelisted Usersには、このような形で登録しておきます。
最後にSave
します。
2. SNSトピックの作成
Amazon Macie ユーザーガイドを参照して、SNSトピックを作成します。
3. 動作確認
ホワイトリストに掲載していないIAMユーザーを使って、当該バケットに対してPutとDeleteを行いました。
また、権限を外して、Putを行っています。
20分後くらいに検知がありました。
- 今回は、アラートタイトルを
Non Systematic Access to s3 Buckets
としました。
アラート選択して、内容を確認します。
試行回数は3回なので、Total resultsは合ってます。
Error codesがAccessDenied
となってますね。
正しくは2回成功、1回失敗なのですが...
Alert detailsを見ると内訳がわかりますね。
検知内容を見る時は、Alert detailsを確認するといいでしょう。
最後に
これまでは、同じことをしたい場合は、Cloudwatch Events Rulesを使うのが定石だったと思いますが、選択肢が一つできた感じですね。
クエリーのアドホック分析をしながら、結果をアラートにできるので、設定は作りやすいと思います。
今日はここまでです。
お疲れ様でした。