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
コンテナのセキュリティについて考えよう
Search
Satoru MIYAZAKI
October 10, 2019
Technology
0
810
コンテナのセキュリティについて考えよう
コンテナ実用化が進む中、セキュアに運用することは忘れ去られがちです。
この資料は、コンテナをセキュアに運用するときに考慮する事項を説明しています。コンテナセキュリティのキッカケとなれば幸いです。
Satoru MIYAZAKI
October 10, 2019
Tweet
Share
More Decks by Satoru MIYAZAKI
See All by Satoru MIYAZAKI
どこのご家庭にもあるOpenSolarisを、ZFSで有効活用
smiyaza
0
170
How to secure container environment
smiyaza
0
480
コンテナ環境をセキュアに運用する方法 #osc20on
smiyaza
0
930
コンテナのセキュリティについて考えよう osc2020tk
smiyaza
6
950
コンテナのセキュリティについて考えよう osc2019tk
smiyaza
1
140
平成元年度に卒業した高専生が、令和元年の高専生に伝えたいこと
smiyaza
2
230
コンテナセキュリティってどうなってるの?
smiyaza
2
590
如何にPHP7.3.3のDockerイメージを作るか
smiyaza
0
790
KUSANAGI RoDの紹介
smiyaza
0
940
Other Decks in Technology
See All in Technology
第1回 国土交通省 データコンペ参加者向け勉強会③- Snowflake x estie編 -
estie
0
130
飲食店データの分析事例とそれを支えるデータ基盤
kimujun
0
170
Lambda10周年!Lambdaは何をもたらしたか
smt7174
2
110
rootlessコンテナのすゝめ - 研究室サーバーでもできる安全なコンテナ管理
kitsuya0828
3
390
VideoMamba: State Space Model for Efficient Video Understanding
chou500
0
190
100 名超が参加した日経グループ横断の競技型 AWS 学習イベント「Nikkei Group AWS GameDay」の紹介/mediajaws202411
nikkei_engineer_recruiting
1
170
なぜ今 AI Agent なのか _近藤憲児
kenjikondobai
4
1.4k
アジャイルでの品質の進化 Agile in Motion vol.1/20241118 Hiroyuki Sato
shift_evolve
0
170
Lambdaと地方とコミュニティ
miu_crescent
2
370
FlutterアプリにおけるSLI/SLOを用いたユーザー体験の可視化と計測基盤構築
ostk0069
0
100
ノーコードデータ分析ツールで体験する時系列データ分析超入門
negi111111
0
420
マルチプロダクトな開発組織で 「開発生産性」に向き合うために試みたこと / Improving Multi-Product Dev Productivity
sugamasao
1
310
Featured
See All Featured
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
27
840
Done Done
chrislema
181
16k
Docker and Python
trallard
40
3.1k
Statistics for Hackers
jakevdp
796
220k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
0
110
Producing Creativity
orderedlist
PRO
341
39k
KATA
mclloyd
29
14k
Rails Girls Zürich Keynote
gr2m
94
13k
Keith and Marios Guide to Fast Websites
keithpitt
409
22k
Large-scale JavaScript Application Architecture
addyosmani
510
110k
What’s in a name? Adding method to the madness
productmarketing
PRO
22
3.1k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
169
50k
Transcript
myzkstr.com みやざきさとる コンテナのセキュリティ について考えよう
myzkstr.com みやざきさとる 宮﨑悟
[email protected]
@s_miyaza satoru.miyazaki.31 好きなOS:Solaris 好きなファイルシステム:ZFS
好きな仮想化:Solaris Zone フリーランスのエンジニア 北海道函館市からリモートワーク 主な仕事 某WordPress仮想マシン コンテナセキュリティ製品評価 技術コラム掲載
アジェンダ 今日話すこと: コンテナの現状 コンテナセキュリティとは コンテナをセキュアに運用するためには 今日話さないこと:
コンテナセキュリティ製品の詳細 2019-10-10 OSC 0219 Enterprise #osc19ep 3
本資料でのコンテナの定義 本資料では、コンテナ=アプリケーションコンテナと する アプリケーションコンテナ=Docker(もしくはDocker 互換のアプリケーションコンテナ)を想定 コンテナのオーケストレーションサービスとして kubernetes(以下k8s)とDocker
Swarmを想定 2019-10-10 OSC 0219 Enterprise #osc19ep 4
コンテナの現状
コンテナとは Dockerは、cgroupとLinux User Namespaceでリソース (プロセス、ネットワーク、ボリューム)を分離 恒久的なディスク領域、仮想ネットワーク、 仮想ブリッジなどはコンテナデーモンが作成
コンテナはカーネルを持たない コンテナ内の処理はsystem callを使用し、 コンテナホスト上のカーネルで処理 コンテナホスト OS/カーネル コンテナ プロセス コンテナ プロセス system call system call vol1 veth1 veth2 vol2 コンテナデーモン ブリッジ 2019-10-10 OSC 0219 Enterprise #osc19ep 6
コンテナ上のアプリケーション コンテナホスト OS/カーネル コンテナデーモン 特権ユーザ アプリケーション 非特権ユーザ アプリケーション 非特権ユーザ コンテナ1
コンテナ2 1コンテナで1サービスのみ動作することを推奨 コンテナには、アプリケーション、ライブラリ、 アプリケーションに必要なファイルのみを配置する ことを推奨 コンテナ内のプロセスは、非特権ユーザ (rootユーザ以外)で動作することを推奨 ホストからはコンテナのプロセスを見ることが可能 コンテナから、コンテナホストや他コンテナの プロセスを見ることは不可 2019-10-10 OSC 0219 Enterprise #osc19ep 7
コンテナ上のネットワーク コンテナとコンテナホストのネットワークは、仮想ブリッジ通信 Docker Swarmでは、ノード間通信をTLSで暗号化 k8sでは、幾つかのCNI Networkプロバイダを 使用可能
k8sでは、VxLANやTLSによって ホスト間の通信を暗号化可能 外部からは必要なポートのみを ポートフォワードによって接続 ホスト1 node間 接続 TLS VxLAN ホスト2 LBサービス サービス サービス サービス サービス サービス サービス 2019-10-10 OSC 0219 Enterprise #osc19ep 8
コンテナイメージ コンテナはイメージという形で配布される イメージはレイヤ構造で構成される Docker Official Imageなどの安全なベースイメージを 元に構成可能
必要なミドルウェア、アプリケーションを 積み重ねてイメージを作成 Container Application Layer Middleware Layer Base OS Layer 2019-10-10 OSC 0219 Enterprise #osc19ep 9
コンテナセキュリティとは
コンテナはセキュア? コンテナを非特権ユーザで動作させる =コンテナホスト上で非特権ユーザでプロセスが動作する コンテナ内で1アプリケーションのみ動作させ、 アプリケーションに必要なファイルのみ配置する =コンテナ内で余計なプロセスを動作させない 複数のコンテナやコンテナホスト間をつなぐ
ネットワークは、分離もしくは暗号化されている 外部からの通信は必要なポートのみ接続される 2019-10-10 OSC 0219 Enterprise #osc19ep 11
コンテナのセキュリティ問題(1) ホスト側のカーネルを使用しても、 アプリケーション側でカーネルバグを踏むと ホスト上のすべてのコンテナが停止 2019-10-10 OSC 0219 Enterprise #osc19ep
12
コンテナのセキュリティ問題(1) →解決策 ホスト側のカーネルを使用しても、 アプリケーション側でカーネルバグを踏むと ホスト上のすべてのコンテナが停止 軽量VM上でコンテナを動作させる kata containerなどの実装がある
カーネルやコンテナサービスの脆弱性を スキャンする 2019-10-10 OSC 0219 Enterprise #osc19ep 13
コンテナのセキュリティ問題(2) コンテナに含まれる、ミドルウェア、ライブラリなどに 脆弱性が見つかる カーネル、コンテナサービス自体の脆弱性が見つかる ゼロデイ攻撃 2019-10-10 OSC
0219 Enterprise #osc19ep 14
コンテナのセキュリティ問題(2) →解決策 コンテナに含まれる、ミドルウェア、ライブラリなどに 脆弱性が見つかる カーネル、コンテナサービス自体の脆弱性が見つかる ゼロデイ攻撃
コンテナイメージの脆弱性スキャン、修正 実行中のコンテナのアップデート コンテナホストの脆弱性スキャン 2019-10-10 OSC 0219 Enterprise #osc19ep 15
コンテナのセキュリティ問題(3) マルウェアの被害 長期稼働時の意図しない動作 2019-10-10 OSC 0219 Enterprise #osc19ep
16
コンテナのセキュリティ問題(3) →解決策 マルウェアの被害 長期稼働時の意図しない動作 動作中のコンテナのランタイム制御 不要なプロセス実行の禁止 動作中にコピーされた実行形式の実行停止
コンテナ動作時間の制限 定期的なローリングアップデート 定期的なコンテナホストのアップデート 2019-10-10 OSC 0219 Enterprise #osc19ep 17
コンテナのセキュリティ問題(4) 1つのk8sコントローラで、関連しないサービスを 複数動作 2019-10-10 OSC 0219 Enterprise #osc19ep 18
コンテナのセキュリティ問題(4) →解決策 1つのk8sコントローラで、関連しないサービスを 複数動作 ノード間ネットワークは暗号化されていても、 個々のネットワークブリッジ通信は暗号化されていない サービス間でネットワークを分離するには
k8sコントローラを分離する 2019-10-10 OSC 0219 Enterprise #osc19ep 19
コンテナの脆弱性スキャン コンテナホストに対する脆弱性スキャン コンテナイメージに対する脆弱性スキャン コンテナのレイヤ単位でスキャンが可能 実行中にコンテナに対する脆弱性スキャン
パッケージベースでCVN/JVN情報を元にスキャンを実施 対応OSが限られる(Debian, alpine, RHEL系など) 言語の使用パッケージまで確認するツールもある 2019-10-10 OSC 0219 Enterprise #osc19ep 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プロジェクトにジョイン 2019-10-10 OSC 0219 Enterprise #osc19ep 21
脆弱性スキャンツール(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 0219 Enterprise #osc19ep 22
コンテナイメージの脆弱性スキャン スキャンにより脆弱性が見つかった場合 ベースイメージ、パッケージ、使用ライブラリの更新 イメージの再作成→脆弱性検査 新コンテナイメージのデプロイ
ローリングアップデート カナリアデプロイ ブルー/グリーンデプロイ 脆弱性は日々発見される 定期的に脆弱性スキャン実施する必要がある 2019-10-10 OSC 0219 Enterprise #osc19ep 23
ランタイム監視 静的スキャンだけでは、日々更新される脆弱性による ゼロデイ攻撃に対応できない ランタイム監視=実行中のコンテナの監視 ランタイム監視に求められること 実行中コンテナの脆弱性検知
実行中コンテナのファイルインジェクションの検知 コンテナ内の実行可能・不可能なファイルの設定 コンテナ間・コンテナ外への不正な通信の禁止 2019-10-10 OSC 0219 Enterprise #osc19ep 24
アプリケーションの脆弱性 アプリケーションの脆弱性 SQLインジェクション CSR/CSRF ファイルのインジェクション
コマンド実行 アプリケーション脆弱性の対応 アプリケーションで使用するライブラリは、最新のものを選択 脆弱性を意識したアプリケーション開発 ペネトレーションテストの実施 2019-10-10 OSC 0219 Enterprise #osc19ep 25
コンテナをセキュアに 運用するためには
セキュリティはプロセス コンテナホスト自体の脆弱性チェック 定期的なイメージ再作成 イメージ検査 テスト(アプリケーション、ペネトレーション、負荷など)
デプロイ 未知のマルウェア、インジェクションなどへの対応 コンテナの寿命を短くする ランタイム監視の実施 障害発生時のエスカレーション 2019-10-10 OSC 0219 Enterprise #osc19ep 27
DevSecOpsの実践 一貫した開発・セキュリティ・運用が必要 シフトレフト バグを運用でカバーすると高コスト バグを開発で出し切る
運用、セキュリティコストの削減 DevSecOpsの自動化 CI/CDの考え方の導入+セキュアな考え方 2019-10-10 OSC 0219 Enterprise #osc19ep 28
Development ベースOSの選定 言語、ライブラリ、パッケージの選定 セキュリティ基準に則った開発 アプリケーションの静的解析
ペネトレーションテスト 2019-10-10 OSC 0219 Enterprise #osc19ep 29
Security セキュリティ基準の策定 CIS HIPS NIST
PCI DSS DevとOpsに対するセキュリティ対策支援 開発のセキュリティ基準 コンテナセキュリティの方針決定 2019-10-10 OSC 0219 Enterprise #osc19ep 30
Operations イメージアップデート 定期的なデプロイ 定期的な脆弱性スキャン 障害監視
障害検知時のエスカレーション 2019-10-10 OSC 0219 Enterprise #osc19ep 31
CI/CDツールと 脆弱性スキャンの組み合わせ CI/CDツール Gitlab Jenkins Circle
CI Travis CI コンテナイメージ作成時後に静的脆弱性スキャン 2019-10-10 OSC 0219 Enterprise #osc19ep 32
ルーチンワークは自動化する CI/CDツールで出来ることは自動化する アプリケーション静的解析 コンテナイメージの静的脆弱性スキャン コンテナ群へのペネトレーションテスト
デプロイ リリース中のコンテナイメージに対する脆弱性スキャン Wazuhなど、脆弱性検査及び監視を行うツールもある 2019-10-10 OSC 0219 Enterprise #osc19ep 33
人間は、人間に出来ることだけ行う コード、テストの作成 レヴュー セキュリティ設計 リリースのOK/NG
インシデント発生時の対応 2019-10-10 OSC 0219 Enterprise #osc19ep 34
セキュリティよく分からない! という人向けのおまけ
セキュリティよくわからない 自分で学ぶ 時間的コストが高い 金で解決する セキュリティに強い人材を確保・育成する
セキュリティコンサルタントを雇う 商用のコンテナセキュリティツールを使う 2019-10-10 OSC 0219 Enterprise #osc19ep 36
商用コンテナセキュリティ製品(1) Aqua Cloudnaitive Security Platform (https://www.aquasec.com) イメージスキャン、ランタイムスキャン、監視、L3FW
日本販社あり NeuVector(https://neuvector.com/) イメージスキャン、ランタイムスキャン、監視、L7FW 日本販社あり 2019-10-10 OSC 0219 Enterprise #osc19ep 37
商用コンテナセキュリティ製品(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 0219 Enterprise #osc19ep 38
最後に この資料は、コンテナのセキュリティを考える為のきっかけ オンプレミス・IaaSとコンテナのセキュリティには、 違う部分があります 自分で答えを見つけよう 2019-10-10 OSC
0219 Enterprise #osc19ep 39