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

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

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

アプリケーションコンテナであるDockerや、そのオーケストレーションツールであるKubernetesが使われ始める昨今。今やその価値はデファクトスタンダードとも言える。だが待ってほしい。君たちは、DockerやKubernetesが安全なものだと考えているのではないか?しかしそうではない。なぜならば日々脆弱性は発見され、新たな攻撃手法が発見し続けるからである。そのため、我らは知らなければならない。アプリケーションコンテナとそのライフサイクルのセキュリティをどう保っていけば良いかを。
※このスライドは、以前OSC19EPで発表したものと同じ内容です。
https://speakerdeck.com/smiyaza/kontenafalsesekiyuriteinituitekao-eyou

Satoru MIYAZAKI

November 23, 2019
Tweet

More Decks by Satoru MIYAZAKI

Other Decks in Technology

Transcript

  1. myzkstr.com みやざきさとる 宮﨑悟 [email protected] @s_miyaza satoru.miyazaki.31  好きなOS:Solaris、FS:ZFS、仮想化:Solaris Zone 

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

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

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

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

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

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

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

    パッケージベースでCVN/JVN情報を元にスキャンを実施  対応OSが限られる(Debian, alpine, RHEL系など)  言語の使用パッケージまで確認するツールもある 2019-10-10 OSC 2019 Tokyo/Fall #osc19tk 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プロジェクトにジョイン 2019-10-10 OSC 2019 Tokyo/Fall #osc19tk 21
  10. 脆弱性スキャンツール(OSS) その2  trivy(https://github.com/aquasecurity/trivy)  イメージの静的スキャン  Aqua Securityに買収されたが、OSSで公開 

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

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

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

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

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

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

    PCI DSS  DevとOpsに対するセキュリティ対策支援  開発のセキュリティ基準  コンテナセキュリティの方針決定 2019-10-10 OSC 2019 Tokyo/Fall #osc19tk 30
  17. CI/CDツールと 脆弱性スキャンの組み合わせ  CI/CDツール  Gitlab  Jenkins  Circle

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

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

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

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

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