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

コンテナのセキュリティについて考えよう osc2020tk

コンテナのセキュリティについて考えよう osc2020tk

コンテナセキュリティを如何に実現するか、今なにができるかについて考えましょう。

Satoru MIYAZAKI

April 25, 2020
Tweet

More Decks by Satoru MIYAZAKI

Other Decks in Technology

Transcript

  1. myzkstr.com みやざきさとる 宮﨑悟 [email protected] @s_miyaza satoru.miyazaki.31  好きなOS:Solaris  好きなファイルシステム:ZFS

     好きな仮想化:Solaris Zone  フリーランスのエンジニア  北海道函館市からリモートワーク  主な仕事  某WordPress仮想マシン  コンテナセキュリティ製品評価  技術コラム掲載
  2. コンテナとは  Dockerは、cgroupとLinux User Namespaceでリソース (プロセス、ネットワーク、ボリューム)を分離  恒久的なディスク領域、仮想ネットワーク、 仮想ブリッジなどはコンテナデーモンが作成 

    コンテナはカーネルを持たない  コンテナ内の処理はsystem callを使用し、 コンテナホスト上のカーネルで処理 コンテナホスト OS/カーネル コンテナ プロセス コンテナ プロセス system call system call vol1 veth1 veth2 vol2 コンテナデーモン ブリッジ 2020-02-22 OSC 2020 Tokyo/Spring #osc20tk 6
  3. コンテナ上のアプリケーション コンテナホスト OS/カーネル コンテナデーモン 特権ユーザ アプリケーション 非特権ユーザ アプリケーション 非特権ユーザ コンテナ1

    コンテナ2  1コンテナで1サービスのみ動作することを推奨  コンテナには、アプリケーション、ライブラリ、 アプリケーションに必要なファイルのみを配置する ことを推奨  コンテナ内のプロセスは、非特権ユーザ (rootユーザ以外)で動作することを推奨  ホストからはコンテナのプロセスを見ることが可能  コンテナから、コンテナホストや他コンテナの プロセスを見ることは不可 2020-02-22 OSC 2020 Tokyo/Spring #osc20tk 7
  4. コンテナ上のネットワーク  コンテナとコンテナホストのネットワークは、仮想ブリッジ通信  Docker Swarmでは、ノード間通信をTLSで暗号化  k8sでは、幾つかのCNI Networkプロバイダを 使用可能

     k8sでは、VxLANやTLSによって ホスト間の通信を暗号化可能  外部からは必要なポートのみを ポートフォワードによって接続 ホスト1 node間 接続 TLS VxLAN ホスト2 LBサービス サービス サービス サービス サービス サービス サービス 2020-02-22 OSC 2020 Tokyo/Spring #osc20tk 8
  5. コンテナイメージ  コンテナはイメージという形で配布される  イメージはレイヤ構造で構成される  Docker Official Imageなどの安全なベースイメージを 元に構成可能

     必要なミドルウェア、アプリケーションを 積み重ねてイメージを作成 Container Application Layer Middleware Layer Base OS Layer 2020-02-22 OSC 2020 Tokyo/Spring #osc20tk 9
  6. コンテナのセキュリティ問題(2) →解決策  コンテナに含まれる、ミドルウェア、ライブラリなどに 脆弱性が見つかる  カーネル、コンテナサービス自体の脆弱性が見つかる  ゼロデイ攻撃 

    コンテナイメージの脆弱性スキャン、修正  実行中のコンテナのアップデート  コンテナホストの脆弱性スキャン 2020-02-22 OSC 2020 Tokyo/Spring #osc20tk 15
  7. コンテナのセキュリティ問題(3) →解決策  マルウェアの被害  長期稼働時の意図しない動作  動作中のコンテナのランタイム制御 不要なプロセス実行の禁止 動作中にコピーされた実行形式の実行停止

     コンテナ動作時間の制限  定期的なローリングアップデート  定期的なコンテナホストのアップデート 2020-02-22 OSC 2020 Tokyo/Spring #osc20tk 17
  8. コンテナの脆弱性スキャン  コンテナホストに対する脆弱性スキャン  コンテナイメージに対する脆弱性スキャン  コンテナのレイヤ単位でスキャンが可能  実行中にコンテナに対する脆弱性スキャン 

    パッケージベースでCVN/JVN情報を元にスキャンを実施  対応OSが限られる(Debian, alpine, RHEL系など)  言語の使用パッケージまで確認するツールもある 2020-02-22 OSC 2020 Tokyo/Spring #osc20tk 20
  9. 脆弱性スキャンツール(OSS) その1  Anchore Engine(https://anchore.com/engine/)  コンテナイメージの静的スキャン  Docker Hub(https://hub.docker.com/)

     コンテナイメージの静的スキャン  Clair(https://github.com/coreos/clair)  コンテナイメージの静的スキャン  falco(https://sysdig.com/opensource/falco/)  sysdig社開発のOSSランタイムスキャンツール  実行中のコンテナアプリケーション、ホスト、ネットワークの異常検知  CNCFのsandboxプロジェクトにジョイン 2020-02-22 OSC 2020 Tokyo/Spring #osc20tk 21
  10. 脆弱性スキャンツール(OSS) その2  trivy(https://github.com/aquasecurity/trivy)  イメージの静的スキャン  Aqua Securityに買収されたが、OSSで公開 

    Vuls(https://github.com/future-architect/vuls)  複数ホスト(コンテナホスト、コンテナ)の静的・動的 脆弱性スキャン可能  稼働中のコンテナの脆弱性チェック可能  Wazuh(https://wazuh.com)  脆弱性検知、侵入検知、ファイル変更・インジェクション検知  統合的にコンテナのセキュリティを確保 2020-02-22 OSC 2020 Tokyo/Spring #osc20tk 22
  11. コンテナイメージの脆弱性スキャン  スキャンにより脆弱性が見つかった場合  ベースイメージ、パッケージ、使用ライブラリの更新  イメージの再作成→脆弱性検査  新コンテナイメージのデプロイ 

    ローリングアップデート  カナリアデプロイ  ブルー/グリーンデプロイ  脆弱性は日々発見される 定期的に脆弱性スキャン実施する必要がある 2020-02-22 OSC 2020 Tokyo/Spring #osc20tk 23
  12. ランタイム監視  静的スキャンだけでは、日々更新される脆弱性による ゼロデイ攻撃に対応できない  ランタイム監視=実行中のコンテナの監視  ランタイム監視に求められること  実行中コンテナの脆弱性検知

     実行中コンテナのファイルインジェクションの検知  コンテナ内の実行可能・不可能なファイルの設定  コンテナ間・コンテナ外への不正な通信の禁止 2020-02-22 OSC 2020 Tokyo/Spring #osc20tk 24
  13. アプリケーションの脆弱性  アプリケーションの脆弱性  SQLインジェクション  CSR/CSRF  ファイルのインジェクション 

    コマンド実行  アプリケーション脆弱性の対応  アプリケーションで使用するライブラリは、最新のものを選択  脆弱性を意識したアプリケーション開発  ペネトレーションテストの実施 2020-02-22 OSC 2020 Tokyo/Spring #osc20tk 25
  14. セキュリティはプロセス  コンテナホスト自体の脆弱性チェック  定期的なイメージ再作成  イメージ検査  テスト(アプリケーション、ペネトレーション、負荷など) 

    デプロイ  未知のマルウェア、インジェクションなどへの対応  コンテナの寿命を短くする  ランタイム監視の実施  障害発生時のエスカレーション 2020-02-22 OSC 2020 Tokyo/Spring #osc20tk 27
  15. DevSecOpsの実践  一貫した開発・セキュリティ・運用が必要  シフトレフト  バグを運用でカバーすると高コスト  バグを開発で出し切る 

    運用、セキュリティコストの削減  DevSecOpsの自動化  CI/CDの考え方の導入+セキュアな考え方 2020-02-22 OSC 2020 Tokyo/Spring #osc20tk 28
  16. Security  セキュリティ基準の策定  CIS  HIPS  NIST 

    PCI DSS  DevとOpsに対するセキュリティ対策支援  開発のセキュリティ基準  コンテナセキュリティの方針決定 2020-02-22 OSC 2020 Tokyo/Spring #osc20tk 30
  17. Operations  イメージアップデート  定期的なデプロイ  定期的な脆弱性スキャン  障害監視 

    障害検知時のエスカレーション 2020-02-22 OSC 2020 Tokyo/Spring #osc20tk 31
  18. CI/CDツールと 脆弱性スキャンの組み合わせ  CI/CDツール  Gitlab  Jenkins  Circle

    CI  Travis CI  コンテナイメージ作成時後に静的脆弱性スキャン 2020-02-22 OSC 2020 Tokyo/Spring #osc20tk 32
  19. ルーチンワークは自動化する  CI/CDツールで出来ることは自動化する  アプリケーション静的解析  コンテナイメージの静的脆弱性スキャン  コンテナ群へのペネトレーションテスト 

    デプロイ  リリース中のコンテナイメージに対する脆弱性スキャン  Wazuhなど、脆弱性検査及び監視を行うツールもある 2020-02-22 OSC 2020 Tokyo/Spring #osc20tk 33
  20. セキュリティよくわからない  自分で学ぶ  時間的コストが高い  金で解決する  セキュリティに強い人材を確保・育成する 

    セキュリティコンサルタントを雇う  商用のコンテナセキュリティツールを使う 2020-02-22 OSC 2020 Tokyo/Spring #osc20tk 36
  21. 商用コンテナセキュリティ製品(1)  Aqua Cloudnaitive Security Platform (https://www.aquasec.com)  イメージスキャン、ランタイムスキャン、監視、L3FW 

    日本販社あり  NeuVector(https://neuvector.com/)  イメージスキャン、ランタイムスキャン、監視、L7FW  日本販社あり 2020-02-22 OSC 2020 Tokyo/Spring #osc20tk 37
  22. 商用コンテナセキュリティ製品(2)  sysdig (https://sysdig.com)  イメージスキャン、ランタイムスキャン、監視  日本販社あり  Tufin

    Iris/Orca(https://www.tufin.com/ja)  イメージスキャン、ランタイムスキャン、監視、FW  日本販社あり  twistlock(https://www.twistlock.com)  イメージスキャン、ランタイムスキャン、監視、FW  日本販社あり  最近パロアルトに買収され、Prismaに統合される模様 2020-02-22 OSC 2020 Tokyo/Spring #osc20tk 38