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
20260516_SecJAWS_Days
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Takuya Yonezawa
May 16, 2026
Technology
710
4
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
20260516_SecJAWS_Days
https://s-jaws.connpass.com/event/383751/
Takuya Yonezawa
May 16, 2026
More Decks by Takuya Yonezawa
See All by Takuya Yonezawa
20260422_Midosuji_Tech
takuyay0ne
2
71
脱 雰囲気実装!AgentCoreを良い感じにWEBアプリケーションに組み込むために
takuyay0ne
3
550
20260228_JAWS_Beginner_Kansai
takuyay0ne
5
700
20260204_Midosuji_Tech
takuyay0ne
1
230
20260129_CB_Kansai
takuyay0ne
1
370
20260126_JAWS_Osaka
takuyay0ne
1
60
こんな時代だからこそ! 想定しておきたいアクセスキー漏洩後のムーブ
takuyay0ne
4
800
セキュリティは全員参加!_JAWSのイベントサイトで脅威モデリングを学んでみよう!
takuyay0ne
0
220
20250920_ServerlessDays
takuyay0ne
9
4.4k
Other Decks in Technology
See All in Technology
アンオフィシャルな、オフィシャルからのお願い
wyamazak_devrel
0
140
Agile and AI Redmine Japan 2026
hiranabe
3
260
SteampipeとExcel Power QueryでAWS構成定義書の作成を自動化する
jhashimoto
0
150
SONiC Scale-Up Working Group から探る Scale-UpやUltraEthernet機能の実装方法
ebiken
PRO
2
410
2026TECHFRESH畢業分享會 - AI 時代的人生存檔點
line_developers_tw
PRO
0
1.3k
2026TECHFRESH畢業分享會 - Lightning Talk - E起 See See : 電商推薦讀心術? 數據說了算
line_developers_tw
PRO
0
1.3k
自宅LLMの話
jacopen
1
640
Android の公式 Skill / Android skills
yanzm
0
160
Kiroで書いた 設計書 が AI レビューの 採点基準 になる
ezaki
0
130
新しいUbuntu/GNOMEが使いたいからXからWaylandへ移行頑張ってるの巻 2026-06-20
nobutomurata
0
150
脱SaaS!FDEを支えるプロビジョニングと分離設計
knih
0
240
2026年6月23日 Syncable Tech + Start Python Club にて
hamukazu
0
140
Featured
See All Featured
New Earth Scene 8
popppiees
3
2.3k
Raft: Consensus for Rubyists
vanstee
141
7.5k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
2.9k
Speed Design
sergeychernyshev
33
1.9k
How to Talk to Developers About Accessibility
jct
2
240
Test your architecture with Archunit
thirion
1
2.3k
Accessibility Awareness
sabderemane
1
140
How to Ace a Technical Interview
jacobian
281
24k
Discover your Explorer Soul
emna__ayadi
2
1.1k
Become a Pro
speakerdeck
PRO
31
6k
Game over? The fight for quality and originality in the time of robots
wayneb77
1
200
Transcript
1 © 2026 Japan Digital Design, Inc. Takuya Yonezawa 2026.05.16
Bottlerocket on ECS Dive Deep Security JAWS Days ~ Day 1 ~
2 © 2026 Japan Digital Design, Inc. お疲れのところ失礼しますmm ニッチな話なので気楽に聞いてください 内容を理解したからといって日常業務で
めっちゃ役に立つわけではないです ただただOSの話をします
3 © 2026 Japan Digital Design, Inc. 米澤 拓也 Software
Engineer Technology & Development Div. and Corporate Culture室 プロフィール アプリケーションを気持ちよく作るためには インフラやセキュリティも幅広くできなければならぬ! と意気込んだSWEの成れの果て。 採用活動もやってますので是非お声掛けください 証券系→銀行系 と 金融×IT なキャリアを歩んでいます (証券外務員一種) Community Builder (Serverless) 2023~ takuya_y0ne
4 © 2026 Japan Digital Design, Inc. 0 はじめに
5 © 2026 Japan Digital Design, Inc. Bottlerocketってご存知ですか? (ちゃんとアイコンもあるんですよ!) ペットボトルロケットのことではない
6 © 2026 Japan Digital Design, Inc. 一言で言うと… セキュアにコンテナをホストするために カリカリにチューニング
された Linuxベースのコンテナ特化型OS
7 © 2026 Japan Digital Design, Inc. https://aws.amazon.com/about-aws/whats-new/2020/08 /announcing-general-availability-of-bottlerocket/ https://aws.amazon.com/about-aws/whats-new/2020/08
/announcing-general-availability-of-bottlerocket/ 2020/08 EKS用Bottlerocket AMIが一般提供 実は結構老舗
8 © 2026 Japan Digital Design, Inc. https://aws.amazon.com/about-aws/whats-new/2021/06 /the-bottlerocket-ami-for-amazon-ecs-is-now-generally-available/ https://aws.amazon.com/about-aws/whats-new/2021/06
/the-bottlerocket-ami-for-amazon-ecs-is-now-generally-available/ 2021/06 ECS用Bottlerocket AMIが一般提供 実は結構老舗
9 © 2026 Japan Digital Design, Inc. もちろん現在もきちんとメンテされている https://github.com/bottlerocket-os/bottlerocket/releases https://github.com/bottlerocket-os/bottlerocket/releases
実は結構老舗
10 © 2026 Japan Digital Design, Inc. 1 Bottlerocketは何故セキュアなのか?
11 © 2026 Japan Digital Design, Inc. ① 徹底されたアタックサーフェスの削減
12 © 2026 Japan Digital Design, Inc. 不要なパッケージを徹底削減 不要なパッケージを排除することで、 脆弱性の混入リスクやパッケージの更新/
管理の手間を大幅に削減する シェルすら捨てるという男前仕様 もし任意のプログラムや設定スクリプト を持ち込む場合は起動時に実行される bootstrapコンテナ経由で行う 上記はコンテナイメージ作成における プラクティスにも通じる内容である Bottlerocketが捨て去ったもの シェルとインタプリタ 攻撃者が脆弱性を突いてOS内で 任意のコードを実行できないようにする シェル:bashとか インタプリタ:Pythonとか パッケージマネージャー システムの整合性を損なう変更や悪意のある パッケージのインストールをブロックする yumやaptなど
13 © 2026 Japan Digital Design, Inc. ② ファイルシステムの整合性の担保
14 © 2026 Japan Digital Design, Inc. BottlerocketのAMI(Marketplaceから入手可能)から EC2を起動しようとすると、EBSが2つ必要になる 何故かGP2デフォルト
..
15 © 2026 Japan Digital Design, Inc. Bottlerocketでは 2つのボリュームを利用する それぞれのボリュームに格納される
主要なデータ群は下記の2系統 ▪ Root Device(immutable:不変) - Active/Passive パーティションセット - ブートローダー - dm-verityハッシュツリー - Bottlerocket APIデータストア ▪ Data Device(mutable:可変) - Pullしたコンテナイメージ - アプリケーション用ストレージ - コンテナオーケストレーションに 関連するデータ Root Device (immutable) Data Device (mutable) Bottlerocket on EC2 Active/Passive パーティションセット ブートローダー dm-verityハッシュツリー API データストア コンテナイメージ Application/Admin/Control /Bootstrapコンテナ オーケストレーション 関連データ (containerd/kubelet/ECS agent) … … アプリケーション用ストレージ
16 © 2026 Japan Digital Design, Inc. Bottlerocketでは 2つのボリュームを利用する それぞれのボリュームに格納される
主要なデータ群は下記の2系統 ▪ Root Device(immutable:不変) - Active/Passive パーティションセット - ブートローダー - dm-verityハッシュツリー - Bottlerocket APIデータストア ▪ Data Device(mutable:可変) - Pullしたコンテナイメージ - アプリケーション用ストレージ - コンテナオーケストレーションに 関連するデータ Data Device (mutable) Bottlerocket on EC2 Active/Passive パーティションセット ブートローダー API データストア コンテナイメージ Application/Admin/Control /Bootstrapコンテナ オーケストレーション 関連データ (containerd/kubelet/ECS agent) … … アプリケーション用ストレージ Root Device (immutable) dm-verityハッシュツリー 事前に計算/保存された ハッシュツリーと比較することで Root Deviceのimmutable性を 担保している
17 © 2026 Japan Digital Design, Inc. dm-verity (device-mapper verity)
Root Hash Block 1 (4KB) Block 2 (4KB) Block 3 (4KB) Block 4 (4KB) … Hash 1 Hash 2 Hash 3 Hash 4 Hash (3|4) L0 データブロック(実データ) SHA256 SHA256 SHA256 SHA256 … Hash (1|2) SHA256 SHA256 SHA256 … ブロックデバイスの改竄検知/防止の仕組み Linuxカーネル上に実装されており、 Androidや組み込み系OSでも利用される 全データをツリー構造のSHA256ハッシュ (Hash Tree/Markle Tree)で管理し、 ルート(最上位)のハッシュが正しいこと を以て改竄判定を行う → ルートを見れば済むので計算量が減る ブロックが改竄された場合、 Root Hashの値が不一致になる
18 © 2026 Japan Digital Design, Inc. dm-verity (device-mapper verity)
ブロックデバイスの改竄検知/防止の仕組み Linuxカーネル上に実装されており、 Androidや組み込み系OSでも利用される 全データをツリー構造のSHA256ハッシュ (Hash Tree/Markle Tree)で管理し、 ルート(最上位)のハッシュが正しいこと を以て改竄判定を行う → ルートを見れば済むので計算量が減る ブロックが改竄された場合、 Root Hashの値が不一致になる Root Hash Block 1 (4KB) Block 2 (4KB) Block 3 (4KB) Block 4 (4KB) … Hash 1 Hash 2 Hash 3 Hash 4 Hash (3|4) L0 データブロック(実データ) SHA256 SHA256 SHA256 SHA256 … Hash (1|2) SHA256 SHA256 SHA256 … ハッシュが違う! → 改竄された
19 © 2026 Japan Digital Design, Inc. もしRoot Deviceで改竄が検知されたら… Bottlerocketは即座にRebootする
・Fail Closed:異常を検知したら止める ・脅威(不正なコードや攻撃者)の排除 CVE-2019-5736 のようなコンテナ エスケープ脆弱性への打ち手に
20 © 2026 Japan Digital Design, Inc. ③ Control containerと
Admin container
21 © 2026 Japan Digital Design, Inc. Bottlerocketの運用で利用する 特殊コンテナ 下記の2種類のコンテナが用意されている
▪ Control Container(コントロール) APIソケットと通信を行うことでOSの設定 を変更することが可能 → Bottlerocketでは、設定変更は原則的 にAPIを通じてしか行えない ※1 SSMエージェントも包含されている ▪ Admin Container(管理) 最強の権限を持ち、シェルやパッケージ マネージャーも使える(AL2イメージ) 高度な調査やトラブルシューティング用 デフォルトではオフ ※1 APIという唯一かつ厳格なインタフェースを強制させることで、 アタックサーフェスの削減やバリデーションによる不確実性の排除を実現する Admin Container (デフォルトではオフ) Control Container SSM Agent SSHサーバー パッケージマネージャー apiclient apiclient Session Manager Application Container (ユーザーが作成したアプリケーション)
22 © 2026 Japan Digital Design, Inc. Bottlerocketの運用で利用する 特殊コンテナ 下記の2種類のコンテナが用意されている
▪ Control Container(コントロール) APIソケットと通信を行うことでOSの設定 を変更することが可能 → Bottlerocketでは、設定変更は原則的 にAPIを通じてしか行えない ※1 SSMエージェントも包含されている ▪ Admin Container(管理) 最強の権限を持ち、シェルやパッケージ マネージャーも使える(AL2イメージ) 高度な調査やトラブルシューティング用 デフォルトではオフ Control ContainerにSSM接続した際のコンソール (日々の運用ではこちらを使う)
23 © 2026 Japan Digital Design, Inc. ④ SELinuxによるmutable領域の保護
24 © 2026 Japan Digital Design, Inc. Bottlerocketでは 2つのボリュームを利用する それぞれのボリュームに格納される
主要なデータ群は下記の2系統 ▪ Root Device(immutable:不変) - Active/Passive パーティションセット - ブートローダー - dm-verityハッシュツリー - Bottlerocket APIデータストア ▪ Data Device(mutable:可変) - Pullしたコンテナイメージ - アプリケーション用ストレージ - コンテナオーケストレーションに 関連するデータ Root Device (immutable) Bottlerocket on EC2 Active/Passive パーティションセット ブートローダー dm-verityハッシュツリー API データストア … Data Device (mutable) コンテナイメージ Application/Admin/Control /Bootstrapコンテナ オーケストレーション 関連データ (containerd/kubelet/ECS agent) … アプリケーション用ストレージ こちらの話
25 © 2026 Japan Digital Design, Inc. SELinux (Security Enhanced
Linux) アメリカ国家安全保障局 (NSA)が開発 したLinuxカーネルのセキュリティ機能 プロセスやファイルにラベル(コンテキ スト)を付与することでアクセス可否を 判断する 3つの実行モードがあり、Bottlerocket ではenforcingで動く - enfocing: アクセス制限適応 - permissive: アクセス制限未適応 - disabled: SELinuxを無効化 Bottlerocketで利用されるSELinuxラベル container_t 通常ワークロード用コンテナ、制限が最も強い control_t 特権コンテナ 管理用APIソケットへの書き込みが可能 super_t ホストの全ファイル操作とAPI操作が可能な最強 権限(利用にはオプトインが必要)
26 © 2026 Japan Digital Design, Inc. ここまでのまとめ (※) root権限を保有していたとしても、
カーネルの整合性を損なうような操作はできない 他にも カーネルロックダウン※ なども 取り入れられており、 多層でOSを守っている
27 © 2026 Japan Digital Design, Inc. 2 日々の運用
28 © 2026 Japan Digital Design, Inc. OSのバージョンアップ
29 © 2026 Japan Digital Design, Inc. Bottlerocket OSのアップデート Bottlerocket
on EC2 ブートローダー dm-verityハッシュツリー API データストア … Root Device (immutable) Active/Passive パーティションセット Data Device (mutable) Control Container SSM Agent apiclient カリカリにチューニングされた Bottlerocketとはいえ、OS自体のアップ デートは必要 OSアップデートの際にはControl Contaner内のapiclientを利用して、 Passiveパーティションセットに書き込む その後はインスタンスをrebootして、 Active/Passiveをスワップする TUF:The Update Framework → CNCFのプロジェクト
30 © 2026 Japan Digital Design, Inc. Bottlerocket OSのアップデート カリカリにチューニングされた
Bottlerocketとはいえ、OS自体のアップ デートは必要 OSアップデートの際にはControl Contaner内のapiclientを利用して、 Passiveパーティションセットに書き込む その後はインスタンスをrebootして、 Active/Passiveをスワップする TUF:The Update Framework → CNCFのプロジェクト Active/Passive パーティションセット Active Version (v1.58.0) Passive Version (v1.59.0) ダウンロード 利用中 未利用 Active/Passive パーティションセット Passive Version (v1.58.0) Active Version (v1.59.0) reboot Active/Passiveパーティション構成 × API更新により、 - OS起動失敗時の自動ロールバック(手動もOK) - OSバージョンをまたいだ設定情報の移行 が実現可能に
31 © 2026 Japan Digital Design, Inc. Bottlerocket OSのアップデート Bottlerocektの
バージョン一覧 現在のOSバージョン アップデート予定の OSバージョン $ apiclient update check カリカリにチューニングされた Bottlerocketとはいえ、OS自体のアップ デートは必要 OSアップデートの際にはControl Contaner内のapiclientを利用して、 Passiveパーティションセットに書き込む その後はインスタンスをrebootして、 Active/Passiveをスワップする TUF:The Update Framework → CNCFのプロジェクト
32 © 2026 Japan Digital Design, Inc. Bottlerocket OSのアップデート $
apiclient update apply $ apiclient reboot 新バージョン反映 カリカリにチューニングされた Bottlerocketとはいえ、OS自体のアップ デートは必要 OSアップデートの際にはControl Contaner内のapiclientを利用して、 Passiveパーティションセットに書き込む その後はインスタンスをrebootして、 Active/Passiveをスワップする TUF:The Update Framework → CNCFのプロジェクト
33 © 2026 Japan Digital Design, Inc. インスタンス毎にアップデート回すのが面倒? Bottlerocket ECS
Updaterを利用して自動化 https://aws.amazon.com/jp/blogs/news/a-deep-dive-into-bottlerocket-ecs-updater/
34 © 2026 Japan Digital Design, Inc. 3 実際に導入してみた気づき
35 © 2026 Japan Digital Design, Inc. そもそもFargateを使えばOSメンテ不要だよね?
36 © 2026 Japan Digital Design, Inc. 仰るとおりです Fargate良いですよね EC2
(GPU) ECS Task × 1 ECS Service Bottlerocket ALB 弊社では 下記のような一部のワークロードで ECS on EC2を利用中 ① GPUを利用するECSサービス ② パフォーマンスが求められるECSサービス (= 最新のCPUを使いたい) もともとはECS標準AMIを利用していたが、 脆弱性ケアの負荷を下げるためにBottlerocketに乗り換えた 資料の要約結果 ベクトル化結果 [0.1, 0.4, 0.8, 0.7, 0.2, … , 1.0] "このページはxxxについて説明 しています。hogehoge..." ただし、 下記のようなケースではECS on EC2の 利用検討が必要 ▪ GPUの利用 → この要件が出るとEC2しかない ▪ 常に新しいCPUを利用したい → EC2はCPUガチャがない ▪ Reserved Instanceなどの割引 → EC2利用だと選択肢が多い ▪ ややこしいコンテナを動かす場合 → 詳しくは述べません()
37 © 2026 Japan Digital Design, Inc. 仰るとおりです Fargate良いですよね ただし、
下記のようなケースではECS on EC2の 利用検討が必要 ▪ GPUの利用 → この要件が出るとEC2しかない ▪ 常に新しいCPUを利用したい → EC2はCPUガチャがない ▪ Reserved Instanceなどの割引 → EC2利用だと選択肢が多い ▪ ややこしいコンテナを動かす場合 → 詳しくは述べません() apne-1a/1c, X86_64, 1vCPU/2Mem で Fargateタスクを100発起動してlscpuした結果 リリース年は下記サイトを参照 https://www.cpubenchmark.net/ 2020 Q1 2019 Q3 2018 Q3 2018 Q4
38 © 2026 Japan Digital Design, Inc. ECS Managed Instanceが絶妙
FargateとEC2のいいとこ取りを できるようなアップデート。 AWSブログによると、 裏側でBottlerocketが動いている※1。 ただし、 14日ごとにパッチ適応が発動する。 (インスタンスドレイン) これは裏で動いているBottlerocketを 最新化することによるものと思われる ※1 https://aws.amazon.com/jp/blogs/aws/announcing-amazon- ecs-managed-instances-for-containerized-applications/
39 © 2026 Japan Digital Design, Inc. で、実際に脆弱性検知はどんなもんか?
40 © 2026 Japan Digital Design, Inc. Inspectorでの検出 全てのEC2インスタンスを同じタイミング で起動し、1か月ほど放置してみた。
脆弱性の検出はInspectorベース AMIは下記の3パターン - AL2023(kernel 6.1) - ECS最適化 AL2023(kernel 6.1) - Bottlerocket v1.59.0 (kernel 6.1) お分かりいただけるでしょうか? 脆弱性の数が全然違いますよね
41 © 2026 Japan Digital Design, Inc. Inspectorでの検出 とはいえカーネルレベルの脆弱性は どうしても避けられない
(検知数は少ないけど) https://aws.amazon.com/jp/security/security-bulletins/rss/2026-026-aws/ 全てのEC2インスタンスを同じタイミング で起動し、1か月ほど放置してみた。 脆弱性の検出はInspectorベース AMIは下記の3パターン - AL2023(kernel 6.1) - ECS最適化 AL2023(kernel 6.1) - Bottlerocket v1.59.0 (kernel 6.1)
42 © 2026 Japan Digital Design, Inc. 4 まとめ
43 © 2026 Japan Digital Design, Inc. Bottlerocket導入で脆弱性はめちゃくちゃ削減できる。 ( !=
脆弱性管理から解放される) Fargateも良いけど、ECS on EC2も良いぞ。
44 © 2026 Japan Digital Design, Inc. 5 宣伝
45 © 2026 Japan Digital Design, Inc. https://fin-jaws.connpass.com/event/388549/ https://fin-jaws.connpass.com/event/388549/ 5/20(水)19:00~21:00
QUICK様オフィス@茅場町
46 © 2026 Japan Digital Design, Inc. OSについて勉強したい方向け https://www.amazon.co.jp/dp/B0GC5QRMVY
Thank you. 47 © 2026 Japan Digital Design, Inc.