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

なるべく楽したいAWSセキュリティ

 なるべく楽したいAWSセキュリティ

オリジナル: https://slides.com/kokuyouwind/aws-startup-community-202205

AWS Startup Communityの「スタートアップ事例祭り 〜監視・モニタリング・セキュリティ編〜」で発表した資料です。 https://aws-startup-community.connpass.com/event/241721/

kokuyouwind

May 10, 2022
Tweet

More Decks by kokuyouwind

Other Decks in Programming

Transcript

  1. なるべく楽したい AWS セキュリティ Leaner Technologies Inc. 黒曜 (@kokuyouwind)

  2. $ whoami 黒曜 / @kokuyouwind 名古屋在住 Leaner Technologies Inc. 所属

    Rails エンジニア Next.js とか AWS 周りも触ってる
  3. https://leaner.jp/

  4. We're Hiring!!!

  5. AWS セキュリティ

  6. なんかいろいろある IAM WAF SSO Config Organization GuardDuty SecurityGroup CloudTrail SecurityHub

    ControlTower Inspector
  7. 🤔 何をどこまでやれば…… ?

  8. ちゃんと安全に運⽤したうえで、 なるべく楽したい!

  9. どうやって安全に楽をするか AWS のベストプラクティスに従う SecurityHub でセキュリティチェック なるべく持ち物を減らし、ツールの既定に合わせる Fargate を使い管理対象インスタンスを減らす ネットワーク環境構築をCopilot CLI

    に任せる アプリケーションレベルでもAWS サービスを活⽤する 典型的な攻撃はアプリ到達前にWAF で防ぐ ECR コンテナスキャンで脆弱性をチェックする
  10. … という話をしていきます

  11. アジェンダ セキュリティレイヤーの分類 AWS アカウントのセキュリティ ネットワークのセキュリティ Web アプリのセキュリティ データストアのセキュリティ まとめ

  12. アジェンダ セキュリティレイヤーの分類 AWS アカウントのセキュリティ ネットワークのセキュリティ Web アプリのセキュリティ データストアのセキュリティ まとめ

  13. AWS でWeb アプリを運⽤するとき、 攻撃されそうなポイントを考えてみる

  14. ざっくりしたWeb アプリ構成

  15. 攻撃ポイント1: AWS アカウント

  16. 攻撃ポイント2: ネットワーク

  17. 攻撃ポイント3: Web アプリ

  18. 攻撃ポイント4: データストア

  19. このあたりは確実に対策が必要

  20. アジェンダ セキュリティレイヤーの分類 AWS アカウントのセキュリティ ネットワークのセキュリティ Web アプリのセキュリティ データストアのセキュリティ まとめ

  21. AWS アカウントの初期設定は ベストプラクティスに従うのが確実

  22. https://dev.classmethod.jp/articles/aws-1st-step-2021/

  23. https://dev.classmethod.jp/articles/aws-security-all-in-one-2021/

  24. SecurityHub で設定状況チェック https://aws.amazon.com/jp/security-hub/

  25. Leaner のセキュリティスコア

  26. セキュリティスコア100% じゃないの? リモートワークだと物理MFA デバイスのハードルが⾼い ルート封印だけとはいえ、アカウント作るたびに 誰かがボトルネックになるのは避けたい 今は1password の仮想デバイスでMFA 設定している 重要度:

    中 以下は個別に対応するか検討している Copilot CLI で作ったリソースが引っかかっているのは リスク低ければ対応を⾒送っている ログ系は全対応するとコストが嵩む
  27. 環境ごとにAWS アカウントを分ける 誤操作や悪⽤時のリスクを低減

  28. Control Tower 使わないの? 徐々に設定を増やしていく戦略にしたので未導⼊ SSO など⾃分が未使⽤だったものは まず個別に触れてから統合サービスを⼊れたかった 新サービス⽤のAWS アカウント準備を優先したので なるべく⼩さく対応したかった

    次にAWS アカウント作る前には移⾏しておきたい 権限管理も現状は最低限の分類なので、 移⾏のタイミングで⾒直したい
  29. アジェンダ セキュリティレイヤーの分類 AWS アカウントのセキュリティ ネットワークのセキュリティ Web アプリのセキュリティ データストアのセキュリティ まとめ

  30. VPC やセキュリティグループは Copilot CLI に任せると安全かつ楽

  31. https://aws.github.io/copilot-cli/ja/

  32. Copilot CLI で構築した環境

  33. Copilot CLI 構築の良い点 VPC だけでなくALB やECS のセキュリティグループも ⾃動で作ってくれる ECS はALB

    からのアクセスしか受けつけない設定になる ECS on Fargate になるので持ち物が減る EC2 のOS やミドルウェア更新を気にしなくて良くなる copilot svc exec でssh ライクな作業も可能 今ならApp Runner だともっと持ち物を減らせる WAF 未対応など課題がありECS にしている
  34. アジェンダ セキュリティレイヤーの分類 AWS アカウントのセキュリティ ネットワークのセキュリティ Web アプリのセキュリティ データストアのセキュリティ まとめ

  35. Web アプリのセキュリティ対策 AWS WAF を挟んで典型的な攻撃を到達前にブロック 基本的なManaged Rule を適⽤ 標準リクエストで引っかかってしまうエンドポイントは 個別に許可ルールを設定

    ECR でコンテナイメージをスキャン 重⼤な脆弱性がないかだけ定期的にチェック GitHub Dependabot でセキュリティアラート VAddy で定期的に脆弱性検査テスト
  36. AWS WAF の推奨設定 https://www.wafcharm.com/blog/how-to-choose-aws-managed-rules/ Waf Charm のブログ記事にある 導⼊推奨セットがわかりやすい

  37. AWS WAF の実際の設定

  38. AWS WAF のブロックサンプル

  39. AWS WAF のブロック通知 Slack 通知してFalse Positive なブロックがないかチェック https://zenn.dev/leaner_tech/articles/20211125-waf-notify

  40. ECR Container Scan コンテナイメージを Clair でスキャンした結果が⾒られる

  41. Critical 含めていっぱい出てない? CVE は False Positive も結構出る (Docker のFAQ にも項⽬がある)

    https://github.com/docker-library/faq#image-building
  42. Docker Image のCVE は推移が重要 イメージ検査を重視するなら拡張スキャンにすると良さそう ( ただしスキャン毎のコストがそこそこ掛かるようになる) https://docs.aws.amazon.com/ja_jp/AmazonECR/latest/userguide/image-scanning.html

  43. アジェンダ セキュリティレイヤーの分類 AWS アカウントのセキュリティ ネットワークのセキュリティ Web アプリのセキュリティ データストアのセキュリティ まとめ

  44. データストアのセキュリティ対策 基本的なことをちゃんとやる RDS はパブリックアクセスを無効にする RDS の接続元はセキュリティグループで絞る S3 は「パブリックアクセスをすべてブロック」にする データの暗号化を有効にする SecurityHub

    に従っていれば上記は設定されているはず
  45. アジェンダ セキュリティレイヤーの分類 AWS アカウントのセキュリティ ネットワークのセキュリティ Web アプリのセキュリティ データストアのセキュリティ まとめ

  46. どうやって安全に楽をするか(Reprise) AWS のベストプラクティスに従う SecurityHub でセキュリティチェック なるべく持ち物を減らし、ツールの既定に合わせる Fargate を使い管理対象インスタンスを減らす ネットワーク環境構築をCopilot CLI

    に任せる アプリケーションレベルでもAWS サービスを活⽤する 典型的な攻撃はアプリ到達前にWAF で防ぐ ECR コンテナスキャンで脆弱性をチェックする