Slide 1

Slide 1 text

第146回 雲勉 BLEAを眺めて CDKの書き方について学ぶ

Slide 2

Slide 2 text

講師自己紹介 2 ◼ 本田 岳士 • クラウドインテグレーション事業部ソリューション開発セクション 第2開発グループ • アイレット歴1年4ヶ月 • 一人旅と猫と変なTシャツの人。Serverless好き

Slide 3

Slide 3 text

アジェンダ 3 1. BLEAとは 2. READMEを読んでみよう 3. CDKのソースコードを読んでみよう

Slide 4

Slide 4 text

1. BLEAとは 4

Slide 5

Slide 5 text

1.BLEAとは 5 ◼ BLEA(Baseline Environment on AWS)とは • AWS Well-ArchitectedやAWS Security Reference Architecture(AWS SRA)といったド キュメントで提供されているセキュリティのベストプラクティスの中で、どのようなシステム でも最低限実施すべき基本的な設定(ベースライン)をAWS CDKによってテンプレート化され たもの。 • ソースコードはGitHub上で公開されている。READMEがとても丁寧に書かれていて、CDKの 環境構築のチュートリアルとしても十分使える。 • 単一のアカウントをセットアップするStandalone版と、AWS Control Towerをベースとした マルチアカウント版があり、いずれの場合もGuest SystemとGovernance Baseに分けられてい る。 https://github.com/aws-samples/baseline-environment-on-aws

Slide 6

Slide 6 text

1.BLEAとは 6

Slide 7

Slide 7 text

1.BLEAとは 7 Governance Base Guest System • usecasesのディレクトリにGovernance BaseとGuest Systemが用意されている。Guest SystemについてはEC2, ECS, Serverless APIの3パターン。 • CDKはTypeScriptで記述されている。ServerlessについてはLambdaのサンプルコードも用意 されている(Node.jsとPython)。

Slide 8

Slide 8 text

2. READMEを読んでみよう 8

Slide 9

Slide 9 text

2.READMEを読んでみよう 9 ◼ READMEがとても丁寧に書かれている • 導入手順/HowToの説明が細やか • Standalone版からマルチアカウント版への移行とCDK Pipelineを使ったCI/CD(パイプラ イン構成パターンが複数紹介されている)の具体的な手順が説明されている 9

Slide 10

Slide 10 text

2.READMEを読んでみよう 10 導入手順/HowTo プロジェクト導入時の Gitのpre-commit hookのセットアップも (導入手順の冒頭部分) 環境ごとのパラメータの設定の書き方まで VSCodeの導入手順から

Slide 11

Slide 11 text

3. CDKのソースコードを読んでみよう 11

Slide 12

Slide 12 text

3. CDKのソースコードを読んでみよう 12 ◼ エントリポイント(Standalone版のGovernance Base) 環境変数などを設定 (ここではリソースを作ったりしない)

Slide 13

Slide 13 text

3. CDKのソースコードを読んでみよう 13 ちなみに、複数環境のリソースを管理したい場合はtryGetContextを使用してcdk deploy のcontextオプションで環境を指定して使うやり方がある parameter.tsにstgParameter, prdParameterなどを追加して envの値に応じて変数を切り替える

Slide 14

Slide 14 text

3. CDKのソースコードを読んでみよう 14 ◼ スタック定義ファイル(Standalone版のGovernance Base) • props(第3引数)の型を定義 • コンストラクタでそれぞれサービス群 (constructディレクトリ内)をインスタンス化

Slide 15

Slide 15 text

3. CDKのソースコードを読んでみよう 15 ◼ リソース定義(Standalone版のGovernance Base) • props(第3引数)の型を定義 • 各リソースを作成 AWS GuardDuty AWS Security Hub AWS Conformance Pack AWS Config Rules

Slide 16

Slide 16 text

3. CDKのソースコードを読んでみよう 16 ◼ エントリポイント(Guest SystemのServerless API) 環境変数などを設定 (ここではリソースを作ったりしない)

Slide 17

Slide 17 text

3. CDKのソースコードを読んでみよう 17 ◼ スタック定義ファイル(Guest SystemのServerless API) • props(第3引数)の型を定義 • コンストラクタでそれぞれサービス群 (constructディレクトリ内)をインスタンス化

Slide 18

Slide 18 text

3. CDKのソースコードを読んでみよう 18 ◼ リソース定義(Guest SystemのServerless API) • api.tsでAmazon API Gatewayのリソースを定義して いる • ここでAWS Lambdaのリソースも作成している →AWS Lambdaのコードは?

Slide 19

Slide 19 text

3. CDKのソースコードを読んでみよう 19 ◼ リソース定義(Guest SystemのServerless API) AWS GuardDuty AWS Security Hub AWS Conformance Pack AWS Config Rules ローカルのパスとhandlerを指定 (S3にアップロードされたファイルを指定することもできる)

Slide 20

Slide 20 text

3. CDKのソースコードを読んでみよう 20 ◼ Lambda(Guest SystemのServerless API) ちゃんとLambdaのサンプルコードも用意されている (DynamoDBのデータ取得・書き込み)

Slide 21

Slide 21 text

リファレンス 21 • AWS環境にセキュアなベースラインを提供するテンプレート 「Baseline Environment on AWS」のご紹介 https://aws.amazon.com/jp/blogs/news/announcing-baseline-environment-on-aws/ • AWS CDK API Reference https://docs.aws.amazon.com/cdk/api/v2/docs/aws-construct-library.html • AWS CDK Immersion Day ワークショップ https://catalog.us-east-1.prod.workshops.aws/workshops/10141411-0192-4021- afa8-2436f3c66bd8/ja-JP • AWS CDK Examples(GitHub) https://github.com/aws-samples/aws-cdk-examples

Slide 22

Slide 22 text

22 ひとこと:BLEAサイコー!

Slide 23

Slide 23 text

23 ご清聴ありがとうございました!