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
950
コンテナのセキュリティについて考えよう 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
480
コンテナ環境をセキュアに運用する方法 #osc20on
smiyaza
0
930
コンテナのセキュリティについて考えよう osc2019tk
smiyaza
1
140
コンテナのセキュリティについて考えよう
smiyaza
0
810
平成元年度に卒業した高専生が、令和元年の高専生に伝えたいこと
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
The Rise of LLMOps
asei
7
1.7k
ISUCONに強くなるかもしれない日々の過ごしかた/Findy ISUCON 2024-11-14
fujiwara3
8
870
100 名超が参加した日経グループ横断の競技型 AWS 学習イベント「Nikkei Group AWS GameDay」の紹介/mediajaws202411
nikkei_engineer_recruiting
1
170
障害対応指揮の意思決定と情報共有における価値観 / Waroom Meetup #2
arthur1
5
480
なぜ今 AI Agent なのか _近藤憲児
kenjikondobai
4
1.4k
AI前提のサービス運用ってなんだろう?
ryuichi1208
8
1.4k
iOS/Androidで同じUI体験をネ イティブで作成する際に気をつ けたい落とし穴
fumiyasac0921
1
110
初心者向けAWS Securityの勉強会mini Security-JAWSを9ヶ月ぐらい実施してきての近況
cmusudakeisuke
0
130
Security-JAWS【第35回】勉強会クラウドにおけるマルウェアやコンテンツ改ざんへの対策
4su_para
0
180
エンジニア人生の拡張性を高める 「探索型キャリア設計」の提案
tenshoku_draft
1
130
個人でもIAM Identity Centerを使おう!(アクセス管理編)
ryder472
4
230
Amazon CloudWatch Network Monitor のススメ
yuki_ink
1
210
Featured
See All Featured
Learning to Love Humans: Emotional Interface Design
aarron
273
40k
10 Git Anti Patterns You Should be Aware of
lemiorhan
655
59k
Building an army of robots
kneath
302
43k
Building Better People: How to give real-time feedback that sticks.
wjessup
364
19k
Adopting Sorbet at Scale
ufuk
73
9.1k
Ruby is Unlike a Banana
tanoku
97
11k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
6
420
VelocityConf: Rendering Performance Case Studies
addyosmani
325
24k
Build your cross-platform service in a week with App Engine
jlugia
229
18k
The World Runs on Bad Software
bkeepers
PRO
65
11k
The Cult of Friendly URLs
andyhume
78
6k
Embracing the Ebb and Flow
colly
84
4.5k
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