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

コンテナセキュリティの概要と デプロイフローに組み込んだ後の課題

コンテナセキュリティの概要と デプロイフローに組み込んだ後の課題

Takashi Yamaguchi

February 16, 2024
Tweet

More Decks by Takashi Yamaguchi

Other Decks in Technology

Transcript

  1. 株式会社 Gunosy テクノロジー本部 プロダクト開発部 SREチーム マネージャー 山口 隆史 <YAMAGUCHI Takashi>

    2024年2月16日(金) コンテナセキュリティの概要と デプロイフローに組み込んだ後の課題
  2. (C) Gunosy Inc. All Rights Reserved. PAGE | 2 エレベーターピッチ

    [セキュリティに興味がある人]、 [セキュリティをこれから始めたい人]向けに発表する [コンテナセキュリティの概要とデプロイフローに組み込んだ後の課題]は [現場にセキュリティを適用した後の話]です これは[大きくない開発組織でのセキュリティ対応の現場での実践に基づい て構成しているため、現実感]があり これまでの成功事例やベンダーのセールス資料とは違って [コンテナセキュリティの全体像と定常運用した時の課題に焦点をあててい る]
  3. (C) Gunosy Inc. All Rights Reserved. PAGE | 3 終了後に狙う状態

    論理面 - コンテナセキュリティの概要が理解できる - Gunosyでのセキュリティツール選択の観点が理解できる - セキュリティ対策を現場に適用して、理想的な運用状態になるまでに発生 する・した課題が理解できる 感情面 - セキュリティ対策に興味を持ってやってみようと思える
  4. (C) Gunosy Inc. All Rights Reserved. PAGE | 5 自己紹介

    氏名:山口隆史(やまぐちたかし) 所属:株式会社Gunosy テクノロジー本部 プロダクト開発部 SREチーム マネージャー 業務:コンサルティング SREとしての活動 略歴:フリーランス、SIer等を渡り歩く→現職(2022/01〜) 自称:Security Hub芸人 好きなAWSサービス:Security Hub、GuardDuty、サポート 他:AWS Community Builder(Security & Identity)、JAWS-UG千葉支部運営、   Snyk Ambassador 第022587号
  5. (C) Gunosy Inc. All Rights Reserved. PAGE | 6 株式会社Gunosy

    ギリシャ語で「知識」を意味する「Gnosis(グノーシス)」+「u(“you”)」 「”Gnosis” for “you”」あなたのための知識  =情報を届けるサービスを提供し続ける、という意味 ▪ 2012年11月創業 ▪ 2015年4月東証マザーズ上場 ▪ 2017年12月東証第一部に市場変更 ▪ 2022年4月東京証券取引所の市場一部からプライム市場に移行 ▪ 従業員数 252名 (2023年5月末現在 連結ベース) ▪ 事業内容 – 情報キュレーションサービスその他メディアの開発及び運営 ▪ 提供サービス  グノシー、ニュースパス、 auサービスToday、 企業理念「情報を世界中の人に最適に届ける」
  6. (C) Gunosy Inc. All Rights Reserved. PAGE | 8 アジェンダ

    話すこと • コンテナセキュリティの概要 • デプロイフローへの組み込み • まとめ
  7. (C) Gunosy Inc. All Rights Reserved. PAGE | 15 実際にコンテナセキュリティに求められる領域

    コンテナより低レイヤで セキュリティが適切に担 保されていることの方が 大事だったりします
  8. (C) Gunosy Inc. All Rights Reserved. PAGE | 18 コンテナへの攻撃経路

    出典: コンテナセキュリティ P.23-25 ▪ 脆弱なアプリケーション ▪ コンテナイメージの設定不備 ▪ ビルドマシン攻撃 ▪ サプライチェーン攻撃 ▪ コンテナの設定不備 ▪ 脆弱なホスト ▪ 公開されたシークレット ▪ 安全でないネットワーキング ▪ コンテナエスケープの脆弱性
  9. (C) Gunosy Inc. All Rights Reserved. PAGE | 20 セキュリティの原則

    出典: コンテナセキュリティ P.32-33 ▪ 最小権限 – 処理を実行するのに最小の権限に制限する ▪ 多層防御 – 攻撃者がある防御を突破できても別のレイヤー防ぐ ▪ 攻撃対象領域の縮小(アタックサーフェースの縮小) – システムの複雑さを解消することで、攻撃しにくくする ▪ 影響範囲の制限 – 小さなコンポーネントに分割して、最悪の事態発生時の影響を限定的にする ▪ 職務分掌 – 異なるコンポーネントに対して、可能な限り最小限の権限のみを与える
  10. (C) Gunosy Inc. All Rights Reserved. PAGE | 21 セキュリティの原則

    出典: コンテナセキュリティ P.32-33 ▪ 最小権限 – 処理を実行するのに最小の権限に制限する ▪ 多層防御 – 攻撃者がある防御を突破できても別のレイヤー防ぐ ▪ 攻撃対象領域の縮小(アタックサーフェースの縮小) – システムの複雑さを解消することで、攻撃しにくくする ▪ 影響範囲の制限 – 小さなコンポーネントに分割して、最悪の事態発生時の影響を限定的にする ▪ 職務分掌 – 異なるコンポーネントに対して、可能な限り最小限の権限のみを与える ここを深堀りし ます
  11. (C) Gunosy Inc. All Rights Reserved. PAGE | 23 クラウド環境でのレイヤー別のセキュリティ

    レイヤー テスト内容 手法 ツール アプリケーション コードの脆弱性 SAST Snyk Code OSSライブラリの脆弱性 SCA Snyk OSS, Trivy, dependabot Base Image OSSライブラリの脆弱性 SCA Snyk Container, Trivy, Aqua Dockerfile 機密情報、特権等 Snyk Container, Dockle, Trivy, Aqua オーケストレーター ミスコンフィグ CWPP Snyk Cloud, Aqua ランタイムセキュリティ DAST Falco, Sysdig, GuardDuty ホストOS ハードニング、OS脆弱性 CWPP Inspector, Security Hub クラウド環境 ミスコンフィグ CSPM Security Hub 出典: https://owasp.org/www-community/Source_Code_Analysis_Tools
  12. (C) Gunosy Inc. All Rights Reserved. PAGE | 24 クラウド環境でのレイヤー別のセキュリティ

    レイヤー テスト内容 手法 ツール アプリケーション コードの脆弱性 SAST Snyk Code OSSライブラリの脆弱性 SCA Snyk OSS, Trivy, dependabot Base Image OSSライブラリの脆弱性 SCA Snyk Container, Trivy Dockerfile 機密情報、特権等 Snyk Container, Dockle, Trivy, Aqua オーケストレーター ミスコンフィグ CWPP Snyk Cloud, Aqua ランタイムセキュリティ DAST Falco, Sysdig, GuardDuty ホストOS ハードニング、OS脆弱性 CWPP Inspector, Security Hub クラウド環境 ミスコンフィグ CSPM Security Hub 全てのレイヤで なんらかのリスク軽 減対策が必要 (多層防御)
  13. (C) Gunosy Inc. All Rights Reserved. PAGE | ホスト・基盤 26

    Gunosyのデプロイパイプラインの一例 オーケスト レーター レジストリ CI/CD 開発 開発者 Gitリポジトリ CircleCI GitHub Actions ECR (Private Registry) Argo CD Docker Hub EKS ECS EC2 Fargate
  14. (C) Gunosy Inc. All Rights Reserved. PAGE | ホスト・基盤 29

    デプロイパイプラインでのセキュリティ対応 オーケスト レーター レジストリ CI/CD 開発 開発者 開発者の手元でスキャ ン (コード、OSS、ライセ ンス、Dockerfile、マ ニュフェスト)
  15. (C) Gunosy Inc. All Rights Reserved. PAGE | ホスト・基盤 30

    デプロイパイプラインでのセキュリティ対応 オーケスト レーター レジストリ CI/CD 開発 開発者 Gitリポジトリ PR作成時に差分スキャ ン (コード、OSS、ライセン ス、Dockerfile) 定期的自動的にスキャ ン (コード、OSS、ライセン ス、Dockerfile)
  16. (C) Gunosy Inc. All Rights Reserved. PAGE | ホスト・基盤 31

    デプロイパイプラインでのセキュリティ対応 オーケスト レーター レジストリ CI/CD 開発 開発者 Gitリポジトリ CircleCI GitHub Actions Argo CD ビルドした成果物をス キャン (コード、OSS、ライセン ス、Dockerfile、マニュ フェスト)
  17. (C) Gunosy Inc. All Rights Reserved. PAGE | ホスト・基盤 32

    デプロイパイプラインでのセキュリティ対応 オーケスト レーター レジストリ CI/CD 開発 開発者 Gitリポジトリ CircleCI GitHub Actions ECR (Private Registry) Argo CD Docker Hub 定期的自動的にスキャ ン (コード、OSS、ライセン ス、Dockerfile)
  18. (C) Gunosy Inc. All Rights Reserved. PAGE | ホスト・基盤 33

    デプロイパイプラインでのセキュリティ対応 オーケスト レーター レジストリ CI/CD 開発 開発者 Gitリポジトリ CircleCI GitHub Actions ECR (Private Registry) Argo CD Docker Hub EKS ECS マニュフェストを スキャン 使用Imageをス キャン
  19. (C) Gunosy Inc. All Rights Reserved. PAGE | ホスト・基盤 34

    デプロイパイプラインでのセキュリティ対応 オーケスト レーター レジストリ CI/CD 開発 開発者 Gitリポジトリ CircleCI GitHub Actions ECR (Private Registry) Argo CD Docker Hub EKS ECS EC2 Fargate ワークロード保護 ランタイム保護 ミスコンフィグの検知、 修正
  20. (C) Gunosy Inc. All Rights Reserved. PAGE | 37 Security系利用サービスの移り変わり

    フェーズ 開発 CI/CD コンテナレジスト リ オーケストレー ター ホスト・基盤 Security対応開 始前 本番環境への 導入完了 IaCスキャン 導入 Codeスキャン導 入
  21. (C) Gunosy Inc. All Rights Reserved. PAGE | 38 Security系利用サービスの移り変わり

    フェーズ 開発 CI/CD コンテナレジスト リ オーケストレー ター ホスト・基盤 Security対応開 始前 本番環境への 導入完了 IaCスキャン 導入 Codeスキャン導 入 この時は何も使 用していません
  22. (C) Gunosy Inc. All Rights Reserved. PAGE | 39 Security系利用サービスの移り変わり

    フェーズ 開発 CI/CD コンテナレジスト リ オーケストレー ター ホスト・基盤 Security対応開 始前 本番環境への 導入完了 IaCスキャン 導入 Codeスキャン導 入 Inspector GuardDuty Security Hub Inspector できるだけAWSに 寄せる感じで選定 とりあえずスキャン してみた感じ CIS Benchmark準拠 Security Hubに送れる
  23. (C) Gunosy Inc. All Rights Reserved. PAGE | 40 Security系利用サービスの移り変わり

    フェーズ 開発 CI/CD コンテナレジスト リ オーケストレー ター ホスト・基盤 Security対応開 始前 本番環境への 導入完了 IaCスキャン 導入 Codeスキャン導 入 Inspector Inspector GuardDuty Security Hub reviewdog+OSSでの スキャンを試したが、 Snykの標準機能のPR チェックで充足できた WebUIで全社統一 ルールを作れる
  24. (C) Gunosy Inc. All Rights Reserved. PAGE | 41 Security系利用サービスの移り変わり

    フェーズ 開発 CI/CD コンテナレジスト リ オーケストレー ター ホスト・基盤 Security対応開 始前 本番環境への 導入完了 IaCスキャン 導入 Codeスキャン導 入 Inspector GuardDuty Security Hub Security Lake Tagでの絞り込み ができないので Snykを採用 VSCode拡張 強力なサジェスト機 能 PRチェック Security Hubのダッシュ ボードが使いにくいので Security Lake+QuickSight で自作 Inspectorのダッシュボー ドでトリアージができな かったのでSnykを採用 Snykのダッシュボードがいい感じ だったのでクラウドセキュリティも Snykにしようかと検討したが、コス ト面で断念
  25. (C) Gunosy Inc. All Rights Reserved. PAGE | ホスト・基盤 42

    デプロイパイプラインで実施しているセキュリティ オーケスト レーター レジストリ CI/CD 開発 開発者 Gitリポジトリ CircleCI GitHub Actions ECR (Private Registry) Argo CD Docker Hub EKS ECS EC2 Fargate 開発中の Scanと修 正 PRチェック 定期スキャ ン 差分をス キャン 定期ス キャン ミスコン フィグの チェック マニュフェス トスキャン、 Image Scan
  26. (C) Gunosy Inc. All Rights Reserved. PAGE | 44 Shift-leftしてもright側のスキャンと対応も必要

    ▪ 対象 – 現在動いている本番環境 ▪ 目的 – 本番環境でのセキュリティ リスク確認 ホスト・基盤 オーケスト レーター レジストリ CI/CD 開発 ▪ 対象 – 本番環境にデプロイするア プリ・環境 ▪ 目的 – 本番環境に脆弱性がある アプリ・環境がデプロイされ ないようにする Shift-Left 現実世界 これから起きる未来
  27. (C) Gunosy Inc. All Rights Reserved. PAGE | 45 Shift-leftしてもright側のスキャンと対応も必要

    ▪ 対象 – 現在動いている本番環境 ▪ 目的 – 本番環境でのセキュリティ リスク確認 ホスト・基盤 オーケスト レーター レジストリ CI/CD 開発 ▪ 対象 – 本番環境にデプロイするア プリ・環境 ▪ 目的 – 本番環境に脆弱性がある アプリ・環境がデプロイされ ないようにする Shift-Left 現実世界 これから起きる未来 目的も対象も 異なるので 両方必要!
  28. (C) Gunosy Inc. All Rights Reserved. PAGE | 46 本番環境とソースリポジトリで指摘が違う

    ▪ ソースリポジトリで脆弱性を修正しても、本番環境の脆弱性は指摘される
  29. (C) Gunosy Inc. All Rights Reserved. PAGE | 47 本番環境とソースリポジトリで指摘が違う

    ▪ ソースリポジトリで脆弱性を修正しても、本番環境の脆弱性は指摘される ▪ どういうことかというと – 本番環境で脆弱性が検知される – ソースコードを修正してコミット・マージ – 開発環境・ステージング環境にデプロイして確認 – (ここまで本番環境の脆弱性は検知されたままの状態) – 本番環境にデプロイ – (ここまでくると本番環境の脆弱性は検知されなくなる)
  30. (C) Gunosy Inc. All Rights Reserved. PAGE | 48 本番環境とソースリポジトリで指摘が違う

    ▪ ソースリポジトリで脆弱性を修正しても、本番環境の脆弱性は指摘される ▪ どういうことかというと – 本番環境で脆弱性が検知される – ソースコードを修正してコミット・マージ – 開発環境・ステージング環境にデプロイして確認 – (ここまで本番環境の脆弱性は検知されたままの状態) – 本番環境にデプロイ – (ここまでくると本番環境の脆弱性は検知されなくなる) ▪ つまり本番環境にデプロイされるまでは以下の状況が発生する – ソースリポジトリ上のスキャン結果は脆弱性なし – 本番環境のスキャン結果には脆弱性あり
  31. (C) Gunosy Inc. All Rights Reserved. PAGE | 49 本番環境とソースリポジトリで指摘が違う

    ▪ ソースリポジトリで脆弱性を修正しても、本番環境の脆弱性は指摘される ▪ どういうことかというと – 本番環境で脆弱性が検知される – ソースコードを修正してコミット・マージ – 開発環境・ステージング環境にデプロイして確認 – (ここまで本番環境の脆弱性は検知されたままの状態) – 本番環境にデプロイ – (ここまでくると本番環境の脆弱性は検知なくなる) ▪ つまり本番環境にデプロイされるまでは以下の状況が発生する – ソースリポジトリ上のスキャン結果は脆弱性なし – 本番環境のスキャン結果には脆弱性あり ▪ 対応としては、リスク評価は本番環境スキャンで、修正確認はソースコードスキャ ンで行うように使い分ける
  32. (C) Gunosy Inc. All Rights Reserved. PAGE | 50 トリアージが手間

    ▪ 対応しない方向に倒す目的で、CVEの詳細まで確認してトリアージすると手間が かかりすぎる – このCVEは攻撃条件がXXXで、このライブラリをそういう使い方はしていな いから対応しなくてヨシ! – ライブラリの脆弱性指摘はあるけどアプリケーションで使ってないから対応し なくてヨシ!
  33. (C) Gunosy Inc. All Rights Reserved. PAGE | 51 トリアージが手間

    ▪ 対応しない方向に倒す目的で、CVEの詳細まで確認してトリアージすると手間が かかりすぎる – このCVEは攻撃条件がXXXで、このライブラリをそういう使い方はしていな いから対応しなくてヨシ! – ライブラリの脆弱性指摘はあるけどアプリケーションで使ってないから対応し なくてヨシ! ▪ 対応の考え方としては – やらない理由をこねくり回すよりは、脆弱性指摘があれば対応する方が前向 きで健康的 • 重要なのは、Base Image、ライブラリをシュッと差し替えられるCI/CDを 整備したり、テストを回せる開発体制を作ること
  34. (C) Gunosy Inc. All Rights Reserved. PAGE | 52 トリアージが手間

    ▪ 対応しない方向に倒す目的で、CVEの詳細まで確認してトリアージすると手間が かかりすぎる – このCVEは攻撃条件がXXXで、このライブラリをそういう使い方はしていな いから対応しなくてヨシ! – ライブラリの脆弱性指摘はあるけどアプリケーションで使ってないから対応し なくてヨシ! ▪ 対応の考え方としては – やらない理由をこねくり回すよりは、脆弱性指摘があれば対応する方が前向 きで健康的 • 重要なのは、Base Image、ライブラリをシュッと差し替えられるCI/CDを 整備したり、テストを回せる開発体制を作ること ▪ CI/CD、テスト周りは開発生産性の文脈でも大事になってくるので、普段からの 足回り整備がセキュリティ対応にも効いてきます
  35. (C) Gunosy Inc. All Rights Reserved. PAGE | 53 脆弱性を修正してもゼロにならない

    ▪ 脆弱性を修正しても新しい脆弱性が公表されると検知される脆弱性は永遠にゼロ になりません – BaseImage更新、ライブラリ更新したら更新後に違う脆弱性が混入 – Fixがなかったり、孫依存ライブラリの脆弱性
  36. (C) Gunosy Inc. All Rights Reserved. PAGE | 54 脆弱性を修正してもゼロにならない

    ▪ 脆弱性を修正しても新しい脆弱性が公表されると検知される脆弱性は永遠にゼロ になりません – BaseImage更新、ライブラリ更新したら更新後に違う脆弱性が混入 – Fixがなかったり、孫依存ライブラリの脆弱性 ▪ 向き合い方としては、デプロイ完了時点で検出がゼロになることを目指さない – 受容可能な範囲までリスクを軽減するのが目的なので、検出ゼロを目指さな くても達成可能 • 軽減策がとれる場合は積極的にとりましょう
  37. (C) Gunosy Inc. All Rights Reserved. PAGE | 55 脆弱性を修正してもゼロにならない

    ▪ 脆弱性を修正しても新しい脆弱性が公表されると検知される脆弱性は永遠にゼロ になりません – BaseImage更新、ライブラリ更新したら更新後に違う脆弱性が混入 – Fixがなかったり、孫依存ライブラリの脆弱性 ▪ 向き合い方としては、デプロイ完了時点で検出がゼロになることを目指さない – 受容可能な範囲までリスクを軽減するのが目的なので、検出ゼロを目指さな くても達成可能 • 軽減策がとれる場合は積極的にとりましょう ▪ 具体的には、以下のような対応を段階的に行う – BaseImageを更新する • マイナーバージョンアップだと影響が少ない – Critical(+攻撃コードあり)の脆弱性だけ対応する
  38. (C) Gunosy Inc. All Rights Reserved. PAGE | 57 まとめ

    ▪ セキュリティ対策はリスク管理 – リスク管理は本番環境のスキャンから始めましょう ▪ セキュリティ対応に銀の弾丸はありません – セキュリティ対応の目的は受容可能な範囲にリスクを抑えること • ゼロは目指さない – 脆弱性を減らすには結局はマンパワーと事前調整が必要です ▪ コンテナセキュリティはコンテナだけのセキュリティ対応で終わらないですし終わら せないことが大事 – ツールをうまく利用しましょう – ツールに踊らされないのも大事 • Shift-leftは大事だけどright側が不要になるわけではない ▪ 前向きで健康的なセキュリティ対応をしましょう – 普段からのCI/CD、テスト周りの整備が効いてきます