Oracle Linux Cloud Native Environment (OLCNE)で実現するセキュアでアジャイルなアプリケーションコンテナ基盤 ~リクルートのセキュリティアーキテクトによる Kata Container のデモと考察~

Oracle Linux Cloud Native Environment (OLCNE)で実現するセキュアでアジャイルなアプリケーションコンテナ基盤 ~リクルートのセキュリティアーキテクトによる Kata Container のデモと考察~

2019/8/6 Modern Cloud Day Tokyoでの嶋寺の講演資料になります

Eea9a05e6e222a3d50c73f54a49fadf4?s=128

Recruit Technologies

August 06, 2019
Tweet

Transcript

  1. Oracle Linux Cloud Native Environment (OLCNE)で実現する セキュアでアジャイルなアプリケーションコンテナ基盤 ~ リクルートのセキュリティアーキテクトによる Kata

    Containers のデモと考察 ~ 株式会社リクルートテクノロジーズ セキュリティオペレーションセンター セキュリティアーキテクト 嶋寺 克彰
  2. 免責事項 本資料に記載の内容は筆者の個人的見解に基づくものであり、所属する組織の見解 を代表するものではありません。 本資料に記載している見解等は、本資料作成時におけるものであり、予告なしに内 容が変更されることがあります。 本資料は、信頼できると思われる各種情報に基づいて作成されていますが、その正 確性・完全性を保証するものではありません。 本資料に関連して生じた一切の損害について、筆者および所属する組織は責任を負 いません。 2

  3. 本日のAgenda 1.自己紹介 2.会社紹介 3.アプリケーションコンテナ 4.アプリケーションコンテナのセキュリティ 5.Kata Containers 6.Demo 3

  4. 自己紹介 4 嶋寺克彰 Katsuaki SHIMADERA, CISSP  インフラエンジニア歴16年  一児の父

     けん玉エバンジェリスト(自称) 主な仕事  セキュリティアーキテクト(セキュリティ寄りのインフラエンジニア)  自社SOCのセキュリティシステムの構築・運用  セキュリティソリューションの調査・検証 2014/8/2 European Kendama Open 優勝 2016/12/31 NHK 第67回紅白歌合戦 出演 2017/12/31 NHK 第68回紅白歌合戦 出演 2018/12/31 NHK 第69回紅白歌合戦 出演
  5. リクルートグループについて 5 創業 1960年3月31日 「大学新聞広告社」としてスタート グループ 従業員数 45,856名 (2019年3月31日時点) 連結売上高

    23107億円 (2018年4月1日~2019年3月31日) 連結経常利益 2230億円 (2018年4月1日~2019年3月31日) グループ 企業数 344社 (子会社および関連会社、2019年3月31日時点) 目指す世界観 「あなた」を支える存在でありたい
  6. リクルートの事業内容について 6 ライフイベント領域 進学 就職 結婚 転職 住宅購入 車購入 出産/育児

    旅行 ビジネス支援 生活/地域情報 グルメ・美容 ライフスタイル領域 選択・意思決定を支援する情報サービスを提供し、 「まだ、ここにない、出会い。」を実現する。
  7. 7 Recruit-CSIRTを構成する組織 SOC SQMG IRT CSIRT IRT Incident Response Team

    SQMG Security Quality Management Group SOC Security Operation Center サイバー攻撃への対応をリード ・事故発生時の対応支援 ・外部関連機関との連携 ・Recruit-CSIRTの運営、各社展開 被害最小化 未然防止 早期検知 サイバー攻撃を早期検知し、被害拡大を防止 ・グループ共通インフラのセキュリティ監視 ・未知マルウェアの監視、解析、一次対応 ・被害発生時のフォレンジック (NWおよびPC) ・内部不正のモニタリング 平時からセキュリティを向上、被害を未然に防止 ・脆弱性診断、開発者教育などのセキュア開発支援 ・セキュリティパッチの情報収集および各社展開 ・早期警戒(脅威情報の収集および対策検討) SMG SMG Solution Management Group 各社連携 グループ各社と連携し、迅速な意思決定を支援 (株)リクルートの組織
  8. 8 1.自己紹介 2.会社紹介 3.アプリケーションコンテナ 4.アプリケーションコンテナのセキュリティ 5.Kata Containers 6.Demo

  9. コンテナ型仮想化の歴史 9 chroot 1979~ Unix Version 7 (ファイルシステム隔離) FreeBSD Jail

    2000~ FreeBSD 4.0 (プロセス空間隔離) Solaris Zones (Solaris Containers) 2005~ Solaris 10 Native Zones/Brand Zones 2014~ Solaris 11.2 Kernel Zones (Kernel隔離) Linux Containers 2005~ OpenVZ/Virtuozzo 2008~ Linux-VServer, LXC/LXD 2011~ systemd-nspawn 2013~ 2014~ コンテナ型仮想化 OSレベル仮想化 システムコンテナ アプリケーションコンテナ 2017~ (Kernel隔離)
  10. アプリケーションコンテナと開発プロセス 10 ビルド パッケージング デプロイ アプリケーションコンテナ (Docker) サーブレットコンテナ docker build

    … / push … docker pull … / run … Application Server Docker Host Container Container Container webapp webapp webapp WAR JAR Class XML a.java b.java c.java a.class b.class c.class *.c *.php *.py Image App Library Userland App App App
  11. 11 1.自己紹介 2.会社紹介 3.アプリケーションコンテナ 4.アプリケーションコンテナのセキュリティ 5.Kata Containers 6.Demo

  12. アプリケーションコンテナの動向 2019/4/23 Smarter With Gartner Infrastructure & operations leaders must

    build a strategy and a business case for deploying containers. より 12 https://www.gartner.com/smarterwithgartner/6-best-practices-for-creating-a-container-platform-strategy/ 1.セキュリティ & ガバナンス 2.モニタリング 3.ストレージ 4.ネットワーク 5.コンテナのライフサイクルマネジメント 6.コンテナオーケストレーション アプリケーションコンテナを 商用環境で使用する組織の割合 6つの着目すべき要素 >75% <30% 2022 2019 (予測)
  13. アプリケーションコンテナのアーキテクチャ NIST.SP.800-190 Application Container Security Guide (2017/9) より 13 https://csrc.nist.gov/publications/detail/sp/800-190/final

    例: 例: 例: Docker Hub Container Image
  14. アプリケーションコンテナの主なリスク 14 2. レジストリのリスク 3. オーケストレータの リスク 4. コンテナランタイム のリスク

    5. ホストOSのリスク Container Image 1. イメージのリスク
  15. イメージのリスク 15 アプリケーション ライブラリ ユーザランド コンテナイメージの模式図 $ sudo docker exec

    container ls -F / bin/ boot/ dev/ etc/ home/ lib/ lib64/ media/ mnt/ opt/ proc/ root/ run/ sbin/ srv/ sys/ tmp/ usr/ var/ コンテナの中身はOSイメージそのもの 1.イメージの脆弱性 2.イメージの設定ミス 3.マルウェアの埋め込み 4.平文での認証情報の埋め込み 5.信頼できないイメージの使用 NIST.SP.800-190 3.1 Image Risks
  16. ホストOSのリスク 16 Host OS Kernel Namespace Namespace App App 1.ホストOSへの攻撃

    2.Kernelの共有 3.ホストOSのコンポーネントの脆弱性 4.不適切なユーザ権限 5.ホストOSのファイルシステム改ざん Kernelの共有について 一般的に、アプリケーションコンテナ環境では、ア プリケーションレベルで隔離が行われているものの、 Kernelを共有しており、ハイパーバイザによる仮想 化より隔離のレベルが低いと考えられる。 NIST.SP.800-190 3.5 Host OS Risks Kernelを共有したアプリケーションコンテナの 模式図
  17. 17 1.自己紹介 2.会社紹介 3.アプリケーションコンテナ 4.アプリケーションコンテナのセキュリティ 5.Kata Containers 6.Demo

  18. Kata Containers とは? • ハイパーバイザの技術を利用し、 アプリケーションの強い隔離を実現 するコンテナランタイム • OpenStack Foundation

    (OSF) によるサポート • Intel Clear Containers がベース • 2017/12 Version 1.0 リリース • Apache 2 ライセンスの下、OSS で開発中 • https://katacontainers.io/ 18
  19. Kata Containers のアーキテクチャ 19 Host OS Kernel Namespace Namespace App

    App Host OS Kernel Virtual Machine App Kernel Virtual Machine App Kernel 一般的なアプリケーションコンテナ Kata Containers Kernelを共有し、Namespaceにより隔離 Kernelを共有せず、ハイパーバイザと同等の隔離
  20. アプリケーションコンテナの標準化 Kata Containers は、Cloud Native Computing Foundation (CNCF) によって策定された、 OCI

    (Open Container Initiative) Runtime Specification に準拠するコンテナランタイムです 20 High-Level Container Runtime Low-Level Container Runtime https://github.com/kata-containers/documentation/blob/master/design/architecture.md 2015年設立 Oracleはプラチナメンバー
  21. Oracle Linux Cloud Native Environment とは? 21 Gluster Storage Prometheus

    High Availability kata-runtime Docker Kubernetes Cloud Native Tools Virtualization ksplice Ceph Storage And More… ORACLE LINUX PREMIER CLOUD NATIVE ENVIRONMENT X  App Definition & Development Orchestration Management Container Runtime Container Provisioning Observability & Analysis
  22. 22 1.自己紹介 2.会社紹介 3.アプリケーションコンテナ 4.アプリケーションコンテナのセキュリティ 5.Kata Containers 6.Demo

  23. デモ環境 Host OS Windows 10 Virtualization VMware Workstation Player 15.1.0

    Guest OS Oracle Linux 7.6 Docker Docker 18.09.1 Kata Runtime kata-runtime 1.5.4 ※2019/7時点 Developer Preview 23 主なソフトウェアのバージョン
  24. デモ概要 24 Oracle Linux Kernel nginx-kata Kernel nginx-runc Docker Containerd

    runC kata-runtime Docker Hub # docker pull nginx # docker run --runtime=runc --name=nginx-runc nginx # docker run --runtime=kata-runtime --name=nginx-kata nginx
  25. インストール手順概要 25 # yum-config-manager --enable ol7_addons # yum-config-manager --enable ol7_developer

    # yum-config-manager --enable ol7_developer_kvm_utils # yum install docker-engine # yum install qemu # yum install oracle-olcne-release-el7 # yum install kata-runtime # vi /etc/sysconfig/docker --- OPTIONS='-D --add-runtime kata-runtime=/usr/bin/kata-runtime' RPMのインストール Yumリポジトリの有効化 kata-runtimeの有効化 確認 # docker info … Runtimes: kata-runtime runc # lsmod … kvm 643072 1 kvm_intel
  26. Demonstration 26

  27. Demonstration 27 # docker pull nginx … # docker images

    REPOSITORY TAG IMAGE ID CREATED SIZE nginx latest 719cd2e3ed04 4 days ago 109MB # pstree systemd─┬─… … ├─containerd─┬─containerd-shim─┬─nginx───nginx │ │ └─9*[{containerd-shim}] │ ├─containerd-shim─┬─kata-proxy───8*[{kata-proxy}] │ │ ├─kata-shim───8*[{kata-shim}] │ │ ├─qemu-system-x86───2*[{qemu-system-x86}] │ │ └─8*[{containerd-shim}] │ └─11*[{containerd}] … # docker run --runtime=runc --name=nginx-runc nginx … # docker run --runtime=kata-runtime --name=nginx-kata nginx … Docker - containerd - runC Docker - containerd - kata-runtime
  28. まとめ • アプリケーションコンテナの本番適用にはセキュリティの 考慮が不可欠 • アプリケーションコンテナのセキュリティはエコシステム 全体で考える必要あり • パフォーマンス・セキュリティ等、コンテナランタイムの 特性を理解して使い分けることが有効なケースもあり

    28