🔰

エンジニア必見!curl | bash が危険な理由と安全なDocker環境構築

に公開

🐳 はじめに

Dockerfileを書いていると、aptcurl をよく使いますよね。
でも実は、その使い方を誤ると 「セキュリティリスク」 に直結することをご存知でしょうか?


⚠️ なぜ 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