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

87 lines
3.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 🔏 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`:
```bash
export DOCKER_CONTENT_TRUST=1
```
Після цього Docker буде блокувати будь-які операції з непідписаними образами.
### 2. Генерація ключів підпису
При першій спробі підписати образ, Docker згенерує ключі:
- **Root key:** Головний ключ (зберігайте в безпечному місці!).
- **Repository key:** Ключ для конкретного репозиторію.
### 3. Підписання образу при Push
Якщо `DOCKER_CONTENT_TRUST=1`, команда `docker push` автоматично підпише образ:
```bash
docker push your-registry/image:tag
```
### 4. Налаштування NODE1 для перевірки
На сервері NODE1 обов'язково увімкніть перевірку:
```bash
# /etc/environment
DOCKER_CONTENT_TRUST=1
```
Тепер `docker pull` або `docker compose up` завершаться помилкою, якщо образ не має валідного підпису.
---
## 🛠️ Інтеграція в CI/CD (GitHub Actions)
Використовуйте `cosign` — сучасний стандарт підпису контейнерів від Sigstore.
```yaml
- 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. Але деякі специфічні образи можуть не мати підписів. Для них потрібно буде створювати власні підписані версії.