CDKざっくり説明
プログラム言語でAWSのリソースを定義出来ます。
JavaScript、TypeScript、Python、Java、C#、Go(開発者プレビュー)がサポートされています。
コードをデプロイするとCloudFormation(CFn)のスタックが作成されAWSリソースが作成されます。
CFnで書いくのと比べて可読性が高く、コード量を減らすことが出来ます。
BLEAざっくり説明
AWSのセキュリティのベストプラクティスを実装したテンプレートです。CDKで実装されています。
ガバナンスベース(共通設定)とゲストシステム(システム固有の設定)の2層になっています。
提供されているガバナンスベースのテンプレートをデプロイすると下記リソースが自動的に作成されます。また標準的なゲストシステムのサンプルも提供されています。
環境によるカスタマイズは必要ですが、標準的なセキュリティ設定適用の自動化が可能になります。
ガバナンスベーステンプレートで設定される内容
- CloudTrail による API のロギング
- AWS Config による構成変更の記録
- GuardDuty による異常なふるまいの検知
- SecurityHub によるベストプラクティスからの逸脱検知 (AWS Foundational Security Best Practice, CIS benchmark)
- デフォルトセキュリティグループの閉塞 (逸脱した場合自動修復)
- AWS Health イベントの通知
- セキュリティに影響する変更操作の通知(一部)
- Slack によるセキュリティイベントの通知
BLEAを試してみた理由
「BLEAはCDKの学習用途」もあるようです。(下記AWS BlogやAWSサミットのBLEA解説の動画より)
これからCDKを勉強するときに最初から書くのは大変だなと思っていましたが、提供されているサンプルがあったり、サンプルの中のコメントがしっかり書かれているため、CDK学習のハードルが少し下がりました。TypeScriptはしっかり勉強しようと思いました。。
BLEAざっくり手順
デフォルトで提供されるガバナンスベースのテンプレートをデプロイしてみます。
下記のようにお試しであれば複雑な手順なく実行可能です。
- CDKの前提環境用意(Nodejs、VSCode、認証設定など)
-
リポジトリの取得(git clone)とプロジェクト初期化
-
AWS ChatBotの準備
BLEAでは通知にSlackを使いますのでSlack上にチャネルを作成してChatBotの初期設定をします。 -
ガバナンスベースのデプロイ
詳細は下記公式のREADMEを参照下さい。
実行結果
- スタック作成
下記のようにCFnのテンプレートが作成後、AWSリソースが作成されます。
なお既にリソースがある場合(例.AWS Configが既に有効可されていたり)はスタックデプロイ時にエラーとなりますのでリソース削除後に再実行してみます。
- リソース作成
AWS Config、Cloud Trailの証跡設定など、各種設定が実施されていることが確認出来ます。
また、セキュリティアラートの通知が設定したSlackに通知されたことを確認出来ました。