Slide 1

Slide 1 text

コンテナセキュリティ入門ウェビナー ~ECS on Fargate構成に必要なセキュリティ対策を知ろう~ クラスメソッド株式会社 カスタマーソリューション部 吉川 晃平
 


Slide 2

Slide 2 text

2 自己紹介 https://dev.classmethod.jp/author/yoshikawa-kohei/ ● 吉川 晃平 ● クラスメソッド株式会社 ● AWS事業本部カスタマーソリューション部 ○ ソリューションアーキテクト ● この一年で特に関わったAWSサービス ○ AWS Security Hub

Slide 3

Slide 3 text

3 自己紹介 ● 最近嬉しかったこと ○ 自転車で琵琶湖一周したこと ● 最近の興味 ○ 麻雀 ○ 担々麺 https://dev.classmethod.jp/author/yoshikawa-kohei/

Slide 4

Slide 4 text

4 はじめに 本ウェビナーについて

Slide 5

Slide 5 text

5 本ウェビナーについて ● ターゲット ○ 現在ECS on Fargate環境を利用していて、コンテナセキュリティに ついて知りたい方 ● ウェビナーで説明すること ○ コンテナセキュリティの解説 ○ コンテナセキュリティでクラスメソッドが提供する支援のご紹介 ● ウェビナーの目標 ○ 参加者の方がコンテナセキュリティ対策への第一歩が踏み出せる状態 になること

Slide 6

Slide 6 text

6 本ウェビナーについて

Slide 7

Slide 7 text

7 コンテナセキュリティについて コンテナセキュリティの考え方

Slide 8

Slide 8 text

8 コンテナセキュリティについて ● 本ウェビナーでは「NIST SP800-190 アプリケーションコンテナセキュ リティガイド」をベースに解説 ○ コンテナセキュリティの評価に使用できるフレームワークで日本語版 もあるため活用しやすい ○ IPAが翻訳した日本語版資料 ■ https://www.ipa.go.jp/security/reports/oversea/nist/ug65 p90000019cp4-att/000085279.pdf

Slide 9

Slide 9 text

● コンテナセキュリティの考え方 ○ コンテナにはイメージのビルドからデプロイまでのライフサイクルが 存在する ○ ライフサイクルの中で重要となってくるコンポーネントに存在するリ スクと対策を把握することが大切 9 コンテナセキュリティの考え方

Slide 10

Slide 10 text

10 コンテナセキュリティの考え方 ● 具体的なコンポーネント ○ イメージ ○ レジストリ ○ オーケストレータ ○ コンテナランタイム ○ ホスト ○

Slide 11

Slide 11 text

11 各コンポーネントのリスク コンテナ環境における代表的なリスクの紹介

Slide 12

Slide 12 text

12 リスクの紹介 イメージのリスク

Slide 13

Slide 13 text

13 イメージのリスク ● イメージの脆弱性 ● イメージの設定の不備 ● 埋め込まれたマルウェア ● 埋め込まれた平文の秘密情報 ● 信頼できないイメージの使用

Slide 14

Slide 14 text

14 イメージの脆弱性 ● 内容 ○ イメージ内にソフトウェアの脆弱性が存在 ● 対応方針 ○ ECR・Inspector等を使用した定期的・継続的な脆弱性スキャン ○ イメージの更新(セキュリティアップデート)と再デプロイ

Slide 15

Slide 15 text

15 イメージの設定の不備 ● 内容 ○ イメージ(Dockerfile)に設定不備が存在 ■ 例:コンテナプロセスの必要以上の特権での実行 ○ イメージに含まれるソフトウェアに脆弱性がなくともリスクが高まる ● 対応方針 ○ InspectorやDockle等のツールで、Dockerfileの設定がベストプラク ティスに準じているかのチェック

Slide 16

Slide 16 text

16 埋め込まれたマルウェア ● 内容 ○ イメージ内にマルウェアが存在 ● 対応方針 ○ 信頼できるベースイメージを利用する ■ 信頼できないベースイメージには、マルウェアが意図的に含まれ ている可能性がある ○ GuardDutyやSysdig等でのセキュリティイベントの監視 ■ 実際のコンテナ環境でマルウェアが引き起こす動きをチェック ● コインマイニング ● C&Cサーバーとの通信など

Slide 17

Slide 17 text

17 埋め込まれた平文の秘密情報 ● 内容 ○ イメージに平文の機密情報がある場合、流出リスクが高まる ■ DBの接続パスワード ■ サードパーティAPIをコールするためのAPIキーなど ● 対応方針 ○ Secrets Manager等の管理サービスに機密情報を保存し、コンテナ 実行時に動的に挿入する ■ 機密情報を専用の管理サービスにて一元的に管理することで、機 密情報の管理場所の把握やアクセス経路を減らせるので流出リス クを下げられる

Slide 18

Slide 18 text

18 信頼できないイメージの使用 ● 内容 ○ 下記のようなリスクが含まれる外部イメージの使用 ■ マルウェアが埋め込まれている ■ ソフトウェアの脆弱性に存在するなど ● 対応方針 ○ 信頼できるイメージの使用 ○ ECR等でのレジストリサービスでの使用するイメージの一元管理 ○ イメージ検証による改ざんの有無確認

Slide 19

Slide 19 text

19 リスクの紹介 レジストリのリスク

Slide 20

Slide 20 text

20 レジストリのリスク ● レジストリへのセキュアでない接続 ● レジストリ内の古いイメージ ● 認証・認可の不十分な制限

Slide 21

Slide 21 text

21 レジストリへのセキュアでない接続 ● 内容 ○ レジストリへの接続が安全でない場合、通信経路にてイメージに含ま れた機密情報等が傍受される可能性がある ● 対応方針 ○ 暗号化された通信経路を利用する ■ ECRの場合は暗号化されている

Slide 22

Slide 22 text

22 レジストリ内の古いイメージ ● 内容 ○ レジストリに古くて脆弱性の存在するイメージを放置したまま、誤っ てデプロイされると脆弱性を抱えたコンテナが起動し続けるリスクが 生じる ● 対応方針 ○ ECRに格納したイメージへの定期的なスキャン ○ ECRのライフサイクル機能等を活用し、古いイメージを削除するなど 適切なイメージ管理 ○ コミットIDを一意なタグとして使用し、タグの上書きを禁止すること で、誤ったイメージのデプロイを防止

Slide 23

Slide 23 text

23 認証・認可の不十分な制限 ● 内容 ○ レジストリの認証・認可が不十分な場合、攻撃者による意図しないイ メージへのアクセスが発生しうる ■ イメージをプルして情報流出 ■ 悪意のあるイメージをプッシュし、そのイメージを起動させる ● 対応方針 ○ 適切な認証認可の設定 ■ ECRの場合、プライベートリポジトリを使用して認証を必須と し、リソースベースポリシーを使用して適切な認可を行う

Slide 24

Slide 24 text

24 リスクの紹介 オーケストレータのリスク

Slide 25

Slide 25 text

● 制限のない管理者アクセス ● 不正アクセス ● コンテナ間ネットワークトラフィックの不十分な分離 ● ワークロードの機微性レベルの混合 ● オーケストレータノードの信頼 25 オーケストレータのリスク

Slide 26

Slide 26 text

26 制限のない管理者アクセス ● 内容 ○ オーケストレータに対する権限設定が不十分な場合、意図しない操作 によりシステムに影響を与える可能性がある ● 対応方針 ○ ECSの場合は、IAMユーザーに付与するアクセスの適切な管理

Slide 27

Slide 27 text

27 不正アクセス ● 内容 ○ オーケストレータへの不正アクセスにより、システムに影響を与える 可能性がある ● 対応方針 ○ AWSアカウント自体の不正アクセス対策として、ログイン時に必ず MFAを使用する ○ オーケストレータノード自体への不正アクセス対策は、ECSの場合は AWSの責任範囲のため考慮不要

Slide 28

Slide 28 text

28 隔離が不十分なコンテナ間ネットワークトラフィック ● 内容 ○ 異なるアプリケーション間で同じ仮想ネットワーク(VPC)を共有して いる場合、片方のアプリケーションが侵害された場合、もう片方のア プリケーションのリスクが生じる ● 対応方針 ○ VPCやアカウントを分離できないか検討

Slide 29

Slide 29 text

29 ワークロードの機微性レベルの混合 ● 内容 ○ 異なるワークロードレベルのコンテナを同一ホストで展開すること で、片方のアプリケーションの侵害によってもう片方のアプリケー ションの侵害リスクが生じる ● 対応方針 ○ 機微性レベルが異なるコンテナワークロードは適切に分離する ■ ECS on Fargateの場合、ECSタスクに異なるワークロードのコン テナを混在させない ■ そもそもVPCやアカウントを分離できないか検討

Slide 30

Slide 30 text

30 オーケストレータノードの信頼 ● 内容 ○ オーケストレータの設定不備 ● 対応方針 ○ ECSの場合は、オーケストレータノードがAWSの責任範囲のため考慮 不要

Slide 31

Slide 31 text

31 リスクの紹介 コンテナランタイムのリスク

Slide 32

Slide 32 text

32 コンテナランタイムのリスク ● ランタイムソフトウェア内の脆弱性 ● コンテナからの無制限のネットワークアクセス ● セキュアでないコンテナランタイムの設定 ● アプリの脆弱性 ● 未承認コンテナ

Slide 33

Slide 33 text

33 ランタイムソフトウェア内の脆弱性 ● 内容 ○ ランタイムソフトウェア(ここでいうランタイムとはconteinerdなど コンテナの起動、停止、リソース管理の役割を担うソフトウェアのこ と)に脆弱性が存在 ● 対応方針 ○ ECS on Fargateの場合は、ホストOSがAWSの責任範囲のため考慮不 要

Slide 34

Slide 34 text

34 コンテナからの無制限のネットワークアクセス ● 内容 ○ ネットワークトラフィックの隔離が不十分なことによって、コンテナ の侵害が他のコンテナの侵害につながる ● 対応方針 ○ 適切なネットワークの設計 ■ VPCやアカウント分離 ■ セキュリティグループによるトラフィック制御

Slide 35

Slide 35 text

35 安全でないコンテナランタイム構成 ● 内容 ○ コンテナランタイムの設定不備 ■ コンテナから許可されるシステムコールセットを不必要に広げる ■ コンテナが特権モードで動かす ■ ホスト上に機密ディレクトリをマウントするなど ● 対応方針 ○ ECS on Fargateの場合は、ホストOSがAWSの責任範囲のため考慮不 要

Slide 36

Slide 36 text

36 アプリの脆弱性 ● 脅威内容 ○ アプリケーション自体の欠陥や脆弱性 ■ クロスサイトスクリプティング ■ SQLインジェクション等 ● 対応方針 ○ AWS WAFによるアプリケーションレイヤーの攻撃緩和 ○ GuardDutyやSysdig等でのセキュリティイベントの監視

Slide 37

Slide 37 text

37 未承認コンテナ ● 内容 ○ アプリケーション開発者がコードのテストのためなど、許可されてい ないコンテナを起動するとリスクが生じる ■ 未承認のコンテナは適切な承認フローを経ておらず通常より脆弱 性が存在する可能性が高い ● 対応方針 ○ 適切な承認フローの元でしかデプロイできないようにする ■ 重要度の高い脆弱性が存在するとデプロイできない ■ CICDからのデプロイのみ許可し、手動のデプロイを禁止するなど ○ CloudTrailやConfigを有効化し、アクティビティログを残す

Slide 38

Slide 38 text

38 リスクの紹介 ホストのリスク

Slide 39

Slide 39 text

39 ホストのリスク ● 大きなアタックサーフェス ● 共有カーネル ● ホストOSコンポーネントの脆弱性 ● 不適切なユーザーアクセス権 ● ホストOSファイルシステムの改ざん

Slide 40

Slide 40 text

40 大きなアタックサーフェス ● 内容 ○ ホストOSに脆弱性が存在 ● 対応方針 ○ ECS on Fargateの場合は、ホストOS部分がAWSの責任範囲のため考 慮不要

Slide 41

Slide 41 text

41 共有カーネル ● 内容 ○ コンテナランタイムとホストOSはカーネルを共有しており、カーネ ル経由での攻撃リスクが存在する ● 対応方針 ○ ECS on Fargateの場合は、ホストOS部分がAWSの責任範囲のため考 慮不要

Slide 42

Slide 42 text

42 ホストOSコンポーネントの脆弱性 ● 内容 ○ ホストOSが持っているソフトウェアに脆弱性が存在 ● 対応方針 ○ ECS on Fargateの場合は、ホストOS部分がAWSの責任範囲のため考 慮不要

Slide 43

Slide 43 text

43 不適切なユーザーアクセス権 ● 内容 ○ ホストOSに直接ログインして管理する場合、コンテナに対して広範 な変更が可能なためリスクが生じる ● 対応方針 ○ ECS on Fargateの場合は、ホストOS部分がAWSの責任範囲のため考 慮不要

Slide 44

Slide 44 text

44 ホストOSファイルシステムの改ざん ● 内容 ○ ホストOSの機密ディレクトリ等をマウントしている場合、ホストボ リュームのファイル改ざんのリスクがある ● 対応方針 ○ ECS on Fargateの場合は、ホストOS部分がAWSの責任範囲のため考 慮不要

Slide 45

Slide 45 text

45 セキュリティ対策の紹介 コンテナセキュリティを実現する AWSサービスや OSSツールの紹介

Slide 46

Slide 46 text

46 利用するソリューション AWSサービス

Slide 47

Slide 47 text

47 ECR(1/2) ● 「イメージのリスク」に対応 ○ スキャンによるコンテナイメージの脆弱性管理が可能 ■ 基本スキャンと拡張スキャンがある ● 参考:https://blog.serverworks.co.jp/ecr-image-scan

Slide 48

Slide 48 text

48 ECR(2/2) ● 「レジストリのリスク」に対応 ○ 通信経路やイメージ保管時の暗号化による情報漏洩防止 ○ 認証機能やリソースベースポリシーによる不正アクセス防止 ○ ライフサイクル機能やタグの上書き禁止機能による誤ったイメージ展 開の防止

Slide 49

Slide 49 text

49 Inspector ● 「イメージのリスク」「ホストのリスク」に対応 ○ コンテナイメージのスキャンを実施 ○ Dockerfileの設定不備のチェックも可能に

Slide 50

Slide 50 text

50 拡張スキャンがCIに組み込みやすくなりました https://dev.classmethod.jp/articles/reinvent2023-inspector-image-scanning-cicd-support/

Slide 51

Slide 51 text

51 Dockerfileの設定不備も検出可能に https://dev.classmethod.jp/articles/amazon-inspector-sbom-generator-detects-misconfiguration -in-dockerfile/

Slide 52

Slide 52 text

52 Secrets Manager / SSM Parameter Store ● 「イメージのリスク」に対応 ○ 機密情報の管理サービスを使用し、コンテナ起動時に機密情報の動的 挿入することで流出リスクを軽減

Slide 53

Slide 53 text

53 Codeシリーズ ● 「イメージのリスク」に対応 ○ CICD(CodeBuild、CodePipeline、CodeCommitなど)を利用するこ とで、イメージのデプロイまでに必要な処理を自動化できる ■ 脆弱性やDockerfile等の各種スキャン ■ コードの静的解析(SAST) ■ 承認プロセスの組み込みなど

Slide 54

Slide 54 text

54 Security Hub ● 「レジストリのリスク」「オーケストレータのリスク」「ホストのリス ク」に対応 ○ CSPMに相当するサービスで、「AWSリソースのセキュリティ設定が ベストプラクティスから逸脱していないか」を自動でチェックし、脅 威の発生源を特定できる

Slide 55

Slide 55 text

55 Config ● 「レジストリのリスク」「オーケストレータのリスク」「ホストのリス ク」に対応 ○ AWSリソースの記録や管理を行い、何かセキュリティイベントが発 生した際の調査に役立つ

Slide 56

Slide 56 text

56 Systems Manager Patch Manager ● 「ホストのリスク」に対応 ○ EC2インスタンスへのパッチインストールの自動化

Slide 57

Slide 57 text

57 GuardDuty(1/2) ● 「コンテナランタイムのリスク」に対応 ○ Runtime保護によりコンテナランタイム上の脅威検出を行える ■ コインマイニングやC&Cサーバーへの接続など ○ サイドカーコンテナ形式でメインのアプリケーションコンテナを監視

Slide 58

Slide 58 text

58 GuardDuty(2/2) ● 「ホストのリスク」「コンテナランタイムのリスク」に対応(EC2のみ) ○ EBSに存在するマルウェアをスキャンする機能 ■ ホストがEC2(EBS)の場合に利用可能 ● 「オーケストレータのリスク」に対応(EKSのみ) ○ EKSの監査ログを元に不審なAPI実行をチェックする機能 ■ ブラックリスト登録されているIPアドレスからのAPI実行など

Slide 59

Slide 59 text

59 IAM ● 全コンポーネントのリスクに対応 ○ 適切なアクセス制御を行うことで、各種AWSリソースへの侵害を防 止する

Slide 60

Slide 60 text

60 利用するソリューション OSSツール

Slide 61

Slide 61 text

61 Trivy ● 「イメージのリスク」に対応 ○ 現在Aqua Security社が開発しているOSS ■ https://github.com/aquasecurity/trivy ○ イメージに含まれる脆弱性等をスキャンするツール ■ OSやアプリケーションライブラリの脆弱性 ■ Aqua Security社によって定義されるDockerfileのベストプラク ティス項目 ○ CIに組み込まれて使用されることが多い

Slide 62

Slide 62 text

62 Trivy https://dev.classmethod.jp/articles/developersio-2022-container-security-with-oss-tools/

Slide 63

Slide 63 text

63 Dockle ● 「イメージのリスク」に対応 ○ Tomoya Amachi氏が開発したOSS ■ https://github.com/goodwithtech/dockle ○ イメージの設定不備をスキャンするツール ■ CISによって定義されるベストプラクティス項目 ■ Docker公式のベストプラクティス等からDockleが定めた項目 ■ nixCraftのLinuxベストプラクティス等からDockleが定めた項目 ○ CIに組み込まれて使用されることが多く、Trivyと併せることで「イ メージのリスク」に対して効果的な対策となりうる

Slide 64

Slide 64 text

64 Dockle https://dev.classmethod.jp/articles/devio2023-dockle/

Slide 65

Slide 65 text

65 利用するソリューション 商用製品

Slide 66

Slide 66 text

66 Sysdig ● 「コンテナランタイムのリスク」に対応 ○ コンテナランタイムで発生しているセキュリティイベントを検知・記 録する製品 ■ コンテナ環境では起動・停止が頻繁であり、イベント情報が消え やすくなるため、フォレンジック調査が重要になる

Slide 67

Slide 67 text

67 Sysdig https://dev.classmethod.jp/articles/guardduty-sysdig-comparison-hibiyatech/

Slide 68

Slide 68 text

● 「コンテナランタイムのリスク」だけでなくコンテナライフサイクルに 沿ったセキュリティ対策も統合的に提供 ○ イメージのスキャン ○ 設定不備の検知(CSPM機能)など 68 Sysdig

Slide 69

Slide 69 text

69 ネクストアクションについて クラスメソッドが提供する支援の紹介

Slide 70

Slide 70 text

70 ウェビナー後の動き

Slide 71

Slide 71 text

71 ウェビナー後の動き

Slide 72

Slide 72 text

1. コンテナ環境のセキュリティ状況可視化支援 2. セキュリティ対策の検討 a. セキュリティ可視化支援のみご希望であればここで終了 b. 導入支援もご希望の場合は3以降に進む 3. セキュリティ対策の導入支援 72 支援の流れ

Slide 73

Slide 73 text

73 支援イメージ ※具体的な費用等は相談会にて ● コンテナ環境のセキュリティ状況可視化支援 a. セキュリティ対策の検討 ● セキュリティ対策導入支援 a. ECR設定のレビュー b. GuardDuty Runtime Monitoringの導入 c. Security Hub導入など

Slide 74

Slide 74 text

74 まとめ まとめ

Slide 75

Slide 75 text

75 まとめ(話したこと) ● コンテナ環境に存在するリスクと対応の説明 ● AWSサービスやOSSツールの紹介 ● クラスメソッドの提供する支援の紹介

Slide 76

Slide 76 text

76