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
800
KUSANAGI RoDの紹介
smiyaza
0
950
Other Decks in Technology
See All in Technology
Turing × atmaCup #18 - 1st Place Solution
hakubishin3
0
470
新機能VPCリソースエンドポイント機能検証から得られた考察
duelist2020jp
0
220
ブラックフライデーで購入したPixel9で、Gemini Nanoを動かしてみた
marchin1989
1
520
PHPからGoへのマイグレーション for DMMアフィリエイト
yabakokobayashi
1
170
Wvlet: A New Flow-Style Query Language For Functional Data Modeling and Interactive Data Analysis - Trino Summit 2024
xerial
1
110
kargoの魅力について伝える
magisystem0408
0
200
Snowflake女子会#3 Snowpipeの良さを5分で語るよ
lana2548
0
230
統計データで2024年の クラウド・インフラ動向を眺める
ysknsid25
2
840
C++26 エラー性動作
faithandbrave
2
710
開発生産性向上! 育成を「改善」と捉えるエンジニア育成戦略
shoota
1
290
宇宙ベンチャーにおける最近の情シス取り組みについて
axelmizu
0
110
サービスでLLMを採用したばっかりに振り回され続けたこの一年のあれやこれや
segavvy
2
390
Featured
See All Featured
Fireside Chat
paigeccino
34
3.1k
StorybookのUI Testing Handbookを読んだ
zakiyama
27
5.3k
Build your cross-platform service in a week with App Engine
jlugia
229
18k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
169
50k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
159
15k
Practical Orchestrator
shlominoach
186
10k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
229
52k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
95
17k
Building Flexible Design Systems
yeseniaperezcruz
327
38k
How to train your dragon (web standard)
notwaldorf
88
5.7k
Learning to Love Humans: Emotional Interface Design
aarron
273
40k
Into the Great Unknown - MozCon
thekraken
33
1.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