セキュリティ対策に効果的なAWSサービスの運用・適用の工夫3選

本記事は[リンクアンドモチベーション Advent Calendar 2023](https://qiita.com/advent-calendar/2023/lmi)の22日目の記事になります


# はじめに
弊社ではより堅牢なセキュリティ体制にするために[CIS Controls](https://www.cisecurity.org/controls)というフレームワークに沿ってサイバー攻撃に対する対策を見直してます。
今回、<b>CIS Controlsというフレームワークの中でセキュリティ対策で効果的な３つのAWSサービスについての運用・適用の工夫</b>を紹介できればと思います。
※使用しているAWSサービス数が多いので絞らせてもらいます。

## CIS Controlsのフレームワークとは？
米国のセキュリティ非営利団体であるCISが、企業がサイバーセキュリティ対策として取り組むべきことをまとめたガイドラインです。サイバー動向の変化に合わせて頻繁に更改されています。
直近の更改では、テレワークの増加やクラウドサービスの活用増加等の影響を受け作成されました。

全部で18項目あります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/575460/d17e32c8-b341-913c-a191-246764acfc6d.png)

[参考文献](https://www.nri-secure.co.jp/blog/cis-controls-v8)

## 紹介するAWSサービスとCIS Controlsの項目の関係
今回記事で紹介するAWSサービスは`AWS Config`,`Amazon GuardDuty`,`AWS WAF`です。
それぞれのサービスを使うとどの項目に効果的かを表します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/575460/dc76a95c-abd3-c81b-32ac-5ce452754748.png)




以下でそれぞれのAWSサービスの概要と運用・適用の工夫を記載します。


## AWSサービスごとの概要と運用・適用の工夫
### AWS Config
#### 概要
AWSリソースの設定を追跡、監査、評価するサービスです。これにより、リソースの設定変更の影響を特定し、セキュリティと運用の監査を効率的に行うことができます。
Configの設定をオンにするだけで、簡単にAWS内の全てのリソースの追跡をし、意図していないリソースが作成・挙動していないかの特定が可能です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/575460/236ae74a-0978-6df4-057e-b850d31ed903.png)


#### 運用・適用の工夫
単純にConfigをオンにするだけだと、リソースの情報は保持できていますが、うまく運用に載せるのが難しいです。
意図していないリソースが作られていないかの特定をするために以下の工夫で運用してます。

[AWS Configの中の高度なクエリ](https://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/find-aws-resources-based-on-their-creation-date-by-using-aws-config-advanced-queries.html)を使用して、自分たちが意図していないリソースが勝手に作られていないかを週次で自動で通知し確認してます。（※画像参照）

意図していないリソースはないか以外で確認する観点は以下を取り入れてます。
・パブリックに公開していないか？
・機密情報が適切に取り扱われているか？
・コストが急激に増加しないか？
上記を判断して、それぞれのリソースに適切な対応をしてます。

通知の量が多い時に大変ですが、今後その判断も自動化でできないかを検討していきたいと思ってます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/575460/747702d0-f35e-2590-22f9-c4df333b66b5.png)



### Amazon GuardDuty
#### 概要
ユーザの操作や通信などのログを継続的にモニタリング、不審なサーバーとの通信や不正アクセスなど「悪意がある」と疑われる挙動を、機械学習を用いて検出してくれます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/575460/b1814057-c877-c669-97eb-4672fa604cfb.png)


最近では[ECS Runtime Monitoring](https://aws.amazon.com/jp/blogs/news/introducing-amazon-guardduty-ecs-runtime-monitoring-including-aws-fargate/)という機能が追加され、Fargateなどのコンテナに対してのセキュリティ問題の検知をしてくれるようになりました。


#### 運用・適用の工夫
定期的にコンソールを見に行くのは辛いので、Lambdaを使用して検知したら通知する運用にしています。
GuardDutyから検知された内容を通知することで即座に反応し異常があるかないかを判断し、迅速に対応することができます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/575460/4fdc8d50-fbc6-944a-700b-21e0df37906a.png)


### AWS WAF
#### 概要
ウェブアプリケーションの脆弱性を狙って仕掛けられる悪意ある攻撃から、ウェブアプリケーションを保護することができます。
アクセスしてくるユーザーとウェブアプリケーションの間にWAFを挟むことにより、悪意ある攻撃の通信を遮断してウェブアプリケーションを防御することができます。
リクエストの発生元のIPアドレスまたはクエリ文字列の値など、指定したルールに基づいて、保護されたリソースに関連付けられたサービスはリクエストに対し、リクエストされたコンテンツ、HTTP403ステータスコード (禁止)、カスタム応答のいずれかで応答します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/575460/89d2194e-bb84-fdfa-45a2-1565b7668ce9.png)


#### 運用・適用の工夫
適用するルールを決めてWAFをリソースに紐づけて導入するだけですが、正常なリクエストを間違ってブロックしてしまう可能性があります。
なのでまず`カウントモード`を使用してから適用します。`カウントモード`とはブロックするのではなくその数をカウントするだけのモードです。
`カウントモード`の数を確認し、使用しているルールがサービスに問題がないかを判断します。
その判断の後、カウントモードを解除しWAFを運用に乗せることができます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/575460/dd4be062-39c8-1a58-bf73-c81001d3a7af.png)


## 最後に
セキュリティ対策をAWSサービスを使うことで、メンテナンスコストを減らすことができ、運用を形骸化しないようにすれば半永久的に安全性が保たれます。
弊社も活用しきれていない部分はあるので、今後いろんなサービスを試しながら開発組織に運用・適用できるサービスを見つけセキュリティレベルを高めていきたいと思います。