[AWS]猫でもわかるBLEA (セキュリティ設定ベースライン)

## はじめに
この記事は私が2024年2月[JAWS-UG朝会 #54 LT枠](https://qiita.com/kamogashira)において発表した内容について、再編集＋加筆した記事になります。

[NTTテクノクロス株式会社](https://www.ntt-tx.co.jp/)の[メガクラチーム](https://www.ntt-tx.co.jp/products/aws/)に所属している加藤です。AWS関連の業務をしています。

## 資料紹介
AWSのセキュリティ設定ベースラインであるAWS JAPAN作成OSS [Baseline Environment on AWS](https://aws.amazon.com/jp/blogs/news/announcing-baseline-environment-on-aws/)(以下BLEAと略す)を俯瞰して理解するためにまとめた資料です。一部社内向けにカスタマイズ(Slack通知を省略など)＋あくまでの私個人が理解した内容をイメージ図にしたものです。そのため不正確な箇所もありますがそこは大目に見て下さい。

### BLEAの特徴をちょっとだけ紹介
本記事ではBLEA、[AWS Cloud Development Kit](https://docs.aws.amazon.com/ja_jp/cdk/v2/guide/home.html) (以下CDKと略す)についての紹介・説明は省かせてい頂きます。上記資料紹介のリンク先を確認してください。BLEAは日本語のドキュメトも充実しているのが嬉しいです。以下はちょっとだけ個人的主観のBLEA補足説明になります。
【BLEA補足説明】
![BLEA.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2366133/0a9adcd9-1636-db96-166e-9fdd3cd2337b.png)

【2024/08追記】
BLEAの初心者向け説明としては、[クラスメソッドさんのYoutube動画「BLEAでセキュリティレベルを向上させよう」](https://www.youtube.com/watch?v=txQJS8Zw-xM)が個人的には決定版だと思います。最初にこれを見るのがおすすめです。

### 作成動機
私は図にして整理しないと理解が進まないタイプです。BLEAを使うにあたり必要に迫られて描きました。

### 改版履歴
|年月|内容
|:-----------|:------------|
|2023年6月|作成着手|
|2023年7月|第1.0版完成(社内有識者レビュ実施)|
|2024年2月|第1.1版(JAWS-UG朝会 発表に向け見直し)|
|2024年5月|第1.2版(社内勉強会向け見直し。有識者レビュ実施)|
|2024年7月|第1.3版Qiita投稿版(誤記修正)|
|2024年8月|第1.4版(AWSアイコン誤記修正)|

## 猫でもわかるBLEA(カスタマイズ版)
### 子猫でもわかるBLEA
猫でもわかるBLEAをAWSアイコンンベースにし、より概要イメージ図化したものです。こちらも合わせてゆるく見てください。
![子猫でもわかるBLEA.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2366133/ba67d49c-deb7-3bcf-dfe3-0fc28e364a62.png)

### 猫でもわかるBLEA
CDKソース、生成されたCloudFormationソース、構築後の実環境からリバースした図です。リソース単位で図にしてあります。
![TX-BLEA_JAWS-UG版20240812_r1.drawio.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2366133/51124ce6-ac66-0d46-ef0c-b1fb792c2048.png)

※注意：Config自動修復、Slack通知省略など私の職場でカスタマイズした版です。

### CloudTrail検知の通知内容一覧
|説明|検知条件|
|:-----------|:------------|
|複数の不正なアクションまたはログインが試行されました!|5 分内の1データポイントのUnauthorizedAttemptsEventCount >= 5|
|IAM 構成の変更が検出されました!|5 分内の1データポイントのIAMPolicyEventCount >= 1|
|新しい IAM アクセス キーが作成されました|5 分内の1データポイントのNewAccessKeyCreatedEventCount >= 1|
|ルート ユーザーのアクティビティが検出されました!|5 分内の1データポイントのRootUserPolicyEventCount >= 1|

### EvnetBridgeへの通知内容一覧
|説明|検知元|
|:-----------|:------------|
|AWS Health イベントを通知|AWS Health Event|
|CloudTrail ログ構成の変更を通知|AWS API Call via CloudTrail|
|Config Rule コンプライアンスの変更について通知を送信|Config Rules Compliance Change|
|GuardDuty の検出結果について通知を送信|GuardDutyEC2 Finding|
|ネットワーク ACL の作成、更新、または削除を通知|AWS API Call via CloudTrail(EC2)|
|SecurityHub のすべての新しい検出結果とすべての更新について通知を送信|Security Hub Findings - Imported|
|セキュリティ グループの作成、更新、または削除を通知|AWS API Call via CloudTrail|

### 作成効果
この図を描く事によって、一部あやふやだったAWSセキュリティ設定の関係性について自分としては理解する事ができました。

### 想定読者
AWS Config、GuardDuty、AWS CloudTrail、Amazon CloudWatch、AWS Security Hub、Amazon EventBridge、Amazon SNSの名前・機能は知っているが、各マネージドサービスの関係性が理解できていない、具体的な設定として何をすれば良いか分からない人におすすめです。

## BLEAのお勧めポイント
### お客様に安心してセキュリティ設定の提案ができる
これは実体験ですが、AWSにあまり詳しくないお客様に対してAWSセキュリティ設計時に「AWS Japanのソリューションアーキテクト作成OSS」の看板効果は絶大です。ベースをBLEAにして後はお客様のセキュリティ要件に合せたカスタマイズすることでセキュリティ設計、構築の稼働を大幅に削減できるうえに品質も担保しやすいです。
### IaCにCDKを提案しやすい
BLEAはCDK(TpyteScript)でコーディングされています。そのためセキュリティ設定にBLEAを使うなら、「残りのAWS環境構築IaCもCDKにしましょう」の提案がとてもスムーズに行えます。最近私たちのチームではお客様に対してCDK+BLEAのセットで提案する事が多く、かつ実際に採用されるようになってきました。

## おわりに
BLEAは手順書通り行えば簡単に構築可能です。ただしお客様のセキュリティ要件に合せてのカスタマイズが必須だと思っています。その時にBLEAの構成理解は必須です。この記事がBLEAを利用される方の参考になれば幸いです。

### セキュリティ情報・イベント管理
BLEAではSecurity Information and Event Management(「セキュリティ情報・イベント管理」(以下SIEMと略す)は構築されません。こちらについてはAWS社中島氏が開発しているOSS [SIEM on Amazon OpenSearch Service](https://github.com/aws-samples/siem-on-amazon-opensearch-service/blob/main/README_ja.md)があります。こちらも合わせて検討をお勧めいたします。

### 猫でもわかるシリーズ紹介
過去に私が作成した猫でもわかるシリーズ記事の紹介です。
- [猫でもわかるDirect Connect(Cloud Wan対応版)](https://qiita.com/kamogashira/items/501543b04c1d9a2d9970)
- [猫でもわかるRoute53(Resolver,Hosted zone)](https://qiita.com/kamogashira/items/60a1f2720d016c167951)
- [猫でもわかった気になるRedshift Serverless(更新系限定)](https://qiita.com/kamogashira/items/df9bda2a7248b9af6b16)

## 参考文献
[Amazon Web Service ブログ BLEA紹介記事](https://aws.amazon.com/jp/blogs/news/announcing-baseline-environment-on-aws/)
[Baseline Environment on AWS Github](https://github.com/aws-samples/baseline-environment-on-aws)
 [SIEM on Amazon OpenSearch Service](https://github.com/aws-samples/siem-on-amazon-opensearch-service/blob/main/README_ja.md)