# 🔏 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. Але деякі специфічні образи можуть не мати підписів. Для них потрібно буде створювати власні підписані версії.