Запитано Активність 22 перегляди Є найкраща відповідь
0
Зараз у нас усі секрети (пароль бази, ключ платіжного API, SMTP) лежать у .env, який підхоплюється в docker-compose.yml через env_file. Колега каже, що змінні середовища — це небезпечно і треба інакше.
Наскільки це реальна проблема і який варіант кращий для невеликого проєкту на одному сервері?
Офіційні образи Postgres, MySQL і багато інших розуміють змінні з суфіксом _FILE. У своєму застосунку додайте читання з файлу, якщо задано *_FILE.
Коли проєкт виросте — менеджер секретів (Vault, AWS Secrets Manager, Doppler, Infisical) з ротацією і аудитом доступу. Але для одного сервера Compose secrets + дисципліна з .env закривають основні ризики.
Ще порада з практики: перевірте історію Git, чи не потрапляв туди .env колись раніше. git log --all --full-history -- .env покаже. Якщо потрапляв — секрети вважайте скомпрометованими і змініть їх: видалення файлу з репозиторію не видаляє його з історії.
Для автоматичного контролю додайте в CI сканер секретів (gitleaks або trufflehog) — він зловить ключі ще до мерджу.