Files
microdao-daarion/security/hardening/signed-images.md
Apple f6a2007c77 🛡️ security: Implement full container audit and signed images guide
- 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>
2026-01-09 12:16:30 -08:00

3.6 KiB
Raw Permalink Blame History

🔏 Docker Content Trust (DCT) — Signed Images Guide

Мета: Гарантувати, що в системі запускаються тільки перевірені та підписані образи.


🎯 Що таке Docker Content Trust?

DCT дозволяє використовувати цифрові підписи для даних, що надсилаються та отримуються з віддалених Docker реєстрів. Це гарантує:

  1. Integrity: Образ не був змінений.
  2. Publisher: Образ підписаний саме вами.
  3. 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

⚠️ Важливі застереження

  1. Втрата ключів: Якщо ви втратите Root key, ви не зможете керувати підписами репозиторію. Зробіть бекап ~/.docker/trust!
  2. Third-party images: Офіційні образи (nginx, postgres) підписані Docker. Але деякі специфічні образи можуть не мати підписів. Для них потрібно буде створювати власні підписані версії.