container-hardening について
コンテナイメージと実行時設定を強化するためのセキュリティガイドです。コンテナを構築・デプロイするチーム向けに、ベースイメージの選定、最小権限設定、Kubernetes のセキュリティコンテキスト、スキャンを扱います。
主な機能
- 01最小ベースイメージの指針
- 02非 root ユーザーの設定
- 03実行時のセキュリティ設定
- 04Kubernetes のセキュリティコンテキスト
- 05Trivy によるイメージスキャン
活用シーン
- 01コンテナイメージの強化
- 02コンテナ実行権限の削減
- 03Kubernetes Pod のセキュリティ設定
- 04イメージの脆弱性確認
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ bagelhole/ devops-security-agent-skills --skill container-hardeningインストール後、Claude Code で/container-hardeningを入力して読み込まれたか確認します。
同梱ファイルreferences/container-security.md
詳細
コンテナーの強化
コンテナーイメージとランタイム構成を保護します。
このスキルを使用するタイミング
次の場合にこのスキルを使用します。
- セキュアなコンテナーイメージをビルドする
- コンテナーのデプロイを強化する
- コンテナーセキュリティ要件を満たす
- 多層防御を実装する
Dockerfile のセキュリティ
# Use minimal base image
FROM alpine:3.18
# Don't run as root
RUN addgroup -g 1001 -S appgroup && \
adduser -u 1001 -S appuser -G appgroup
# Copy with specific ownership
COPY --chown=appuser:appgroup . /app
# Remove unnecessary packages
RUN apk del --purge build-dependencies && \
rm -rf /var/cache/apk/*
# Use non-root user
USER appuser
# Read-only filesystem support
WORKDIR /app
ランタイムのセキュリティ
# Run with security options
docker run -d \
--read-only \
--tmpfs /tmp \
--security-opt=no-new-privileges:true \
--cap-drop=ALL \
--cap-add=NET_BIND_SERVICE \
--user 1001:1001 \
myapp:latest
Kubernetes のセキュリティコンテキスト
apiVersion: v1
kind: Pod
spec:
securityContext:
runAsNonRoot: true
runAsUser: 1001
fsGroup: 1001
containers:
- name: app
securityContext:
allowPrivilegeEscalation: false
readOnlyRootFilesystem: true
capabilities:
drop: ["ALL"]
イメージのスキャン
# Scan with Trivy
trivy image --severity HIGH,CRITICAL myapp:latest
# Use distroless images
FROM gcr.io/distroless/static-debian11
ベストプラクティス
- 最小限のベースイメージを使用する
- root 以外のユーザーとして実行する
- 読み取り専用のファイルシステムを有効にする
- すべてのケイパビリティを削除する
- イメージを定期的にスキャンする
- イメージに署名し、検証する
- シークレット管理を使用する
関連スキル
- container-scanning - 脆弱性スキャン
- kubernetes-hardening - K8s のセキュリティ
コメント
Markdown 対応