Slide 1

Slide 1 text

Oracle Linux Cloud Native Environment (OLCNE)で実現する セキュアでアジャイルなアプリケーションコンテナ基盤 ~ リクルートのセキュリティアーキテクトによる Kata Containers のデモと考察 ~ 株式会社リクルートテクノロジーズ セキュリティオペレーションセンター セキュリティアーキテクト 嶋寺 克彰

Slide 2

Slide 2 text

免責事項 本資料に記載の内容は筆者の個人的見解に基づくものであり、所属する組織の見解 を代表するものではありません。 本資料に記載している見解等は、本資料作成時におけるものであり、予告なしに内 容が変更されることがあります。 本資料は、信頼できると思われる各種情報に基づいて作成されていますが、その正 確性・完全性を保証するものではありません。 本資料に関連して生じた一切の損害について、筆者および所属する組織は責任を負 いません。 2

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

自己紹介 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回紅白歌合戦 出演

Slide 5

Slide 5 text

リクルートグループについて 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日時点) 目指す世界観 「あなた」を支える存在でありたい

Slide 6

Slide 6 text

リクルートの事業内容について 6 ライフイベント領域 進学 就職 結婚 転職 住宅購入 車購入 出産/育児 旅行 ビジネス支援 生活/地域情報 グルメ・美容 ライフスタイル領域 選択・意思決定を支援する情報サービスを提供し、 「まだ、ここにない、出会い。」を実現する。

Slide 7

Slide 7 text

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 各社連携 グループ各社と連携し、迅速な意思決定を支援 (株)リクルートの組織

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

コンテナ型仮想化の歴史 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隔離)

Slide 10

Slide 10 text

アプリケーションコンテナと開発プロセス 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

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

アプリケーションコンテナの動向 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 (予測)

Slide 13

Slide 13 text

アプリケーションコンテナのアーキテクチャ 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

Slide 14

Slide 14 text

アプリケーションコンテナの主なリスク 14 2. レジストリのリスク 3. オーケストレータの リスク 4. コンテナランタイム のリスク 5. ホストOSのリスク Container Image 1. イメージのリスク

Slide 15

Slide 15 text

イメージのリスク 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

Slide 16

Slide 16 text

ホスト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を共有したアプリケーションコンテナの 模式図

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

Kata Containers とは? • ハイパーバイザの技術を利用し、 アプリケーションの強い隔離を実現 するコンテナランタイム • OpenStack Foundation (OSF) によるサポート • Intel Clear Containers がベース • 2017/12 Version 1.0 リリース • Apache 2 ライセンスの下、OSS で開発中 • https://katacontainers.io/ 18

Slide 19

Slide 19 text

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を共有せず、ハイパーバイザと同等の隔離

Slide 20

Slide 20 text

アプリケーションコンテナの標準化 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はプラチナメンバー

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

デモ環境 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 主なソフトウェアのバージョン

Slide 24

Slide 24 text

デモ概要 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

Slide 25

Slide 25 text

インストール手順概要 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

Slide 26

Slide 26 text

Demonstration 26

Slide 27

Slide 27 text

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

Slide 28

Slide 28 text

まとめ • アプリケーションコンテナの本番適用にはセキュリティの 考慮が不可欠 • アプリケーションコンテナのセキュリティはエコシステム 全体で考える必要あり • パフォーマンス・セキュリティ等、コンテナランタイムの 特性を理解して使い分けることが有効なケースもあり 28