🔰
エンジニア必見!curl | bash が危険な理由と安全なDocker環境構築
🐳 はじめに
Dockerfileを書いていると、apt
や curl
をよく使いますよね。
でも実は、その使い方を誤ると 「セキュリティリスク」 に直結することをご存知でしょうか?
curl | bash
が危険なのか
⚠️ なぜ よく見かける例:
curl -s https://example.com/install.sh | bash
危険な理由
- スクリプトを確認せずに実行
- root 権限で動作することが多い
- 改ざんされていれば即アウト
✅ apt install は安全なのか?
apt-get update
apt-get install -y curl
apt
自体は署名付き公式リポジトリを利用するため基本的に安全です。
ただし…
- 非公式のPPAを追加する場合は要注意
- 署名(GPGキー) が正しく設定されていないと危険
:::message alert
原則:公式リポジトリ or 信頼できるベンダーの提供するリポジトリのみを使う。
:::
🔐 安全な利用方法
1. curl の安全な使い方
# スクリプトをまず保存
curl -O https://example.com/install.sh
# 中身を確認
less install.sh
# 実行
bash install.sh
さらに改ざん検証を追加するなら:
curl -O https://example.com/install.sh
curl -O https://example.com/install.sh.asc
gpg --verify install.sh.asc install.sh
2. apt の安全な使い方(Dockerfile例)
FROM ubuntu:22.04
# 必要最低限のインストール
RUN apt-get update -y && \
apt-get install -y --no-install-recommends \
curl \
ca-certificates \
gnupg && \
rm -rf /var/lib/apt/lists/*
# Docker公式リポジトリを登録
RUN curl -fsSL https://download.docker.com/linux/ubuntu/gpg \
| gpg --dearmor -o /usr/share/keyrings/docker.gpg && \
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker.gpg] \
https://download.docker.com/linux/ubuntu jammy stable" \
> /etc/apt/sources.list.d/docker.list && \
apt-get update && \
apt-get install -y docker-ce-cli
🌱 学習の進め方(ステップ式)
ステップ | 実践内容 | 学ぶポイント |
---|---|---|
1️⃣ Linuxコマンド練習 |
apt install curl / curl -I https://example.com
|
パッケージ管理とHTTPリクエストの基礎 |
2️⃣ Docker基礎 | Docker Desktop / Play with Docker | イメージのbuild/runを体験 |
3️⃣ Dockerfile練習 | apt & curl を組み込んで環境構築 | RUN/CMD/WORKDIRなどの命令理解 |
4️⃣ セキュリティ意識 | GPGキー検証付きリポジトリ登録 | 「盲信せず、検証する」習慣 |
5️⃣ 応用 | docker-compose でWeb + DB環境 | 複数コンテナの連携 |
📚 公式ドキュメントリンク
📌 まとめ
- curl | bash は危険! → 内容確認+署名検証を徹底
- apt は信頼できるリポジトリのみ利用
- Dockerfile では 最小限インストール+キャッシュ削除+署名検証 が基本
- 公式ドキュメントを読む習慣をつける
Discussion