Bottlerocket on ECS Dive Deep — コンテナ特化OSの多層防御とゼロシェル設計
シェルなし・パッケージマネージャーなし・Immutableファイルシステム。dm-verity+SELinux+カーネルロックダウンの多層防御と安全なOS更新の実装
🎤 金融グループ傘下テック企業 ソフトウェアエンジニア / AWS Community Builder (Serverless, 2023年〜)
キーテイクアウェイ
Bottlerocketはシェル・インタプリタ・パッケージマネージャーを全排除し、侵入されても攻撃者が何もできない環境を実現。Inspector検査でAmazon Linux比の脆弱性数はHigh1件のみ
登壇者の背景
- 金融グループ傘下テック企業のソフトウェアエンジニア
- アプリケーションの快適な動作に関心、インフラ・セキュリティにも従事
- AWS Community Builder(Serverless)2023年〜
Bottlerocketとは
コンテナをホストするために調整されたLinux ベースのコンテナ特化型OS。
| 時期 | マイルストーン |
|---|---|
| 2020年8月 | 初回GA(EKS on EC2用) |
| 2021年夏 | ECS用AMI一般提供 |
| 現在 | 5〜6年の実績、最新版1.60 |
セキュリティの4層防御
層1: アタックサーフェスの徹底削減
| 排除されたもの | 効果 |
|---|---|
| シェル(bash等) | 侵入者がコマンド実行不可 |
| インタプリタ(Python3等) | 攻撃スクリプトが動作不可 |
| パッケージマネージャー(apt, yum) | 攻撃ツールのインストール不可 |
→ EC2に侵入されても攻撃者は追加のコード実行ができない。
層2: dm-verity(ファイルシステム整合性)
ディスク構造:
[ルートデバイス] Immutable — OS起動用(書き込み不可)
[データデバイス] Mutable — コンテナイメージ、一時ストレージ
dm-verityの仕組み:
4KBブロック → 個別Hash → 上位Hash → ルートHash
ブロック単位でハッシュ化し、ルートハッシュで効率的に改ざん検知。
改ざん検知時: 即座にリブート(フェイルクローズ)→ 脅威駆逐の高速化
層3: SELinux(Mutable領域の保護)
NSA開発のセキュリティモジュール。**強制適用(Enforcing)**で動作。
| ラベル | 対象 | 権限 |
|---|---|---|
container_t | 通常コンテナ | 最厳格。カーネルコア不可 |
control_t | コントロールコンテナ | APIソケット書込み、OS更新可 |
super_t | アドミンコンテナ | 全操作可能 |
通常コンテナが侵害されてもホストOSの核心にはアクセス不可。
層4: カーネルロックダウン
root権限でもカーネル内部への変更を防止。変更検出 → リブート。
2つの管理コンテナ
コントロールコンテナ
- OS更新の唯一の入口(APIベース管理)
- SSMエージェント搭載(Session Manager対応)
- API経由で検証後に適用
アドミンコンテナ
- Amazon Linux 2イメージ梱包
- 緊急トラブルシューティング用
- デフォルトはオフ(明示的起動が必要)
OSバージョンアップ: アクティブ/パッシブパーティション
EBSボリューム:
[アクティブ] ← 現在のOS
[パッシブ] ← 新バージョンをここにDL → 切り替え → 起動
メリット:
- ロールバック = パーティション切り替えのみ(高速)
- 破壊的変更でもOS起動失敗なし
- API経由で全管理 → 予期しない変更なし
大規模自動化: Bottlerocket ECS Updater(公式)でドレイン→更新→再投入を自動実行
ECSでの採用判断基準
Fargateが使えない = Bottlerocket検討対象
| ケース | 理由 |
|---|---|
| GPU利用 | Fargate非対応 |
| リザーブドインスタンス | Fargate非対応 |
| 特定CPU世代指定 | Fargate非対応 |
ECS Managed Instances(約1年半前リリース)
- Fargate風のAWS管理EC2
- Bottlerocketで動作
- 14日ごとに自動パッチ適用
- インスタンスドレイン → 再起動を自動実行
脆弱性比較(Inspector / 1ヶ月放置後)
| OS | Critical | High |
|---|---|---|
| Amazon Linux 2023 | 0 | 多数 |
| ECS最適化AMI | 0 | 多数 |
| Bottlerocket 1.60 | 0 | 1件のみ |
Bottlerocketの「High」はKernel 6.1の特権昇格脆弱性1件のみ。パッケージ起因の脆弱性はゼロ(パッケージ自体が存在しないため)。
初心者向け補足
コンテナ特化OSとは
通常のLinuxは多用途対応で大量のツールがプリインストールされている。コンテナ特化OSは「コンテナを動かす」ことだけに最適化し、余計なものを全排除してセキュリティを高める。
なぜ「シェルがない」が強力か
攻撃者の侵入後の典型行動:
- シェル取得 → ここで詰む
- 偵察コマンド実行
- 追加ツールDL
- 権限昇格
Bottlerocketではステップ1の時点で何もできない。
Immutableインフラとは
サーバーを後から変更するのではなく、新バージョンを用意して丸ごと入替える考え方。アクティブ/パッシブパーティションはこの実装例。