2026年5月17日
2026年5月17日
Dockerのseccompプロファイルでシステムコールを制限する方法
ステップ1: プロジェクトの準備
まず、必要なパッケージをインストールします。seccompプロファイルを使用するためには、Dockerが最新版である必要があります。
# apt-get を用いてDockerを更新し、最新バージョンをインストールします。
sudo apt-get update && sudo apt-get install -y docker-ce
# Dockerの起動確認
sudo systemctl start docker
ステップ2: seccompプロファイルを作成する
次に、seccompプロファイルを作成し、必要なシステムコールを制限します。この例では、pingコマンドを実行できるようにしてみましょう。
# プロファイルテンプレートを作成します。
sudo nano /etc/docker/seccomp/ping.json
{
"defaultAction": "SCMP_ACT_ERRNO",
"architectures": [
{
"name": "SCMP_ARCH_X86_64",
"syscalls": [
{ "name": "ping", "action": "SCMP_ACT_ALLOW" }
]
}
]
}
ステップ3: seccompプロファイルを適用する
作成したseccompプロファイルを使用して、Dockerコンテナを作成します。
# Dockerイメージから新しいコンテナを作成し、seccompプロファイルを適用します。
docker run --security-opt seccomp=/etc/docker/seccomp/ping.json -it ubuntu:latest ping -c 4 google.com
# 既存のコンテナに適用する場合:
docker container update --security-opt seccomp=/etc/docker/seccomp/ping.json <コンテナID>
ステップ4: セキュリティとトラブルシューティング
seccompプロファイルを適用した後、コンテナの動作を監視します。不正なシステムコールが実行されないように注意が必要です。
# Dockerコンテナのログ確認
docker logs <コンテナID>
注意事項
- seccompプロファイルは細かく設定する必要があります。
- 無効化されたシステムコールにより、コンテナの正常な動作に支障がでる可能性があります。
- 安全性とパフォーマンスを权衡しながら適切な設定を行うことが重要です。
まとめ
1. セキュリティ強化: seccompプロファイルを使用することで、Dockerコンテナのリスクを大幅に減らすことができます。
2. 制御可能な環境: 特定のシステムコールだけを許可し、それ以外は禁止することができます。
3. パフォーマンス管理: 不要なシステムコールが実行されることで不要なネットワーク通信やI/O操作を防ぐことが可能になります。
4. 容易な適用: Docker CLIを使用して簡単にseccompプロファイルを適用・変更できます。
5. 柔軟性: seccompの設定は非常に細かく、様々なシナリオに適応させることができます。
関連記事: