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
160
How to secure container environment
smiyaza
0
480
コンテナ環境をセキュアに運用する方法 #osc20on
smiyaza
0
910
コンテナのセキュリティについて考えよう osc2020tk
smiyaza
6
930
コンテナのセキュリティについて考えよう osc2019tk
smiyaza
1
140
平成元年度に卒業した高専生が、令和元年の高専生に伝えたいこと
smiyaza
2
220
コンテナセキュリティってどうなってるの?
smiyaza
2
580
如何にPHP7.3.3のDockerイメージを作るか
smiyaza
0
760
KUSANAGI RoDの紹介
smiyaza
0
900
Other Decks in Technology
See All in Technology
Segment Anything Model 2
tenten0727
3
680
なぜクラウドサービスで Web コンソールを提供するのか
shuta13
4
2k
不動産売買取引におけるAIの可能性とプロダクトでのAI活用
zabio3
0
260
アプリをリリースできる状態に保ったまま 段階的にリファクタリングするための 戦略と戦術 / Strategies and tactics for incremental refactoring
yanzm
6
1.3k
「家族アルバム みてね」における運用管理・ オブザーバビリティの全貌 / Overview of Operation Management and Observability in FamilyAlbum
isaoshimizu
4
160
疎通2024
sadnessojisan
5
1k
Jetpack Compose Modifier 徹底解説 / Jetpack Compose Modifier
wiroha
0
180
やってやろうじゃないかメカアジャイル! / Let's do it, mechanical agile!
psj59129
1
610
Envoy External AuthZとgRPC Extensionを利用した「頑張らない」Microservices認証認可基盤
andoshin11
0
240
Agile in Automotive Industry, puzzles and lights.
hiranabe
3
1.3k
サーバレスでモバイルアプリ開発! NTTコム「ビジネスdアプリ」のアーキテクチャ / The architecture of business d app
nttcom
12
240
効果的なオンコール対応と障害対応
ryuichi1208
5
2.9k
Featured
See All Featured
The Cost Of JavaScript in 2023
addyosmani
42
5.6k
Designing for humans not robots
tammielis
248
25k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
89
16k
For a Future-Friendly Web
brad_frost
174
9.3k
GraphQLの誤解/rethinking-graphql
sonatard
65
9.8k
Rails Girls Zürich Keynote
gr2m
93
13k
Faster Mobile Websites
deanohume
304
30k
It's Worth the Effort
3n
182
27k
Become a Pro
speakerdeck
PRO
22
4.9k
YesSQL, Process and Tooling at Scale
rocio
167
14k
The Invisible Side of Design
smashingmag
295
50k
How To Stay Up To Date on Web Technology
chriscoyier
786
250k
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