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

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

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

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

Recruit Technologies

August 06, 2019
Tweet

More Decks by Recruit Technologies

Other Decks in Technology

Transcript

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

    Containers のデモと考察 ~ 株式会社リクルートテクノロジーズ セキュリティオペレーションセンター セキュリティアーキテクト 嶋寺 克彰
  2. 自己紹介 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回紅白歌合戦 出演
  3. リクルートグループについて 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日時点) 目指す世界観 「あなた」を支える存在でありたい
  4. リクルートの事業内容について 6 ライフイベント領域 進学 就職 結婚 転職 住宅購入 車購入 出産/育児

    旅行 ビジネス支援 生活/地域情報 グルメ・美容 ライフスタイル領域 選択・意思決定を支援する情報サービスを提供し、 「まだ、ここにない、出会い。」を実現する。
  5. 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 各社連携 グループ各社と連携し、迅速な意思決定を支援 (株)リクルートの組織
  6. コンテナ型仮想化の歴史 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隔離)
  7. アプリケーションコンテナと開発プロセス 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
  8. アプリケーションコンテナの動向 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 (予測)
  9. イメージのリスク 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
  10. ホスト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を共有したアプリケーションコンテナの 模式図
  11. Kata Containers とは? • ハイパーバイザの技術を利用し、 アプリケーションの強い隔離を実現 するコンテナランタイム • OpenStack Foundation

    (OSF) によるサポート • Intel Clear Containers がベース • 2017/12 Version 1.0 リリース • Apache 2 ライセンスの下、OSS で開発中 • https://katacontainers.io/ 18
  12. 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を共有せず、ハイパーバイザと同等の隔離
  13. アプリケーションコンテナの標準化 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はプラチナメンバー
  14. 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
  15. デモ環境 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 主なソフトウェアのバージョン
  16. デモ概要 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
  17. インストール手順概要 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
  18. 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