Docker Compose と Ubuntu による安全なデプロイ
· 約7分
シリコンバレーのスタートアップでは、Docker Compose はコンテナ化アプリケーションを迅速にデプロイ・管理するための好まれるツールの一つです。しかし、利便性にはしばしばセキュリティリスクが伴います。Site Reliability Engineer(SRE)として、セキュリティ脆弱性が壊滅的な結果を招くことを痛感しています。本記事 では、Docker Compose と Ubuntu を組み合わせた実務でまとめたベストなセキュリティ実践を共有し、Docker Compose の便利さを享受しつつシステムの安全性を確保する方法をご紹介します。
I. Ubuntu システムのセキュリティ強化
コンテナをデプロイする前に、Ubuntu ホスト自体のセキュリティを確保することが重要です。主な手順は以下の通りです。
1. Ubuntu と Docker を定期的にアップデート
システムと Docker の両方を最新の状態に保ち、既知の脆弱性を修正します。
sudo apt update && sudo apt upgrade -y
sudo apt install docker-ce docker-compose-plugin
2. Docker 管理権限を制限
Docker の管理権限を厳格にコントロールし、特権昇格攻撃を防止します。
sudo usermod -aG docker deployuser
# 一般ユーザーが簡単に Docker 管理権限を取得できないようにする
3. Ubuntu ファイアウォール (UFW) を設定
ネットワークアクセスを適切に制限し、不正アクセスを防止します。
sudo ufw allow OpenSSH
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
sudo ufw status verbose
4. Docker と UFW の連携を適切に設定
デフォルトでは Docker が iptables を直接操作し、UFW をバイパスします。手動で制御することを推奨します。
Docker 設定ファイルを編集します。
sudo nano /etc/docker/daemon.json
以下の内容を追加します。
{
"iptables": false,
"ip-forward": true,
"userland-proxy": false
}
Docker サービスを再起動します。
sudo systemctl restart docker
Docker Compose でアドレスを明示的にバインドします。
services:
webapp:
ports:
- "127.0.0.1:8080:8080"