Незашифрованные резервные копии - это ответственность за безопасность. Резервное копирование базы данных содержит все — учетные данные пользователя, данные оплаты, личную информацию и бизнес-секреты. Если кто-то обращается к нешифрованному архивному файлу, у них есть полный доступ к вашим данным. Это руководство охватывает практические методы шифрования резервных копий PostgreSQL в режиме покоя и транзита, от простого шифрования GPG до интегрированных решений резервного копирования, которые обрабатывают шифрование автоматически..
Зачем шифровать резервные копии PostgreSQL
Резервные копии часто оказываются в местах с более слабой безопасностью, чем производственные базы данных. Облачные ведра хранения, внешние приводы, локации off каждый вводит потенциальные точки воздействия. Шифрование превращает резервные файлы в бесполезные данные для любого без ключа расшифровки.
Риски незашифрованных резервных копий
Подумайте, куда ваши резервные копии могут путешествовать:
- Облачное хранилище: S3 buckets, Google Cloud Storage, Azure Blob - неправильно настроенные разрешения выявили бесчисленные базы данных
- Трансферные сети: Резервные копии, перемещающиеся между серверами, могут быть перехвачены
- Запасное хранилище: Физические средства могут быть потеряны, украдены или неправильно утилизированы
- Доступ команды: Разработчики и подрядчики могут получить доступ к резервному хранению по законным причинам
- Аудиторы соблюдения: Некоторые правила требуют доказательства того, что резервные данные защищены
Без шифрования, одна неправильная конфигурация или инсайдерская угроза подвергает все. С шифрованием скомпрометированные архивные файлы остаются защищенными.
Подходы шифрования для резервного копирования PostgreSQL
Существует несколько методов для шифрования резервных копий PostgreSQL. Каждый имеет компромисс между сложностью, безопасностью и возможностями автоматизации.
GPG шифрование
GNU Privacy Guard (GPG) - наиболее распространенный подход для шифрования резервных файлов. Он работает с любым резервным форматом — pg_dump SQL-файлы, свалки пользовательского формата и архивы tar.
Симметрическое шифрование использует одну фразу:
| |
Асимметричное шифрование использует публичную/частную пару ключей:
| |
Асимметричное шифрование лучше для команд — резервная система нуждается только в публичном ключе, в то время как частный ключ остается защищенным отдельно.
OpenSSL шифрование
OpenSSL предоставляет еще один вариант для резервного шифрования, доступный на большинстве систем:
| |
OpenSSL задает пароль. Для автоматизации вы можете передавать его через переменную среды (менее безопасный) или файл:
| |
Age шифрование
Age - современный инструмент шифрования, предназначенный для того, чтобы быть проще, чем GPG:
| |
Age имеет более чистый интерфейс и меньшую поверхность атаки, чем GPG. Стоит подумать о новых реализациях.
Шифрование резервных копий pg_dump
pg_dump - это стандартный инструмент резервного копирования PostgreSQL. Объединение его с шифрованием создает безопасные резервные файлы.
Автоматизированный зашифрованный сценарий резервного копирования
Вот полный сценарий для зашифрованных резервных копий:
| |
Этот сценарий создает зашифрованные резервные копии, вычисляет контрольные суммы и управляет удержанием автоматически.
Сжатия и шифрования
При объединении сжатия и шифрования, порядок имеет значение:
Затем зашифровать (рекомендуется):
| |
Сжатие перед шифрованием создает меньшие файлы. Зашифрованные данные не сжимаются хорошо, потому что они кажутся случайными.
Пользовательский формат уже сжаты:
Пользовательский формат pg_dump (-Fc) включает в себя сжатие по умолчанию. Добавление внешнего сжатия не дает преимуществ:
| |
Поток зашифрованных резервных копий в облачное хранилище
Зашифровать резервные копии во время загрузки, чтобы избежать записи незашифрованных данных на диск:
| |
Этот подход сохраняет незашифрованные резервные данные полностью в памяти.
Управление ключами для резервного шифрования
Шифрование так же безопасно, как и управление ключами. Потерянные ключи означают невосстановимые резервные копии. Компромиссные ключи означают скомпрометированные резервные копии.
Основные методы хранения
Никогда не хранит ключи шифрования вместе с резервными копиями. Если злоумышленник получает доступ к вашему резервному хранилищу, он также не должен получать ключи:
- Хранить ключи в специальном секретном менеджере (OpenBao - форк Vault с открытой лицензией.)
- Используйте модули безопасности оборудования (HSM) для самых высоких требований безопасности
- Сохранить офлайн копии ключей в защищенных физических местах
- Применение ключевых процедур ротации
Для асимметричного шифрования, частный ключ нуждается в наибольшей защите. Открытый ключ может быть более доступным, поскольку он только шифрует, а не расшифровывает.
Стратегия ротации
Ротирование ключей шифрования ограничивает влияние ключевого компромисса:
- Создание новой пары ключей
- Начните шифровать новые резервные копии с новым ключом
- Сохранить старый частный ключ для восстановления старых резервных копий
- После истечения срока хранения старый ключ больше не нужен
Документ, какая ключевая версия зашифровала каждую резервную копию. Простой подход включает в себя ключевой идентификатор в имени файла:
| |
Процедуры доступа
Что происходит, когда человек с ключевым доступом недоступен? План:
- Несколько человек с ключевым доступом
- Documented procedures for emergency key rerieval
- Регулярное тестирование ключевого доступа различных членов команды
- Обеспечение непрерывности деятельности
Проверка зашифрованных резервных копий
Зашифрованные резервные копии нуждаются в проверке, как и любые другие резервные копии. Вы не можете видеть содержимое без расшифровки, поэтому проверка требует больше шагов.
Проверка расшифровки
Регулярно проверять резервные копии можно расшифровать:
| |
Это подтверждает, что правильный ключ расшифровывает резервную копию, не выполняя полного восстановления.
Полное восстановление
Периодически выполнить полное восстановление зашифрованных резервных копий:
| |
Запланируйте эти тесты минимум на месяц. Ежеквартально приемлем для менее критических систем.
Шифрование резервных переводов
Данные уязвимы во время передачи. Зашифруйте резервные копии в пути, даже если они будут зашифрованы в состоянии покоя.
Безопасная копия с SCP/SFTP
SCP и SFTP используют шифрование SSH для передачи:
| |
Резервный файл уже зашифрован, и SSH добавляет второй слой шифрования во время передачи.
Выбор алгоритма шифрования
Не все шифрование равно. Выбор алгоритма влияет на безопасность и производительность.
Избегайте более старых алгоритмов, таких как DES, 3DES и RC4. Они имеют известные слабости или недостаточную длину ключа.
Соображения
Современные процессоры включают аппаратное ускорение AES (AES-NI). При поддержке оборудования шифрование AES добавляет минимальный накладный — обычно менее 5% к времени резервного копирования.
Проверьте, поддерживает ли ваша система AES-NI:
| |
Без аппаратного ускорения ChaCha20-Poly1305 может быть быстрее. Но большинство серверов, построенных за последнее десятилетие, имеют AES-NI.
Ошибки шифрования
Несколько распространенных ошибок подрывают безопасность резервного шифрования.
Хранение ключей с резервными копиями
Самая распространенная ошибка. Если ключи и резервные копии вместе, шифрование не обеспечивает защиты от компромисса с хранилищем:
| |
Слабые пассфразы
Короткие или предсказуемые пассфразы могут быть взломаны. Для симметричного шифрования используйте длинные случайные фразы или ключевые файлы:
| |
Шифрование для «внутренних» резервных копий
«Это только в нашей внутренней сети» не является достаточной защитой. Внутренние сети скомпрометированы. Инсайдерские угрозы существуют. Зашифруйте все резервные копии независимо от того, где они хранятся.
Завершение
Шифрование резервных копий PostgreSQL защищает ваши данные, когда резервные копии покидают периметр безопасности вашей производственной среды. Реализация может быть такой же простой, как pg_dump через GPG или интегрированной, как с помощью резервного инструмента, который обрабатывает шифрование автоматически.
Начните с подхода, который соответствует вашим нынешним возможностям. Основной сценарий GPG лучше, чем отсутствие шифрования. По мере роста ваших потребностей учитывайте управляемые решения, которые обрабатывают управление ключами и проверку автоматически.
Ключевые моменты, которые нужно помнить: шифруйте перед хранением, обезопасите свои ключи отдельно от резервных копий, регулярно проверяйте, что вы можете расшифровать и восстановить, и документируйте свои процедуры, чтобы ключ не зависел ни от одного человека.
Вы можете поделиться статьей со своими друзьями в социальных сетях, которым может быть интересна эта статья или просто оставить комментарий ниже. Спасибо.