Резервное копирование MySQL без входа в систему для пользователей MySQL

Можно ли сделать резервную копию базы данных в MySQL без использования пользователя MySQL?

Проблема: я хочу сделать систему резервного копирования с использованием ansible, но у меня есть проблема во время резервного копирования базы данных, потому что для выполнения этих резервных копий требуется объявить пользователя и пароль mysql user. Поэтому из соображений безопасности и эффективности я хочу сделать резервную копию без объявления имени пользователя и пароля.

1 ответ

Перво-наперво

  • Никогда не включайте учетные данные в сценарий!

  • Никогда не включайте учетные данные в ваш исходный код или в любой другой репозиторий исходного кода (включая Git-репозиторий, созданный вами специально для учетных данных)!

Вы могли бы сделать это только разумно, при одном из двух условий.

  • В вашей базе данных не было имени пользователя / пароля (очень маловероятно и никогда не сообщалось)
  • Ваша база данных находится в автономном режиме (вы можете клонировать ее с какой-либо копией)

Но, пожалуйста, не делайте этого!

Почему бы и нет?

  • Это не безопасно
  • Это небезопасно
  • Это рискует вашей базой данных и вашим бизнесом без необходимости
  • Ваша база данных почти всегда содержит некоторую конфиденциальную информацию, и вы никогда не должны оставлять ее незащищенной, даже если вы решите не хранить ее в зашифрованном виде.
  • Вы не должны полагаться на отключение базы данных для создания резервной копии. Простои - это просто время, и каждый момент простоя стоит денег и, возможно, клиентов.

Как ваша база данных должна храниться / использоваться на производственном компьютере

  • Должно быть зашифровано, если это возможно
  • Он всегда должен быть защищен надежными именами пользователей и паролями, которые остановят наиболее распространенные атаки на базу данных.
  • Шифрование остановит почти все атаки, кроме самых сложных.
  • Вы можете и должны рассмотреть возможность даже автоматического (регулярного) изменения имени пользователя и пароля для резервного копирования, пока ваша служба работает.

Теперь вы, вероятно, думаете... как вы ожидаете, что я это сделаю? Вы сказали, что я не могу включить учетные данные в сценарий.

Что мне тогда делать?

Вместо этого вы захотите использовать безопасный метод распространения учетных данных, это может быть что-то простое или сложное. Но, как правило, несколько практических правил для службы распространения учетных данных.

  • Учетные данные никогда не должны храниться на диске клиентского компьютера, который их запрашивал, клиенты должны хранить учетные данные только столько времени, сколько необходимо. Кэширование (в памяти) может быть приемлемо для временных периодов времени, когда в противном случае запросы на учетные данные будут очень частыми.
  • Учетные данные должны, по возможности, быть зашифрованы в памяти и не храниться в виде простого текста, каждый клиент может использовать случайный ключ шифрования. Здесь нужно помнить о том, чтобы минимизировать площадь поверхности атаки, так как устранение невозможно.
  • Метод обслуживания / распространения должен быть доступен только авторизованным машинам
  • Служба (и клиенты) должны быть надлежащим образом защищены брандмауэром, в том числе защищены от любых возможных DDOS или известных сетевых атак.
  • Служба должна работать с ожиданием сбоя узла или зоны доступности, должна быть возможность обнаруживать эти проблемы и переходить на другой ресурс при необходимости
  • Используйте подписанные сертификаты сервера и убедитесь, что клиенты всегда проверяют их, вы даже можете выбрать самоподписанный маршрут, так как это всегда должно быть только внутренняя служба
  • Вы можете и должны (если возможно) также использовать подписанные клиентские сертификаты, чтобы помочь ограничить несанкционированные машины от несанкционированного доступа к службе и повысить безопасность (это приятно иметь, некоторые продукты не предлагают этого)
  • Служба должна предоставлять только определенные учетные данные известным авторизованным компьютерам.
  • Служба должна продавать эти учетные данные только по зашифрованным и защищенным каналам, таким как HTTPS (даже во внутренней сети).

Существует множество существующих способов распространения учетных данных в ваших приложениях. Я настоятельно рекомендую использовать то, что уже было проверено и доказано, а не разрабатывать свое собственное по возможности.

Примечание: вы также должны распространять ваши производственные закрытые ключи / сертификаты аналогичным образом. Никогда не включайте их в установочный пакет, репозиторий исходного кода или просто оставляйте их лежащими на машине, когда эта машина фактически не работает. Сценарий запуска может загрузить необходимый сертификат, а при выходе из службы вы можете использовать сценарий завершения работы, чтобы полностью стереть файл закрытого ключа / сертификата. Я не могу сказать, что нужно стереть эти файлы после запуска приложения, так как некоторые приложения перечитывают или блокируют эти файлы во время работы службы.

Примечание 2: Ничто из этого не предназначено для полной остановки атаки или компромисса, эти рекомендации предназначены только для ограничения площади поверхности атаки. Потому что чем больше вещей вы оставляете лежать без дела, тем легче злоумышленникам не только найти их, но и использовать их.

Вот несколько примеров безопасных методов распространения учетных данных.

Другие вопросы по тегам