🚀

AWS FargateでPlaywrightを動かす

に公開

はじめに

Playwright/Puppeteer を AWS Fargate 上で動かしていると、
「--no-sandbox を外したらブラウザが即クラッシュして 500 を返す…」というエラーにぶつかりました。

この記事では 再現ログ → 原因の深掘り → リスク評価 → 現実的な対策 の順に解説し、
「--no-sandbox でも運用上は安全」思ったのでその内容を記事にしました。

この記事で得られること

  • Fargate でブラウザサンドボックスが動かない技術的背景
  • "タスク内だけ丸腰"状態で残るリスクの具体像
  • IAM/IMDS/SG 設計で 外堀を固める実践テンプレート
  • ビジネス層を 3 分で納得させる説明スクリプト

1. まず結論:覚えておく 4 行まとめ

ポイント 詳細
① Fargate タスクは microVM Firecracker がホストと他タスクから完全隔離 詳しくはこちら
② Chromium の set-uid サンドボックスが封じられる unshare 等の特権 syscall が禁止
③ --no-sandbox は必須 付けないと起動前に SIGABRT
④ リスクはタスク内に集中 IAM・IMDS・通信経路で"外堀"を固めれば OK

2. 実際のラッシュログ

[pid=82][err] Failed to move to new namespace: PID namespaces supported, Network namespace supported, but failed: errno = Operation not permitted
[pid=82][err] FATAL: content/browser/zygote_host/zygote_host_impl_linux.cc:211] Check failed
<process did exit: exitCode=null, signal=SIGABRT>

ポイントは Failed to move to new namespace
Chromium が user namespace + seccomp をセットアップできず、中断 (SIGABRT) している典型パターンです
(詳しい原因解析は Travis CI の Chrome ドキュメント が秀逸)。


3. 仕組みを分解して腑に落とす

3-1. Fargate のセキュリティ層

レイヤ 何が起きているか Playwright への影響
microVM (Firecracker) 1 タスク = 1 VM。ホストカーネルを共有しない ホスト侵害リスクは激減
seccomp プロファイル unshare, mount, ptrace など数十 syscall をデフォルト deny set-uid サンドボックス初期化に失敗
不可変カーネルポリシー cap_add: SYS_ADMIN 等の昇格は一切不可 サンドボックス無効化しか道がない

だから --no-sandbox が「仕様」になる

Firecracker の隔離 = "より強い外壁" が既にあるので、ブラウザ側のロックを外しても安全と思われます。

3-2. 残るリスクはどこに?

では、これだとどのようなリスクがあるか OpenAI O3 に聞いてみました:

  • タスク内の 環境変数・Secrets Manager トークン・/tmp ファイル にアクセス可能
  • IMDSv2 経由で 一時クレデンシャル を盗まれる可能性
  • 任意 URL 巡回系サービスでは ゼロデイ攻撃の踏み台 になり得る

4. 実運用で取るべき"外堀"対策

カテゴリ 推奨設定例
IAM タスクロールは最小権限。S3 なら PutObject のみ等
IMDS IMDSv2 + hop-limit=1 でコンテナ外から取得不能に
ネットワーク SG/NACL でアウトバウンドを 80/443 + 必要 CIDR のみに
シークレット 環境変数埋め込み禁止。必要なら起動時に暗号化取得しメモリだけに保持

どうしてもサンドボックス必須?

  • EC2 + ECScapAdd: SYS_ADMIN & seccomp=unconfined
  • VM/VNC でレンダリングレイヤを完全分離
  • Browser-as-a-Service(AWS Lambda@Edge, Browserless など)を採用

6. まとめ

  1. Fargate では技術的に --no-sandbox を外せない
  2. Firecracker microVM がホストとの隔離を保証するため ホスト侵害リスクは低い
  3. タスク内部の情報漏えいだけにリスクが収束 → IAM & IMDS 制限が最重要
  4. 真にサンドボックスが必要なら Fargate 以外の基盤 を選ぶ

参考リンク

Discussion