Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
コンテナのセキュリティについて考えよう osc2020tk
Search
Satoru MIYAZAKI
April 25, 2020
Technology
6
960
コンテナのセキュリティについて考えよう osc2020tk
コンテナセキュリティを如何に実現するか、今なにができるかについて考えましょう。
Satoru MIYAZAKI
April 25, 2020
Tweet
Share
More Decks by Satoru MIYAZAKI
See All by Satoru MIYAZAKI
どこのご家庭にもあるOpenSolarisを、ZFSで有効活用
smiyaza
0
170
How to secure container environment
smiyaza
0
500
コンテナ環境をセキュアに運用する方法 #osc20on
smiyaza
0
940
コンテナのセキュリティについて考えよう osc2019tk
smiyaza
1
140
コンテナのセキュリティについて考えよう
smiyaza
0
820
平成元年度に卒業した高専生が、令和元年の高専生に伝えたいこと
smiyaza
2
230
コンテナセキュリティってどうなってるの?
smiyaza
2
590
如何にPHP7.3.3のDockerイメージを作るか
smiyaza
0
810
KUSANAGI RoDの紹介
smiyaza
0
950
Other Decks in Technology
See All in Technology
Qiita埋め込み用スライド
naoki_0531
0
5.1k
LINEヤフーのフロントエンド組織・体制の紹介【24年12月】
lycorp_recruit_jp
0
530
事業貢献を考えるための技術改善の目標設計と改善実績 / Targeted design of technical improvements to consider business contribution and improvement performance
oomatomo
0
100
成果を出しながら成長する、アウトプット駆動のキャッチアップ術 / Output-driven catch-up techniques to grow while producing results
aiandrox
0
340
Amazon VPC Lattice 最新アップデート紹介 - PrivateLink も似たようなアップデートあったけど違いとは
bigmuramura
0
200
バクラクのドキュメント解析技術と実データにおける課題 / layerx-ccc-winter-2024
shimacos
2
1.1k
ゼロから創る横断SREチーム 挑戦と進化の軌跡
rvirus0817
2
270
kargoの魅力について伝える
magisystem0408
0
210
Oracle Cloud Infrastructure:2024年12月度サービス・アップデート
oracle4engineer
PRO
0
190
サービスでLLMを採用したばっかりに振り回され続けたこの一年のあれやこれや
segavvy
2
460
サーバレスアプリ開発者向けアップデートをキャッチアップしてきた #AWSreInvent #regrowth_fuk
drumnistnakano
0
200
統計データで2024年の クラウド・インフラ動向を眺める
ysknsid25
2
850
Featured
See All Featured
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
28
4.4k
Docker and Python
trallard
42
3.1k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
26
1.9k
Six Lessons from altMBA
skipperchong
27
3.5k
What’s in a name? Adding method to the madness
productmarketing
PRO
22
3.2k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
251
21k
Speed Design
sergeychernyshev
25
670
YesSQL, Process and Tooling at Scale
rocio
169
14k
A designer walks into a library…
pauljervisheath
204
24k
Writing Fast Ruby
sferik
628
61k
Designing for Performance
lara
604
68k
How To Stay Up To Date on Web Technology
chriscoyier
789
250k
Transcript
myzkstr.com みやざきさとる コンテナのセキュリティ について考えよう
myzkstr.com みやざきさとる 宮﨑悟
[email protected]
@s_miyaza satoru.miyazaki.31 好きなOS:Solaris 好きなファイルシステム:ZFS
好きな仮想化:Solaris Zone フリーランスのエンジニア 北海道函館市からリモートワーク 主な仕事 某WordPress仮想マシン コンテナセキュリティ製品評価 技術コラム掲載
アジェンダ 今日話すこと: コンテナの現状 コンテナセキュリティとは コンテナをセキュアに運用するためには 今日話さないこと:
コンテナセキュリティ製品の詳細 2020-02-22 OSC 2020 Tokyo/Spring #osc20tk 3
本資料でのコンテナの定義 本資料では、コンテナ=アプリケーションコンテナと する アプリケーションコンテナ=Docker(もしくはDocker 互換のアプリケーションコンテナ)を想定 コンテナのオーケストレーションサービスとして kubernetes(以下k8s)とDocker
Swarmを想定 2020-02-22 OSC 2020 Tokyo/Spring #osc20tk 4
コンテナの現状
コンテナとは 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
コンテナ上のアプリケーション コンテナホスト OS/カーネル コンテナデーモン 特権ユーザ アプリケーション 非特権ユーザ アプリケーション 非特権ユーザ コンテナ1
コンテナ2 1コンテナで1サービスのみ動作することを推奨 コンテナには、アプリケーション、ライブラリ、 アプリケーションに必要なファイルのみを配置する ことを推奨 コンテナ内のプロセスは、非特権ユーザ (rootユーザ以外)で動作することを推奨 ホストからはコンテナのプロセスを見ることが可能 コンテナから、コンテナホストや他コンテナの プロセスを見ることは不可 2020-02-22 OSC 2020 Tokyo/Spring #osc20tk 7
コンテナ上のネットワーク コンテナとコンテナホストのネットワークは、仮想ブリッジ通信 Docker Swarmでは、ノード間通信をTLSで暗号化 k8sでは、幾つかのCNI Networkプロバイダを 使用可能
k8sでは、VxLANやTLSによって ホスト間の通信を暗号化可能 外部からは必要なポートのみを ポートフォワードによって接続 ホスト1 node間 接続 TLS VxLAN ホスト2 LBサービス サービス サービス サービス サービス サービス サービス 2020-02-22 OSC 2020 Tokyo/Spring #osc20tk 8
コンテナイメージ コンテナはイメージという形で配布される イメージはレイヤ構造で構成される Docker Official Imageなどの安全なベースイメージを 元に構成可能
必要なミドルウェア、アプリケーションを 積み重ねてイメージを作成 Container Application Layer Middleware Layer Base OS Layer 2020-02-22 OSC 2020 Tokyo/Spring #osc20tk 9
コンテナセキュリティとは
コンテナはセキュア? コンテナを非特権ユーザで動作させる =コンテナホスト上で非特権ユーザでプロセスが動作する コンテナ内で1アプリケーションのみ動作させ、 アプリケーションに必要なファイルのみ配置する =コンテナ内で余計なプロセスを動作させない 複数のコンテナやコンテナホスト間をつなぐ
ネットワークは、分離もしくは暗号化されている 外部からの通信は必要なポートのみ接続される 2020-02-22 OSC 2020 Tokyo/Spring #osc20tk 11
コンテナのセキュリティ問題(1) ホスト側のカーネルを使用しても、 アプリケーション側でカーネルバグを踏むと ホスト上のすべてのコンテナが停止 2020-02-22 OSC 2020 Tokyo/Spring #osc20tk
12
コンテナのセキュリティ問題(1) →解決策 ホスト側のカーネルを使用しても、 アプリケーション側でカーネルバグを踏むと ホスト上のすべてのコンテナが停止 軽量VM上でコンテナを動作させる kata containerなどの実装がある
カーネルやコンテナサービスの脆弱性を スキャンする 2020-02-22 OSC 2020 Tokyo/Spring #osc20tk 13
コンテナのセキュリティ問題(2) コンテナに含まれる、ミドルウェア、ライブラリなどに 脆弱性が見つかる カーネル、コンテナサービス自体の脆弱性が見つかる ゼロデイ攻撃 2020-02-22 OSC
2020 Tokyo/Spring #osc20tk 14
コンテナのセキュリティ問題(2) →解決策 コンテナに含まれる、ミドルウェア、ライブラリなどに 脆弱性が見つかる カーネル、コンテナサービス自体の脆弱性が見つかる ゼロデイ攻撃
コンテナイメージの脆弱性スキャン、修正 実行中のコンテナのアップデート コンテナホストの脆弱性スキャン 2020-02-22 OSC 2020 Tokyo/Spring #osc20tk 15
コンテナのセキュリティ問題(3) マルウェアの被害 長期稼働時の意図しない動作 2020-02-22 OSC 2020 Tokyo/Spring #osc20tk
16
コンテナのセキュリティ問題(3) →解決策 マルウェアの被害 長期稼働時の意図しない動作 動作中のコンテナのランタイム制御 不要なプロセス実行の禁止 動作中にコピーされた実行形式の実行停止
コンテナ動作時間の制限 定期的なローリングアップデート 定期的なコンテナホストのアップデート 2020-02-22 OSC 2020 Tokyo/Spring #osc20tk 17
コンテナのセキュリティ問題(4) 1つのk8sコントローラで、関連しないサービスを 複数動作 2020-02-22 OSC 2020 Tokyo/Spring #osc20tk 18
コンテナのセキュリティ問題(4) →解決策 1つのk8sコントローラで、関連しないサービスを 複数動作 ノード間ネットワークは暗号化されていても、 個々のネットワークブリッジ通信は暗号化されていない サービス間でネットワークを分離するには
k8sコントローラを分離する 2020-02-22 OSC 2020 Tokyo/Spring #osc20tk 19
コンテナの脆弱性スキャン コンテナホストに対する脆弱性スキャン コンテナイメージに対する脆弱性スキャン コンテナのレイヤ単位でスキャンが可能 実行中にコンテナに対する脆弱性スキャン
パッケージベースでCVN/JVN情報を元にスキャンを実施 対応OSが限られる(Debian, alpine, RHEL系など) 言語の使用パッケージまで確認するツールもある 2020-02-22 OSC 2020 Tokyo/Spring #osc20tk 20
脆弱性スキャンツール(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
脆弱性スキャンツール(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
コンテナイメージの脆弱性スキャン スキャンにより脆弱性が見つかった場合 ベースイメージ、パッケージ、使用ライブラリの更新 イメージの再作成→脆弱性検査 新コンテナイメージのデプロイ
ローリングアップデート カナリアデプロイ ブルー/グリーンデプロイ 脆弱性は日々発見される 定期的に脆弱性スキャン実施する必要がある 2020-02-22 OSC 2020 Tokyo/Spring #osc20tk 23
ランタイム監視 静的スキャンだけでは、日々更新される脆弱性による ゼロデイ攻撃に対応できない ランタイム監視=実行中のコンテナの監視 ランタイム監視に求められること 実行中コンテナの脆弱性検知
実行中コンテナのファイルインジェクションの検知 コンテナ内の実行可能・不可能なファイルの設定 コンテナ間・コンテナ外への不正な通信の禁止 2020-02-22 OSC 2020 Tokyo/Spring #osc20tk 24
アプリケーションの脆弱性 アプリケーションの脆弱性 SQLインジェクション CSR/CSRF ファイルのインジェクション
コマンド実行 アプリケーション脆弱性の対応 アプリケーションで使用するライブラリは、最新のものを選択 脆弱性を意識したアプリケーション開発 ペネトレーションテストの実施 2020-02-22 OSC 2020 Tokyo/Spring #osc20tk 25
コンテナをセキュアに 運用するためには
セキュリティはプロセス コンテナホスト自体の脆弱性チェック 定期的なイメージ再作成 イメージ検査 テスト(アプリケーション、ペネトレーション、負荷など)
デプロイ 未知のマルウェア、インジェクションなどへの対応 コンテナの寿命を短くする ランタイム監視の実施 障害発生時のエスカレーション 2020-02-22 OSC 2020 Tokyo/Spring #osc20tk 27
DevSecOpsの実践 一貫した開発・セキュリティ・運用が必要 シフトレフト バグを運用でカバーすると高コスト バグを開発で出し切る
運用、セキュリティコストの削減 DevSecOpsの自動化 CI/CDの考え方の導入+セキュアな考え方 2020-02-22 OSC 2020 Tokyo/Spring #osc20tk 28
Development ベースOSの選定 言語、ライブラリ、パッケージの選定 セキュリティ基準に則った開発 アプリケーションの静的解析
ペネトレーションテスト 2020-02-22 OSC 2020 Tokyo/Spring #osc20tk 29
Security セキュリティ基準の策定 CIS HIPS NIST
PCI DSS DevとOpsに対するセキュリティ対策支援 開発のセキュリティ基準 コンテナセキュリティの方針決定 2020-02-22 OSC 2020 Tokyo/Spring #osc20tk 30
Operations イメージアップデート 定期的なデプロイ 定期的な脆弱性スキャン 障害監視
障害検知時のエスカレーション 2020-02-22 OSC 2020 Tokyo/Spring #osc20tk 31
CI/CDツールと 脆弱性スキャンの組み合わせ CI/CDツール Gitlab Jenkins Circle
CI Travis CI コンテナイメージ作成時後に静的脆弱性スキャン 2020-02-22 OSC 2020 Tokyo/Spring #osc20tk 32
ルーチンワークは自動化する CI/CDツールで出来ることは自動化する アプリケーション静的解析 コンテナイメージの静的脆弱性スキャン コンテナ群へのペネトレーションテスト
デプロイ リリース中のコンテナイメージに対する脆弱性スキャン Wazuhなど、脆弱性検査及び監視を行うツールもある 2020-02-22 OSC 2020 Tokyo/Spring #osc20tk 33
人間は、人間に出来ることだけ行う コード、テストの作成 レヴュー セキュリティ設計 リリースのOK/NG
インシデント発生時の対応 2020-02-22 OSC 2020 Tokyo/Spring #osc20tk 34
セキュリティよく分からない! という人向けのおまけ
セキュリティよくわからない 自分で学ぶ 時間的コストが高い 金で解決する セキュリティに強い人材を確保・育成する
セキュリティコンサルタントを雇う 商用のコンテナセキュリティツールを使う 2020-02-22 OSC 2020 Tokyo/Spring #osc20tk 36
商用コンテナセキュリティ製品(1) Aqua Cloudnaitive Security Platform (https://www.aquasec.com) イメージスキャン、ランタイムスキャン、監視、L3FW
日本販社あり NeuVector(https://neuvector.com/) イメージスキャン、ランタイムスキャン、監視、L7FW 日本販社あり 2020-02-22 OSC 2020 Tokyo/Spring #osc20tk 37
商用コンテナセキュリティ製品(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
最後に この資料は、コンテナのセキュリティを考える為のきっかけ オンプレミス・IaaSとコンテナのセキュリティには、 違う部分があります 自分で答えを見つけよう 2020-02-22 OSC
2020 Tokyo/Spring #osc20tk 39