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
サーバーのセキュリティ対策とコンテナのセキュリティ対策の違い/hibiyatech_diffe...
Search
emi
February 17, 2024
Technology
0
2.1k
サーバーのセキュリティ対策とコンテナのセキュリティ対策の違い/hibiyatech_differences-between-server-security-and-container-security
2024/02/16 Hibiya.Tech #3「どうする?コンテナセキュリティ」で発表した資料です。
https://classmethod.connpass.com/event/307459/
emi
February 17, 2024
Tweet
Share
More Decks by emi
See All by emi
Database イノベーショントークを振り返る/reinvent-2025-database-innovation-talk-recap
emiki
0
330
実体験:エンジニアの妊娠・出産と仕事/real-life-experience-pregnancy-childbirth-and-work-for-engineers
emiki
9
2k
AWS 環境で GitLab Self-managed を試してみた/aws-gitlab-self-managed
emiki
0
840
今から間に合う re:Invent 準備グッズと現地の地図、その他ラスベガスを周る際の Tips/reinvent-preparation-guide
emiki
2
1.3k
AWS DMS で SQL Server を移行してみた/aws-dms-sql-server-migration
emiki
0
450
RDS の負荷が高い場合に AWS で取りうる具体策 N 連発/a-series-of-specific-countermeasures-available-on-aws-when-rds-is-under-high-load
emiki
8
5.1k
Performance Insights 廃止から Database Insights 利用へ/transition-from-performance-insights-to-database-insights
emiki
0
1.6k
S3 Glacier のデータを Athena からクエリしようとしたらどうなるのか/try-to-query-s3-glacier-from-athena
emiki
0
470
robocopy の怖い話/scary-story-about-robocopy
emiki
0
640
Other Decks in Technology
See All in Technology
私たち準委任PdEは2つのプロダクトに挑戦する ~ソフトウェア、開発支援という”二重”のプロダクトエンジニアリングの実践~ / 20260212 Naoki Takahashi
shift_evolve
PRO
1
110
ブロックテーマでサイトをリニューアルした話 / 2026-01-31 Kansai WordPress Meetup
torounit
0
480
顧客の言葉を、そのまま信じない勇気
yamatai1212
1
360
フルカイテン株式会社 エンジニア向け採用資料
fullkaiten
0
10k
制約が導く迷わない設計 〜 信頼性と運用性を両立するマイナンバー管理システムの実践 〜
bwkw
3
1k
Bill One急成長の舞台裏 開発組織が直面した失敗と教訓
sansantech
PRO
2
390
茨城の思い出を振り返る ~CDKのセキュリティを添えて~ / 20260201 Mitsutoshi Matsuo
shift_evolve
PRO
1
370
AIエージェントに必要なのはデータではなく文脈だった/ai-agent-context-graph-mybest
jonnojun
1
220
30万人の同時アクセスに耐えたい!新サービスの盤石なリリースを支える負荷試験 / SRE Kaigi 2026
genda
4
1.3k
Context Engineeringの取り組み
nutslove
0
370
コミュニティが変えるキャリアの地平線:コロナ禍新卒入社のエンジニアがAWSコミュニティで見つけた成長の羅針盤
kentosuzuki
0
130
SREのプラクティスを用いた3領域同時 マネジメントへの挑戦 〜SRE・情シス・セキュリティを統合した チーム運営術〜
coconala_engineer
2
730
Featured
See All Featured
Six Lessons from altMBA
skipperchong
29
4.2k
Everyday Curiosity
cassininazir
0
130
Why You Should Never Use an ORM
jnunemaker
PRO
61
9.7k
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
150
Winning Ecommerce Organic Search in an AI Era - #searchnstuff2025
aleyda
1
1.9k
Un-Boring Meetings
codingconduct
0
200
Statistics for Hackers
jakevdp
799
230k
[SF Ruby Conf 2025] Rails X
palkan
1
760
Ethics towards AI in product and experience design
skipperchong
2
200
The Cult of Friendly URLs
andyhume
79
6.8k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
Making the Leap to Tech Lead
cromwellryan
135
9.7k
Transcript
サーバーのセキュリティ対策と コンテナのセキュリティ対策の違い 2/16(金) Hibiya.Tech #3 「どうする?コンテナセキュリティ」
2 目次 • はじめに • 仮想サーバーとコンテナの違い • 仮想サーバーの分離とコンテナの分離 • コンテナの分離の強化
• 「イメージスキャンが大事」とは • 振り返り
3 目次 • はじめに • 仮想サーバーとコンテナの違い • 仮想サーバーの分離とコンテナの分離 • コンテナの分離の強化
• 「イメージスキャンが大事」とは • 振り返り
はじめに
5 はじめに • 私はコンテナ初心者です。経験値が低いです。 • 間違っている箇所や「それはどうかな」と思うところがあれば、 マサカリ 具体的に優しく教えてください。 強 い
人 わ た し どうやってコンテナ 作るの? docker run コンテナ名!
6 目次 • はじめに • 仮想サーバーとコンテナの違い • 仮想サーバーの分離とコンテナの分離 • コンテナの分離の強化
• 「イメージスキャンが大事」とは • 振り返り
仮想サーバーとコンテナの違い
8 仮想サーバーとコンテナの違い ハードウェア ホスト OS コンテナ管理ソフトウェア(Docker など) ミドルウェア/ライブラリ アプリケーション ミドルウェア/ライブラリ
アプリケーション コンテナ ハードウェア ホスト OS ハイパーバイザー ゲスト OS ミドルウェア/ライブラリ アプリケーション ゲスト OS ミドルウェア/ライブラリ アプリケーション 仮想サーバー 仮想サーバー 仮想サーバー コンテナ コンテナ
9 仮想サーバーとコンテナの違い namespace 特定のプロセスを分離 cgroup CPU、メモリなど 物理的リソースの 制限・割り当て Linux コンテナは、Linux
カーネルの機能を利用して プロセスの実行空間を分離したもの ハードウェア ホスト OS コンテナ管理ソフトウェア(Docker など) ミドルウェア/ライブラリ アプリケーション ミドルウェア/ライブラリ アプリケーション コンテナ コンテナ
10 仮想サーバーとコンテナの違い Linux OS namespace 特定のプロセスを分離 cgroup CPU、メモリなど 物理的リソースの 制限・割り当て
Linux コンテナは、Linux カーネルの機能を利用して プロセスの実行空間を分離したもの CPU メモリ ディスクI/O プロセス1 プロセス2 : プロセス1 プロセス2 : cgroup リソースを分離 namespace プロセスを分離 コンテナ (実態はプロセス)
11 仮想サーバーとコンテナの違い コンテナの一番の特徴 ↓ カーネルを共有している
12 仮想サーバーとコンテナの違い • Ubuntu ベースのコンテナでシェルを起動 • 1000 秒 sleep •
Ctr + Z でプロセスを一時停止 • bg %1 でバックグラウンド処理にする • プロセスの表示 ※この sleep プロセスはコンテナ内のプロセス
13 仮想サーバーとコンテナの違い コンテナ内のプロセス 別のセッションで ホスト OS のプロセスを表示 • プロセス ID
はコンテナ内とホスト OS で異なっているが、 どちらも同じプロセスを表す • コンテナ内のプロセスがホスト OS から見える
14 仮想サーバーとコンテナの違い ホスト OS にアクセスした攻撃者は そのホスト OS で実行されている すべてのコンテナを参照できる
15 目次 • はじめに • 仮想サーバーとコンテナの違い • 仮想サーバーの分離とコンテナの分離 • コンテナの分離の強化
• 「イメージスキャンが大事」とは • 振り返り
仮想サーバーの分離とコンテナの分離
17 仮想サーバーの分離とコンテナの分離 • セキュリティ境界≒分離 • セキュリティ境界 • システム間、リソース間を移動するのに 異なるパーミッションが必要になる •
攻撃者とターゲットの間にセキュリティ境界があればあるほど 侵入が難しくなる
18 仮想サーバーの分離とコンテナの分離 ハードウェア ホスト OS コンテナ管理ソフトウェア(Docker など) ミドルウェア/ライブラリ アプリケーション ミドルウェア/ライブラリ
アプリケーション ハードウェア ホスト OS ハイパーバイザー ゲスト OS ミドルウェア/ライブラリ アプリケーション ゲスト OS ミドルウェア/ライブラリ アプリケーション 仮想サーバー 仮想サーバー コンテナ コンテナ Docker は内部的にカーネルの機能である namespace や cgroup を活用して コンテナ化されたアプリケーションの プロセスの実行空間を隔離している コンテナ 仮想サーバー
19 仮想サーバーの分離とコンテナの分離 仮想サーバー 仮想サーバー コンテナ コンテナ コンテナ 仮想サーバー カーネル ハイパーバイザー
ミドルウェア/ライブラリ アプリケーション ミドルウェア/ライブラリ アプリケーション ゲスト OS ミドルウェア/ライブラリ アプリケーション ゲスト OS ミドルウェア/ライブラリ アプリケーション が環境を分離 が環境を分離
20 仮想サーバーの分離とコンテナの分離 ハイパーバイザーはカーネルより 大きな分離性?
21 仮想サーバーの分離とコンテナの分離 カーネルについて • プロセスを分離するのはカーネルの役割 • カーネルにバグがあるとそこから攻撃される恐れ • カーネルは長い期間修正され続け、極めて大規模かつ複雑 •
Linux カーネルのコード数は 2,000万行以上 • カーネルではユーザー空間のプロセスはある程度お互いに見える • IPC(Inter Process Communication、プロセス間通信)などで異なるプロセ ス間でメモリ共有もできる • 予期しない・意図しない状況でアクセスを許す欠陥の可能性があるため、分離 が弱い
22 仮想サーバーの分離とコンテナの分離 Linux カーネルのコード数 https://www.reddit.com/r/linux/comments/9uxwli/lines_of_code_in_the_linux_kernel/
23 仮想サーバーの分離とコンテナの分離 ハイパーバイザーについて • ある仮想サーバーのプロセスは他の仮想サーバーから見ることはできない • 仮想サーバー同士でメモリを共有するような仕組みはない • ハイパーバイザーの仕事はカーネルと比較し単純 •
Xen ハイパーバイザーのコードは 5万行程度
24 仮想サーバーの分離とコンテナの分離 Xen 4.12 shrinks code, beefs up security, rethinks
x86 support https://www.theregister.com/2019/04/04/xen_412_release/ : : : :
25 仮想サーバーの分離とコンテナの分離 • コードが複雑 • バグの検出が難しい • 理解の難易度が高い • 保守の困難さ
• 隠れた依存関係が悪用される • etc… • コードが単純 • バグの特定が容易 • 理解しやすい • 保守が簡単 • 攻撃対象が小さくなる • etc…
26 仮想サーバーの分離とコンテナの分離 • コードが複雑 • バグの検出が難しい • 理解の難易度が高い • 保守の困難さ
• 隠れた依存関係が悪用される • etc… • コードが単純 • バグの特定が容易 • 理解しやすい • 保守が簡単 • 攻撃対象が小さくなる • etc… カーネル ハイパーバイザー
27 目次 • はじめに • 仮想サーバーとコンテナの違い • 仮想サーバーの分離とコンテナの分離 • コンテナの分離の強化
• 「イメージスキャンが大事」とは • 振り返り
コンテナの分離の強化
29 コンテナの分離の強化 コンテナ ワークロード 1 コンテナ ワークロード 2 互いに干渉しあわないようにするには?
30 仮想サーバーの分離とコンテナの分離 コンテナのパーミッションを制限する機能 • seccomp(Secure Computing Mode) • システムコールを制限することでセキュリテイ強化 •
AppArmor(Application Armor) • ファイルへのアクセス許可を制限することでセキュリティ強化 • プログラムごとにセキュリティプロファイルを作成する
31 仮想サーバーの分離とコンテナの分離 コンテナの Sandbox 化機能 • gVisor • Googleが開発 •
独自の「ゲストカーネル」を使用して コンテナをサンドボックス化する • Sentry という独自コンポーネントで システムコールを受け取る • ファイルアクセスに関する システムコールをおこなう場合は Goferというコンポーネントが仲介する Linux OS ホストカーネル アプリケーション Sentry Gofer システムコール あたかもカーネルのよう コンテナ
32 仮想サーバーの分離とコンテナの分離 コンテナの Sandbox 化機能 • Kata container • コンテナを別の仮想サーバーで
起動する • アプリケーションコードが実行される 別のターゲットホストとの間に プロキシを作成 • 仮想サーバーが起動するまで 時間がかかる ハイパーバイザー 仮想サーバー カーネル エージェント コンテナ Proxy
33 目次 • はじめに • 仮想サーバーとコンテナの違い • 仮想サーバーの分離とコンテナの分離 • コンテナの分離の強化
• 「イメージスキャンが大事」とは • 振り返り
「イメージスキャンが大事」とは
35 「イメージスキャンが大事」とは コンテナのセキュリティと言えば イメージスキャン!
36 「イメージスキャンが大事」とは Dockerfile Docker Image アプリの 設定とか書く build このイメージをもとに コンテナができる
37 「イメージスキャンが大事」とは Docker Image アプリケーションを動かすために 複数のパッケージを梱包している ベースイメージ ランタイム環境 依存ライブラリ 設定ファイル
38 「イメージスキャンが大事」とは • コンテナは • 軽量で • いつでも • どこでも
• 素早く • 同じものが作れる Docker Image コンテナ コンテナ コンテナ コンテナ コンテナ
39 「イメージスキャンが大事」とは • コンテナを起動してから追加でパッケージをインストールしたり コンテナごとにアップデートすると… コンテナ コンテナ コンテナ コンテナ コンテナ
パッケージ 追加しよう これ何で 入ってるんだっけ 削除しちゃえ 設定ファイル 変えちゃおう ずっとアップデート しないで 使い続ける 設定ファイル 変えちゃおう
40 「イメージスキャンが大事」とは • コンテナを起動してから追加でパッケージをインストールしたり コンテナごとにアップデートすると… コンテナ コンテナ コンテナ コンテナ コンテナ
パッケージ 追加しよう これ何で 入ってるんだっけ 削除しちゃえ 設定ファイル 変えちゃおう ずっとアップデート しないで 使い続ける 設定ファイル 変えちゃおう 全部のコンテナがちゃんとアップデートされているか ウイルスなどに感染していないか 脆弱性が放置されていないか調べるのが大変!!
41 「イメージスキャンが大事」とは • コンテナはイミュータブル(不変)である状態が推奨 • 追加やアップデートが必要な場合はビルドし直す コンテナ コンテナ コンテナ コンテナ
コンテナ パッケージ 追加しよう これ何で 入ってるんだっけ 削除しちゃえ 設定ファイル 変えちゃおう ずっとアップデート しないで 使い続ける 設定ファイル 変えちゃおう
42 「イメージスキャンが大事」とは Docker Image コンテナ コンテナ コンテナ コンテナ コンテナ もとになるイメージを
スキャンして 安全な状態に保っておけば 全部調査しなくても セキュアな状態を担保できる! (バージョンも統一できる)
43 「イメージスキャンが大事」とは • コンテナイメージのスキャンツールは OSS から商用製品まで様々 • Trivy • Clair
• Anchore • JFrog • Palo Alto • etc… Docker Image
44 「イメージスキャンが大事」とは 仮想サーバーの場合も?
45 「イメージスキャンが大事」とは • 例えば EC2 だと、EC2 Image Builder で ゴールデンイメージを管理することがある
• 同じ考え方でイメージスキャン可能 • スキャンのためのツールもいくつか存在 • [アップデート] EC2 Image builderにてイメージパイプライン実行時に脆弱性スキャンが可能にな りました。 | DevelopersIO • https://dev.classmethod.jp/articles/update-ec2-image-builder-inspector/ • TrivyでAMIやEBSスナップショットをセキュリティスキャンできるようになりました #reinvent | DevelopersIO • https://dev.classmethod.jp/articles/trivy-now-scans-amazon-machine-images-amis/ AMI
46 目次 • はじめに • 仮想サーバーとコンテナの違い • 仮想サーバーの分離とコンテナの分離 • コンテナの分離の強化
• 「イメージスキャンが大事」とは • 振り返り
振り返り
48 振り返り • 仮想サーバーと比較したコンテナの一番の特徴は「カーネルを共有 している」ということ • ホスト OS からすべてのコンテナのプロセスを参照できる •
カーネルにバグがあるとそこから攻撃される恐れ • 予期しない・意図しない状況でアクセスを許す欠陥の可能性がある • コンテナの分離を強化するための機能や技術がある • コンテナはイミュータブル、かつイメージスキャンを定期的に行う ことで効率的にセキュリティを担保できる • 仮想サーバーもイメージスキャンできる
49 参考 • ランタイムセキュリティ - Amazon Elastic Container Service •
https://docs.aws.amazon.com/ja_jp/AmazonECS/latest/bestpracticesguide/security-runtime.html • AWS Black Belt Online Seminar • コンテナセキュリティ入⾨ Part 1 • https://pages.awscloud.com/rs/112-TZM-766/images/202110_AWS_Black_Belt_AWS_CON231_intro_container_security_part1.pdf • コンテナセキュリティ入⾨ Part 2 • https://pages.awscloud.com/rs/112-TZM-766/images/202110_AWS_Black_Belt_AWS_CON232_intro_container_security_part2.pdf • コンテナセキュリティ入⾨ Part 3 • https://pages.awscloud.com/rs/112-TZM-766/images/202110_AWS_Black_Belt_AWS_CON233_intro_container_security_part3.pdf • Docker一強の終焉にあたり、押さえるべきContainer事情 • https://zenn.dev/ttnt_1013/articles/f36e251a0cd24e • What is gVisor? - gVisor • https://gvisor.dev/docs/ • Kata Containers - Open Source Container Runtime Software | Kata Containers • https://katacontainers.io/ • コンテナセキュリティ コンテナ化されたアプリケーションを保護する要素技術 • https://amzn.asia/d/aL0lGIN
50 ありがとうございました! ありがとうございました!
51