Slide 1

Slide 1 text

cdk-nag を既存環境に適用してみる AWSなんでもLT会#6 2024-05-10 Fri hanna 🙆🔰 初心者LT

Slide 2

Slide 2 text

自己紹介 ● 経歴 ○ 公務員→社内SE→開発2年目 ● 業務 ○ バックエンド・AWS構築・アーキテクチャ ● 興味 ○ AWS CDK・Terraform ○ DevOpsSec・監視 ● すきなAWSサービス ○ Amazon SQS hanna

Slide 3

Slide 3 text

お伝えしたいこと cdk-nag はAWSの学びを深くする 🙆✨

Slide 4

Slide 4 text

もくじ cdk-nag ? cdk app + cdk-nag 見えた もの ? まとめ 感じた こと ? AWS CDK ? 🪄 introduction what i did consideration summary

Slide 5

Slide 5 text

AWS CDK ? ● =AWS Cloud Development Kit ● AWS のリソースをコードで実装、管理することができる ○ Infrastructure as Code の手法 ● TypeScript、JavaScript、Python などがサポートされている ● これから入門する方には ○ TypeScript ではじめるのがおすすめのようです ○ 公式のワークショップ🔰がおすすめ(取り掛かりやすい) ■ https://catalog.workshops.aws/typescript-and-cdk-for-beginner /ja-JP

Slide 6

Slide 6 text

cdk-nag ? ● AWS CDK アプリケーションに対するセキュリティスキャンツール ● 指定したセキュリティルールに則っているか?をチェックする ✔ ○ ※セキュリティルールは、あらかじめcdk-nagで用意されている ● ルールを除外したい場合は、そのルールを抑制(サプレス)することができる ✔ ● これから入門する方には ○ 公式ブログがおすすめ(わかりやすい) ■ AWS Cloud Development Kit と cdk-nag でアプリケーションのセキュリティと コンプライアンスを管理する | Amazon Web Services ブログ ○ リポジトリも充実(よく見る) ■ GitHub - cdklabs/cdk-nag: Check CDK applications for best practices using a combination of available rule packs

Slide 7

Slide 7 text

cdkで作成した既存環境に対して、cdk-nagを適用してみました。 ひとまず作った簡単なものですが、どれほどの指摘を受けるのでしょうか? 🙄 cdk app + cdk-nag AWS Solutions というルール でスキャンします🪄 ※AWS Solutions 技術的・ビジネス上の課題に対応した、規範的な構成を ルールとして定義しているもの

Slide 8

Slide 8 text

わあ、赤い

Slide 9

Slide 9 text

見えたもの ? チェック対象となったルール 22件中 11件 が指摘事項として評価されました! ● ※ターミナルでは、Errorレベルは赤、Warningレベルだと橙で指摘がでます。 ● ※全体の評価結果はCSVのレポートに出力されます。 ○ ルールに準拠していない場合、レポートでは「Non-Compliant」という評価がつきます。 ○ ↓レポートはこんな感じでCSV出力されます 「指定ルールに準拠していない」として評価されたものを一部抜粋して、「どのような指摘が出たの か?」を見てみます。

Slide 10

Slide 10 text

例1: AwsSolutions-COG2 ● 対 象:Cognito ● レベル:Warning ● 理 由:The Cognito user pool does not require MFA. ● 説 明:Multi-factor authentication (MFA) increases security for the application by adding another authentication method, and not relying solely on user name and password. 多要素認証を必須とし、アプリケーションのセキュリティを高めることを狙います(普段使用しているツールでも、 MFAを追加できる or 必須とする運用が増えたように感じます✍)。 UserPool を定義する際に、{ mfa: cognito.Mfa.OFF/OPTIONAL/REQUIRED } で設定することができます。 OPTIONAL は、ユーザがMFAを有効にするかどうかを選択することができる、という設定値で、OPTIONAL にした 場合もこの警告がでます。 内部的な認証や、信頼できるネットワーク内での認証の場合は必須でないという判断もあります。 詳細はこちら:ユーザープールに MFA を追加します - Amazon Cognito

Slide 11

Slide 11 text

例2: AwsSolutions-COG3 ● 対 象:Cognito ● レベル:Error ● 理 由:The Cognito user pool does not have AdvancedSecurityMode set to ENFORCED. ● 説 明:Advanced security features enable the system to detect and act upon malicious sign-in attempts. アドバンスドセキュリティ機能をONにすることで、悪意あるアクティビティを検知し対処することを狙います。 AUDIT と ENFORCED の2モードがあり、AUDIT はアクション等は設定せず、CloudWatchにメトリクスを送ること のみ実行します。 ENFORCED で設定するアクション例としては、漏えいした認証情報に対するアクションであったり、アダプティブ 認証に自動応答を割り当てるアクション等があります。 UserPool を定義する際に、{ advancedSecurityMode: cognito.AdvancedSecurityMode.AUDIT/ENFORCED } で設定 することができます。 内部アプリケーションであったり、低リスクのアプリであった場合は不要という判断もあります。 詳細はこちら:ユーザープールにアドバンストセキュリティを追加する - Amazon Cognito

Slide 12

Slide 12 text

例3: AwsSolutions-IAM4 ● 対 象:LambdaResolver の実行ロール、他 ● レベル:Error ● 理 由:The IAM user, role, or group uses AWS managed policies. ● 説 明:An AWS managed policy is a standalone policy that is created and administered by AWS. Currently, many AWS managed policies do not restrict resource scope. Replace AWS managed policies with system specific (customer) managed policies. This is a granular rule that returns individual findings that can be suppressed with appliesTo. The findings are in the format Policy:: for AWS managed policies. Lambdaの実行ロールが自動生成されており、そのロールにAWSマネージドポリシーが付与されています。マネージ ドポリシーでは、リソースを絞った制御がされていないために出ている指摘です。 自動生成されたロールに対しては指摘されることが多くあると思います(今回も指摘11件中4件はこのルールによる ものでした)。 特に懸念事項もない場合は、サプレスして良いと思います。 (マネージドポリシーを使うべきか否か?はまた話題になりそうです🧐)

Slide 13

Slide 13 text

感じたこと 🤷 ● AWS CDK は設定値が抽象化され、いい感じの設定で作ってくれる ● が、それがセキュリティの指摘事項になり得る ○ 提供するアプリケーションの特性や要求事項に対して、「この設定でいいのか?」を改めて 考えるきっかけができる ● AWSリソースをセキュリティ的な観点から学び、見直すことができる ● いっぱい指摘してほしい ○ こういう観点で見ているんだな、を習得できる ○ ルールの除外に際しても、「こうであるから」を明示するため、なぜそのルールが必要なの かを考えることで、セキュリティに関する知識をより深めることができる 複数アプリケーションで出力レポートを集計したら、アプリケーションごとの特性・要求事項にどのよ うに応じたか?を横断的に見ることができていいなと思いました。

Slide 14

Slide 14 text

まとめ ● cdk-nag はAWSの学びを深くします ● ルールに準拠させる過程で、AWSのセキュリティへの理解を深めることができます 運用に乗せられるよう、引き続き触れていきたいと思います。

Slide 15

Slide 15 text

ご清聴ありがとうございました 🙆✨