コンテナでのアプリケーション開発花盛りの昨今、セキュリティの不安はいつでもついて回ります。 このセッションでは、「コンテナセキュリティの勘所」と題して、Kubernetes/OpenShiftといったコンテナ実行環境のセキュリティについて、 その概要をお伝えします。また、話題の認定資格 CKS(Certified Kubernetes Security)についても紹介します。
© JTP Co., Ltd. All Rights Reserved.千⽥ 泰史2022/11/30コンテナセキュリティの勘所JTP株式会社 技官、エバンジェリスト
View Slide
© JTP Co., Ltd. All Rights Reserved.きょうの⽬標• コンテナとKubernetesとOpenShiftのおさらいをする• コンテナセキュリティの範囲を知る• コンテナセキュリティのリスクと脅威を知る• コンテナセキュリティガイドラインを知る• コンテナセキュリティの代表的なツールを知る• コンテナセキュリティについて網羅的に学習する⽅法を知る2
© JTP Co., Ltd. All Rights Reserved.会社概要
© JTP Co., Ltd. All Rights Reserved.会 社 名本 社 所 在 地設 ⽴従 業 員事 業 内 容JTP株式会社東京都品川区北品川4-7-35 御殿⼭トラストタワー1987年(昭和62年)10⽉31⽇435名海外ITメーカー教育・保守・運⽤等 アウトソーシング事業海外医療機器の法規制対応・販売・保守⼈⼯知能サービス開発IBM Silver Business PartnerAWS アドバンスドコンサルティングパートナーLINE 公式パートナーSoftBank ONESHIP Partner認 定 パ ー ト ナ ー上 場 市 場 東証JASDAQスタンダード 証券コード2488
© JTP Co., Ltd. All Rights Reserved.当社の強みCloud by defaultClould-FirstHybrid-CloudCloud-CentricMulti-CloudK8s & OpenShift仮想化2015 2018 2021~2020AWS祭りソリューションアーキテクト・アソシエイト 100名・プロフェッショナル 20名・CKA 100名コンテナJTPは「テクノロジードリブン」な会社ですマルチクラウド・クラウド資格 200名Data Engineering
6© JTP Co., Ltd. All Rights Reserved.6千⽥ 泰史 ち だ や す ふみJTP株式会社 ⼈財育成コンサルティング事業部、技官、エバンジェリスト茅ヶ崎⽣まれ、⼤阪神⼾+茨城育ち、横浜在住、⼆児の⽗l 講師⽣活27年 Red Hat、Microsoft、VMwareほか、ベンダー認定講師インフラ、ネットワーク、仮想システム、コンテナl Ansible, K8s, OpenShift, NSX-T, OpenStack, Linux Kernel etc.l 趣味: キャンプ、読書、ゲーム、ボドゲ、料理、カラオケ、🎺l 特技: 外国語(英仏中露韓)、最近ウクライナ語を始めましたl ⽇課: 朝ラン3キロ、懸垂20回、腹筋ローラー50往復、オンライン英会話About me
© JTP Co., Ltd. All Rights Reserved.コンテナセキュリティー• コンテナライフサイクルの安全性を保全する絶え間ない能動的な営み• ITインフラ全体のセキュリティ項⽬のなかの部分集合• 従来型の(コンテナ以前の)セキュリティ対策+α• 可視化の難しさ• 終了したコンテナの事後分析(Post-mortem analysis)の課題• 狭義ではコンテナ実⾏環境のセキュリティー• コンテナブレイクアウト• 広義ではクラウドネイティブセキュリティー7今回はコチラ!!
© JTP Co., Ltd. All Rights Reserved.脆弱性の例• CVE-2022-0185• Kernel 内 Filesystem Context脆弱性・・・バッファオーバーフローからの⾮特権ユーザーの権限昇格• CVE-2022-0492• cgroupsの脆弱性・・・特権への昇格、コンテナブレイクアウト• CVE-2022-23648• containerdの脆弱性・・・イメージ設定次第でコンテナホストの読み取り専⽤ファイルに書き込みアクセス8
© JTP Co., Ltd. All Rights Reserved.コンテナ技術のおさらい• OSやインフラ環境にかかわらずアプリケーションを⼀貫して確実に実⾏することを可能にする• コード、ランタイム、ライブラリ、設定など、サービスの実⾏に必要なすべてのものをバンドルした、ポータブルかつスタンドアロンな実⾏可能パッケージを作成し、共有、実⾏する• 環境を「汚さずに」ソフトウェアを利⽤することができる• カーネルに「コンテナ機能」と呼べるような単⼀の機能が実装されて実現しているわけではない• コンテナOSのカーネルを共有し、そのカーネルの機能によって隔離されて実⾏されるプロセスである• 隔離の⽅式はランタイムによって異なるアプリケーションが依存しているライブラリがあるが、コンテナは依存関係のあるものをカプセル化して実⾏ࢿྉ
© JTP Co., Ltd. All Rights Reserved.Kubernetes のおさらい• Kubernetes = コンテナにとっての「OS」• コンテナオーケストレーション基板のデファクトスタンダード• オンプレミス、パブリッククラウド、マルチクラウド対応に対応した、クラウドネイティブアプリケーションの実⾏基盤10ࢿྉ
© JTP Co., Ltd. All Rights Reserved.OpenShiftのおさらい• Kubernetesを内包するPaaS基板• Kubernetesの⼀(いち)ディストリビューション(Red Hat製)• エンタープライズに最適化されたKubernetesベースのコンテナプラットフォーム• ただでさえ便利な Kubernetes上に、Red Hat社が便利な機能を追加してくれていて、そのうえサポートまでしてくれる!11ࢿྉ
© JTP Co., Ltd. All Rights Reserved.⽤語の確認• 以下のセキュリティ3要素を維持することが⽬標• 機密性(Confidentiality)• 完全性(Integrity)• 可⽤性(Availability)• セキュリティリスク• 脅威(Threat)• 漏洩、改竄、破壊などの攻撃、マルウェア、エクスプロイトなど• 脆弱性(Vulnerability)• 脅威を誘引する⽋陥• 不具合、設計ミス、実装ミス、バグ、設定ミス、弱点など12
© JTP Co., Ltd. All Rights Reserved.情報セキュリティの基本戦略• 多層防御:Defense in Depth• 何層にもわたってセキュリティ対策を施すこと• 「セキュリティは破られる」という前提で、複数の⼿法を組み合わせてる• 最⼩特権の原則:Principle of Least Privilege• アクセス元のユーザーやプロセスに必要最低限の権限を付与し、余分な権限を与えないこと• 攻撃対象領域の削減:Attack Surface Reduction• 攻撃対象領域は、攻撃者によって侵害される可能性のある全てのデジタル資産を含む• 攻撃対象領域は、攻撃者が侵⼊する起点のみならず、侵⼊後に踏み台となる機器や、重要なデータの保存場所も含む• 攻撃者が攻撃できる余地、好きをできる限り少なくすること13
© JTP Co., Ltd. All Rights Reserved.クラウドネイティブセキュリティの “4c”モデル14CloudClusterContainerCodehttps://kubernetes.io/ja/docs/concepts/security/overview/ClusterをデプロイするインフラContainerを動作させる基盤、オーケストレーターCodeを実⾏するコンテナおよびその実⾏環境コンテナに含まれるアプリケーションコンテナ環境におけるセキュリティモデルの1つセキュアコーディング、アプリケーションセキュリティカーネル資源の分離、制限クラスタレベルのリソース設定、制限Namespace/Node/Pod/Volumeの分離、制限APIサーバー、etcd等の制御プレーンの分離、暗号化インフラセキュリティ、ネットワークセキュリティクラウドごとのセキュリティ設定
© JTP Co., Ltd. All Rights Reserved.クラウドネイティブセキュリティの “4c”モデル15CloudClusterContainerCodehttps://kubernetes.io/ja/docs/concepts/security/overview/ClusterをデプロイするインフラContainerを動作させる基盤、オーケストレーターCodeを実⾏するコンテナおよびその実⾏環境コンテナに含まれるアプリケーションコンテナ環境におけるセキュリティモデルの1つセキュアコーディング、アプリケーションセキュリティカーネル資源の分離、制限クラスタレベルのリソース設定、制限Namespace/Node/Pod/Volumeの分離、制限APIサーバー、etcd等の制御プレーンの分離、暗号化インフラセキュリティ、ネットワークセキュリティクラウドごとのセキュリティ設定• Cloud• クラウドプロバイダー各社のセキュリティベストプラクティス• 物理セキュリティ• ネットワーク、物理サーバー• Cluster• Kubernetesセキュリティベストプラクティス• Namespace / Node / Pod セキュリティ、分離、アクセス制限• APIサーバー、etcd等コントロールプレーンセキュリティ設定• Container• コンテナイメージ署名• コンテナ脆弱性スキャン• コンテナランタイム制御• Code• コード解析• ライブラリーの脆弱性チェック• 通信ポートの公開制限、TLS
© JTP Co., Ltd. All Rights Reserved.• Cloud• クラウドプロバイダー各社のセキュリティベストプラクティス• 物理セキュリティ• ネットワーク、物理サーバー• Cluster• Kubernetesセキュリティベストプラクティス• Namespace / Node / Pod セキュリティ、分離、アクセス制限• APIサーバー、etcd等コントロールプレーンセキュリティ設定• Container• コンテナイメージ署名• コンテナ脆弱性スキャン• コンテナランタイム制御• Code• コード解析• ライブラリーの脆弱性チェック• 通信ポートの公開制限、TLSクラウドネイティブセキュリティの “4c”モデルCloudCluster特に注⽬する部分
© JTP Co., Ltd. All Rights Reserved.コンテナセキュリティのガイドライン NIST 800-SP190• National Institute of Standards and Technology(⽶国⽴標準技術研究所)発⾏• NIST 800-SP190は「Application Container Security Guide」• 原⽂ https://csrc.nist.gov/publications/detail/sp/800-190/final• IPAによる和訳 https://www.ipa.go.jp/security/publications/nist/• コンテナ環境に特有のリスクとその対策について記述17開発・テスト環境 プロダクション環境コンテナレジストリー開発者管理者オーケストレーターコンテナBuildPushRunPullインフラ インフラホストOS ホストOSイメージイメージコンテナイメージコンテナイメージコンテナイメージコンテナレジストリーイメージ イメージ イメージ
© JTP Co., Ltd. All Rights Reserved.NIST 800-SP190 に⽰されている潜在的リスク18開発・テスト環境 プロダクション環境コンテナレジストリー開発者管理者オーケストレーターコンテナBuildPushRunPullインフラ インフラホストOS ホストOSイメージイメージコンテナイメージコンテナイメージコンテナイメージイメージ イメージ イメージ・3.1節:イメージリスク・3.2節:レジストリリスク・3.3節:オーケストレーターリスク・3.4節:コンテナリスク・3.5節:ホストOSリスクίϯςφڥͷ͋ΒΏΔͱ͜ΖʹϦεΫ͕͋Δʂ
© JTP Co., Ltd. All Rights Reserved.NIST 800-SP190 に⽰されている潜在的リスク19開発・テスト環境 プロダクション環境コンテナレジストリー開発者管理者オーケストレーターコンテナBuildPushRunPullインフラ インフラホストOS ホストOSイメージイメージコンテナイメージコンテナイメージコンテナイメージイメージ イメージ イメージ・3.1節:イメージリスク・3.2節:レジストリリスク・3.3節:オーケストレーターリスク・3.4節:コンテナリスク・3.5節:ホストOSリスクίϯςφڥͷ͋ΒΏΔͱ͜ΖʹϦεΫ͕͋Δʂサプライチェーン攻撃への対策前提は「信頼できるコンテナイメージ」そのための考え⽅:Secure By DesignDevSecOpsシフトレフト(Shift-Left)https://www.ipa.go.jp/icscoe/program/core_human_resource/final_project/security-by-design.htmlhttps://www.sqat.jp/tamatebako/7205/
© JTP Co., Ltd. All Rights Reserved.リスクへの対策項⽬ リスクの例 対策イメージ 脆弱性を含むイメージ悪意のあるイメージ信頼できないイメージイメージ内の機密情報悪⽤されやすいソフトウェア(開発ツール等)不正な(指定外の)イメージ脆弱性スキャン機密データの分離署名付きイメージパブリックレジストリ禁⽌不要なパッケージの除去/加算アプローチの採⽤開発プロセスへのセキュリティ組み込みベースイメージ、パッケージの継続的な更新SBoMの利⽤レジストリ 通信傍受脆弱性を含むイメージ不適切なアクセス権TLS暗号化脆弱性スキャン機能のあるレジストリの利⽤アカウント管理の徹底コンテナ 特権コンテナの利⽤マルウェアの組み込み、実⾏ランタイム脆弱性によるコンテナブレイクアウト特権コンテナの実⾏禁⽌(seccomp / Capabilities / LSM )rootfsファイルシステムの保護隔離レベルの異なる適切なコンテナランタイムの選択(runC, kata containers, gVisor, etc.)オーケストレーター デフォルト設定のまま本番環境を運⽤設定ミス機密情報のトラフィック適切な設定適切な運⽤・管理監視APIアクセス、アカウント、権限の制限通信の制限、フィルタリング(netpol / FW / TLS )ホストOS OSの脆弱性OSのバグリソース不⾜コンテナ⽤OSを利⽤(汎⽤ではなく)Closedなネットワークへの配置マネージドサービスの利⽤CIS benchmarkなどの適⽤20SBoM (Software Bill of Materials): ソフトウェアの「部品表」
© JTP Co., Ltd. All Rights Reserved.攻撃⼿法を知る・・・MITRE ATT&CK• MITRE (マイター)は、情報セキュリティ研究の⾮営利団体https://attack.mitre.org/• 情報セキュリティの脅威となる攻撃の⼿⼝(Techniques)を観察、収集し、集計し、ナレッジベース化• ATT&CK = Adversarial Tactics, Techniques, and Common Knowledge参考:ڞ௨੬ऑੑࣝผࢠʢCVE: Common Vulnerabilities and ExposuresʣID Λ࠾൪͍ͯ͠Δͷ͜ͷ MITREͰ͋Δhttps://cve.mitre.org/• コンテナセキュリティを対象として、⽶国Microsoft社が纏め直したものが ”for K8s” → 次⾴https://www.microsoft.com/en-us/security/blog/2020/04/02/attack-matrix-kubernetes/ (初版)https://www.microsoft.com/en-us/security/blog/2021/03/23/secure-containerized-environments-with-updated-threat-matrix-for-kubernetes/ (改訂版)• 攻撃者が取る⾏動に着⽬し、⼿⼝を分類したもの• 昨今、どのような攻撃が来ているのかが分かる参考:同様のものとして、Cyber Kill Chainがあるhttps://www.lockheedmartin.com/en-us/capabilities/cyber/cyber-kill-chain.html21
© JTP Co., Ltd. All Rights Reserved.攻撃⼿法を知る・・・MITRE ATT&CK for K8s• MITRE (マイター)は、情報セキュリティ研究の⾮営利団体• 情報セキュリティの脅威となる攻撃の⼿⼝(Techniques)を観察、収集し、集計し、ナレッジベース化している• ATT&CK = Adversarial Tactics, Techniques, and Common Knowledge• これを元に、⽶国Microsoft社は、コンテナセキュリティを主眼として纏め直したものが上記のもの• https://www.microsoft.com/en-us/security/blog/2020/04/02/attack-matrix-kubernetes/ (初版)• https://www.microsoft.com/en-us/security/blog/2021/03/23/secure-containerized-environments-with-updated-threat-matrix-for-kubernetes/ (改訂版)22https://www.microsoft.com/en-us/security/blog/2021/03/23/secure-containerized-environments-with-updated-threat-matrix-for-kubernetes/
© JTP Co., Ltd. All Rights Reserved.ガイドラインあれこれ先に紹介した NIST 800-SP190 / MITRE ATT&CK に加えて、以下のものも読んでみましょう23• CIS Benchmarks https://www.cisecurity.org/benchmark• ⽶国Center for Internet Securityが作成し、公開しているセキュリティベストプラクティス集• さまざまプラットフォーム、OSのためのバージョンがあり、K8s版を CIS Kubernetes Benchmarkというhttps://www.cisecurity.org/benchmark/kubernetes• OSSのみならず、クラウド各社マネージドサービス向けのベンチマークもある• OWASP cheat sheets https://cheatsheetseries.owasp.org/• ⽶国Open Web Application Security Projectが作成し、公開しているセキュリティベストプラクティス集• OWASP Top 10 https://owasp.org/Top10/ja/• 同団体が発⾏している、Webアプリケーションセキュリティについてのリスク集• OWASP K8s Top 10 https://owasp.org/www-project-kubernetes-top-ten/• NSA CISA Kubernetes Hardening Guide• https://media.defense.gov/2022/Aug/29/2003066362/-1/-1/0/CTR_KUBERNETES_HARDENING_GUIDANCE_1.2_20220829.PDF• ⽶国National Security AgencyおよびCybersecurity and Infrastructure Security Agencyが発⾏するガイダンス• 主に、国家安全保障システムに携わるシステム管理者や開発者が対象• Kubernetes本家• https://kubernetes.io/ja/docs/concepts/security/overview/• https://kubernetes.io/ja/docs/concepts/security/pod-security-standards/• https://kubernetes.io/blog/2021/10/05/nsa-cisa-kubernetes-hardening-guidance/
© JTP Co., Ltd. All Rights Reserved.代表的なツール24まだまだあります。知りたいときは・・・→(次⾴)
© JTP Co., Ltd. All Rights Reserved.CNCF Landscape25https://l.cncf.ioSecurity & compliance はこのへんにあります
© JTP Co., Ltd. All Rights Reserved.コンテナセキュリティの認定資格• Linux Foundation 主催の認定資格• CKA: Certified Kubernetes Administrator• CKAD: Certified Kubernetes Application Developer• CKS: Certified Kubernetes Security Specialist26https://training.linuxfoundation.org/ja/certification/certified-kubernetes-security-specialist/
© JTP Co., Ltd. All Rights Reserved.CKS試験の概要項⽬ 内容試験時間 120分間問題数 20問程度合格ライン 67%受験の条件 有効期間内のCKA認定形式 パフォーマンスベース(監視下でのオンライン、ハンズオン)有効期間 2年間受験料 $395 (たまにセールあり)27
© JTP Co., Ltd. All Rights Reserved.CKS試験の出題範囲と出題割合• クラスター設定(10%)• ネットワーク セキュリティ ポリシーを使⽤してクラスタ レベルのアクセスを制限する• CISベンチマークを使⽤して、Kubernetesコンポーネントのセキュリティ構成を確認する(etcd、kubelet、kubedns、kubeapi)• セキュリティ制御によりIngressオブジェクトを適切に設定する• ノードのメタデータとエンドポイントを保護する• GUI要素の使⽤とアクセスを最⼩化する• デプロイ前にプラットフォーム バイナリを確認する• クラスター強化(15%)• Kubernetes APIへのアクセスを制限する• ロール ベース アクセス コントロールを使⽤して、露出を最⼩限に抑える• サービスアカウントを使⽤する際の注意事項を実践する(新しく作成したサービスアカウントについてのデフォルト禁⽌や権限の最⼩化など)• Kubernetesを頻繁に更新する• システムの強化(15%)• ホストOSのフットプリントを最⼩化する(攻撃対象を減らす)IAMロールを最⼩限に抑えるネットワークへの外部アクセスを最⼩限に抑える AppArmor、seccompなどのカーネル強化ツールを適切に使⽤する28詳細:https://github.com/cncf/curriculum
© JTP Co., Ltd. All Rights Reserved.CKS試験の出題範囲と出題割合• マイクロサービスの脆弱性を最⼩限に抑える(20%)• 適切な OS レベルのセキュリティ ドメインをセットアップする• Kubernetesシークレットを管理する• マルチテナント環境(gvisor、kataコンテナなど)でコンテナ ランタイム サンドボックスを使⽤する• mTLSを使⽤してPod間の暗号化を⾏う• サプライチェーンのセキュリティ(20%)• 基本画像のフットプリントを最⼩化する• サプライチェーンを保護する:許可されたレジストリをホワイトリストに登録し、画像に署名して検証する• ユーザー ワークロード(Kubernetesリソース、Dockerファイルなど)の静的分析を使⽤する• 既知の脆弱性に関する画像をスキャンする• モニタリング、ロギング、ランタイムセキュリティ(20%)• ホストおよびコンテナ レベルでsyscallプロセスやファイルのアクティビティについて⾏動分析し、悪意のあるアクティビティを検出する• 物理インフラ、アプリ、ネットワーク、データ、ユーザー、およびワークロード内の脅威を検出する• 発⽣場所や発⽣⽅法を問わず、あらゆるフェーズの攻撃を検出する• 詳細な分析調査を⾏い、環境内に存在する悪役を特定する• 実⾏時のコンテナの不変性を確保する• 監査ログを使⽤してアクセスを監視する29詳細:https://github.com/cncf/curriculum
© JTP Co., Ltd. All Rights Reserved.きょうのまとめ• コンテナとKubernetesとOpenShiftのおさらいをする• コンテナセキュリティの範囲を知る• コンテナセキュリティのリスクと脅威を知る• コンテナセキュリティガイドラインを知る• コンテナセキュリティの代表的なツールを知る• コンテナセキュリティについて網羅的に学習する⽅法を知る30
© JTP Co., Ltd. All Rights Reserved.Thank you.またお⽬にかかりましょう2019.5 早朝 静岡県 ふもとっぱらキャンプ場から望む富⼠⼭