Upgrade to Pro — share decks privately, control downloads, hide ads and more …

cdk-nag を既存環境に適用してみる

cdk-nag を既存環境に適用してみる

NCDC主催 AWSなんでもLT会#6 登壇資料

hanna

May 10, 2024
Tweet

Other Decks in Technology

Transcript

  1. 自己紹介 • 経歴 ◦ 公務員→社内SE→開発2年目 • 業務 ◦ バックエンド・AWS構築・アーキテクチャ •

    興味 ◦ AWS CDK・Terraform ◦ DevOpsSec・監視 • すきなAWSサービス ◦ Amazon SQS hanna
  2. もくじ cdk-nag ? cdk app + cdk-nag 見えた もの ?

    まとめ 感じた こと ? AWS CDK ? 🪄 introduction what i did consideration summary
  3. 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
  4. 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
  5. cdkで作成した既存環境に対して、cdk-nagを適用してみました。 ひとまず作った簡単なものですが、どれほどの指摘を受けるのでしょうか? 🙄 cdk app + cdk-nag AWS Solutions というルール

    でスキャンします🪄 ※AWS Solutions 技術的・ビジネス上の課題に対応した、規範的な構成を ルールとして定義しているもの
  6. 見えたもの ? チェック対象となったルール 22件中 11件 が指摘事項として評価されました! • ※ターミナルでは、Errorレベルは赤、Warningレベルだと橙で指摘がでます。 • ※全体の評価結果はCSVのレポートに出力されます。

    ◦ ルールに準拠していない場合、レポートでは「Non-Compliant」という評価がつきます。 ◦ ↓レポートはこんな感じでCSV出力されます 「指定ルールに準拠していない」として評価されたものを一部抜粋して、「どのような指摘が出たの か?」を見てみます。
  7. 例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
  8. 例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
  9. 例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::<policy> for AWS managed policies. Lambdaの実行ロールが自動生成されており、そのロールにAWSマネージドポリシーが付与されています。マネージ ドポリシーでは、リソースを絞った制御がされていないために出ている指摘です。 自動生成されたロールに対しては指摘されることが多くあると思います(今回も指摘11件中4件はこのルールによる ものでした)。 特に懸念事項もない場合は、サプレスして良いと思います。 (マネージドポリシーを使うべきか否か?はまた話題になりそうです🧐)
  10. 感じたこと 🤷 • AWS CDK は設定値が抽象化され、いい感じの設定で作ってくれる • が、それがセキュリティの指摘事項になり得る ◦ 提供するアプリケーションの特性や要求事項に対して、「この設定でいいのか?」を改めて

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