- Added security/audit-all-containers.sh: Automated Trivy scan for all 60+ project images - Added security/hardening/signed-images.md: Guide for Docker Content Trust (DCT) - Updated NODE1 with audit script and started background scan - Results will be saved to /opt/microdao-daarion/logs/audits/ Co-authored-by: Cursor Agent <agent@cursor.sh>
3.6 KiB
3.6 KiB
🔏 Docker Content Trust (DCT) — Signed Images Guide
Мета: Гарантувати, що в системі запускаються тільки перевірені та підписані образи.
🎯 Що таке Docker Content Trust?
DCT дозволяє використовувати цифрові підписи для даних, що надсилаються та отримуються з віддалених Docker реєстрів. Це гарантує:
- Integrity: Образ не був змінений.
- Publisher: Образ підписаний саме вами.
- Freshness: Ви використовуєте останню версію підписаного образу.
🚀 Налаштування DCT
1. Увімкнення DCT (Local & Server)
Додайте змінну оточення у ваш .zshrc або .bashrc:
export DOCKER_CONTENT_TRUST=1
Після цього Docker буде блокувати будь-які операції з непідписаними образами.
2. Генерація ключів підпису
При першій спробі підписати образ, Docker згенерує ключі:
- Root key: Головний ключ (зберігайте в безпечному місці!).
- Repository key: Ключ для конкретного репозиторію.
3. Підписання образу при Push
Якщо DOCKER_CONTENT_TRUST=1, команда docker push автоматично підпише образ:
docker push your-registry/image:tag
4. Налаштування NODE1 для перевірки
На сервері NODE1 обов'язково увімкніть перевірку:
# /etc/environment
DOCKER_CONTENT_TRUST=1
Тепер docker pull або docker compose up завершаться помилкою, якщо образ не має валідного підпису.
🛠️ Інтеграція в CI/CD (GitHub Actions)
Використовуйте cosign — сучасний стандарт підпису контейнерів від Sigstore.
- name: Install Cosign
uses: sigstore/cosign-installer@main
- name: Sign the images
run: |
cosign sign --key ${{ secrets.COSIGN_PRIVATE_KEY }} your-registry/image:tag
env:
COSIGN_PASSWORD: ${{ secrets.COSIGN_PASSWORD }}
📊 Стратегія переходу для DAARION
| Етап | Дія | Результат |
|---|---|---|
| 1. Audit | Прогнати повний аудит поточних образів | Розуміння вразливостей |
| 2. Local Setup | Увімкнути DOCKER_CONTENT_TRUST=1 локально |
Тільки підписані білди |
| 3. Registry | Використовути приватний реєстр (GitHub GHCR) | Безпечне сховище |
| 4. Server Policy | Увімкнути примусову перевірку на NODE1 | Блокування непідписаного malware |
⚠️ Важливі застереження
- Втрата ключів: Якщо ви втратите Root key, ви не зможете керувати підписами репозиторію. Зробіть бекап
~/.docker/trust! - Third-party images: Офіційні образи (nginx, postgres) підписані Docker. Але деякі специфічні образи можуть не мати підписів. Для них потрібно буде створювати власні підписані версії.