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
1.8k
サーバーのセキュリティ対策とコンテナのセキュリティ対策の違い/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
データの民主化を目指す Q in QuickSight トピックの使い方/q-in-quicksight-topics-for-democratising-data
emiki
2
260
Windows Server に FSx for NetApp ONTAP を iSCSI 接続してみた/fsx-for-netapp-ontap-iscsi-connection-to-windows-server
emiki
0
340
データベースの負荷を紐解く/untangle-the-database-load
emiki
2
650
2025/1/29 BigData-JAWS 勉強会 #28 (re:Invent 2024 re:Cap)/new-feature-preview-q-in-quicksight-scenarios-tried-and-tested
emiki
0
450
第27回クラウド女子会 ~re:Invent 振り返りLT会~ 私の周辺で反響のあった re:Invent 2024 アップデートつれづれ/reinvent-2024-update-reverberated-around-me
emiki
1
720
DynamoDB でスロットリングが発生したとき/when_throttling_occurs_in_dynamodb_short
emiki
0
1k
DynamoDB でスロットリングが発生したとき_大盛りver/when_throttling_occurs_in_dynamodb_long
emiki
1
1.4k
AWS ログ解析のオデッセイ~システムの息遣いを読み解く冒険~/aws-log-analysis-odyssey-deciphering-the-breathing-of-systems
emiki
2
1.6k
何を使って可視化する?AWSでのログ分析/What-do-you-use-to-visualise-it-log-analysis-in-AWS
emiki
2
2.2k
Other Decks in Technology
See All in Technology
生成AIによるCloud Native基盤構築の可能性と実践的ガードレールの敷設について
nwiizo
6
640
Dynamic Reteaming And Self Organization
miholovesq
3
480
【Λ(らむだ)】最近のアプデ情報 / RPALT20250422
lambda
0
100
プロダクト開発におけるAI時代の開発生産性
shnjtk
2
240
Classmethod AI Talks(CATs) #21 司会進行スライド(2025.04.17) / classmethod-ai-talks-aka-cats_moderator-slides_vol21_2025-04-17
shinyaa31
0
580
AWS全冠芸人が見た世界 ~資格取得より大切なこと~
masakiokuda
5
5.9k
Devinで模索する AIファースト開発〜ゼロベースから始めるDevOpsの進化〜
potix2
PRO
7
3.4k
20250413_湘南kaggler会_音声認識で使うのってメルス・・・なんだっけ?
sugupoko
1
480
ElixirがHW化され、最新CPU/GPU/NWを過去のものとする数万倍、高速+超省電力化されたWeb/動画配信/AIが動く日
piacerex
0
140
SREの視点で考えるSIEM活用術 〜AWS環境でのセキュリティ強化〜
coconala_engineer
1
290
バクラクの認証基盤の成長と現在地 / bakuraku-authn-platform
convto
1
410
MCPを活用した検索システムの作り方/How to implement search systems with MCP #catalks
quiver
12
6.5k
Featured
See All Featured
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
507
140k
Mobile First: as difficult as doing things right
swwweet
223
9.6k
A designer walks into a library…
pauljervisheath
205
24k
Large-scale JavaScript Application Architecture
addyosmani
512
110k
Rebuilding a faster, lazier Slack
samanthasiow
80
8.9k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
23
2.6k
Intergalactic Javascript Robots from Outer Space
tanoku
270
27k
How to Think Like a Performance Engineer
csswizardry
23
1.5k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
178
53k
Docker and Python
trallard
44
3.3k
The Invisible Side of Design
smashingmag
299
50k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
16k
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