Какие меры безопасности вы используете, чтобы избежать случайного внесения непреднамеренных изменений в вашу производственную среду?

StackOverflow https://stackoverflow.com/questions/956428

Вопрос

Поскольку у нас нет хорошей промежуточной среды, нам часто приходится отлаживать проблемы в наших производственных системах.У нас есть веб-серверы, серверы приложений и базы данных.

Какие меры безопасности вы используете, чтобы избежать случайного внесения непреднамеренных изменений в вашу производственную среду при этом?


РЕДАКТИРОВАТЬ:

Приложение представляет собой очень сложное вертикальное веб-приложение B2B.Здесь задействовано много данных.Некоторые таблицы содержат около 100 миллионов записей.


РЕДАКТИРОВАТЬ:

Имеющаяся у нас промежуточная среда не способна отразить производство.Помимо самих данных базы данных, здесь также задействованы сотни гигабайт файлов данных.


РЕДАКТИРОВАТЬ:

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

Основными проблемами являются база данных и данные в файловой системе.

Кстати, я консультант в этой компании, а не ее реальный сотрудник.

Это было полезно?

Решение

Самый прямой ответ:«Не делай этого».

Другие советы

управления источником.нет ничего лучше отката назад, когда дела идут непоправимо неправильно.Кроме того, разница может помочь вам реплицировать изменения в другие производственные системы.

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

Мы сохраняем предыдущие выпуски на случай возникновения проблем.

Если что-то сломается (что не должно происходить часто при правильной процедуре тестирования и управляемых выпусках), мы можем либо выполнить откат, либо исправить ситуацию.Часто, когда что-то сломалось в реальном времени и исправление незначительное, мы можем внести исправление, а затем перенести исправление в тестирование, чтобы провести надлежащее тестирование.

Несмотря ни на что, иногда всё проходит...

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

на веб-сервере есть две структуры каталогов, которые зеркально отражают друг друга: одна, в которую может писать только один идентификатор, другая - промежуточный каталог, каждый может писать.

на сервере базы данных имейте одну производственную базу данных, куда может писать только один идентификатор, имейте промежуточную базу данных, куда каждый может писать.промежуточная БД может быть восстановлена ​​из ночной резервной копии.

ОДНАКО, если у вас есть неверный запрос или какой-то ресурс в вашей промежуточной системе, ресурсы будут извлечены из производства, и машина может зависнуть.

Для веб-серверов и серверов приложений я бы попытался скопировать среду в новое место (но в той же среде) и попросить затронутых людей воспроизвести поведение в копии.Это, по крайней мере, даст вам определенный уровень защиты от случайного мошенничества со 100% ваших клиентов.

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

Учетные записи только для чтения/гостевые учетные записи.Серьезно.По той же причине вы не всегда входите в систему как root или администратор.

Это сложная вещь, и она относится к сфере «отсутствия промежуточной среды».

По многим причинам лучше иметь выделенный (дубликат) PROD, который вы можете использовать для поэтапного развертывания... и отладки, но я знаю, что иногда, когда вы только начинаете, это не работает так быстро или полностью, как нам хотелось бы.

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

Что касается предотвращения изменений в PROD во время отладки:есть ли причина, по которой вам нужно что-то изменить, чтобы облегчить отладку?Если да, то, возможно, стоит поискать другой способ решения.

Контроль версий чрезвычайно полезен для контроля изменений в производственной среде — просто сделайте свою производственную среду рабочей копией соответствующего каталога или каталогов из репозитория.Когда вы выпускаете обновление, ваша система контроля версий гарантирует, что ВСЕ измененные файлы будут скопированы.Если обновление что-то ломает, вы можете откатить производственную рабочую копию до последней исправной версии.Кроме того, вы можете проверить свой производственный туалет по бирке, а не из багажника;таким образом вы сможете решить, какие версии репозитория применить к производственной среде, изменив тег.

Если вы не знакомы с концепциями систем контроля версий, я бы посоветовал вам провести небольшое исследование.Они концептуально сложны, но невероятно полезны и мощны.Статья в Википедии — хорошее место для начала:http://en.wikipedia.org/wiki/Revision_control

Извините, вам нужна промежуточная среда.От этого никуда не деться.Если это означает, что вам нужно сократить размер ваших наборов данных, то это то, что вам нужно сделать.Используйте VMware и конвертер VMware для импорта производственных систем во время простоев, если они у вас есть (это многочасовой процесс, поэтому, возможно, он непрактичен).

Существует определенный класс проблем, которые невозможно решить, не имея полного доступа к производственной базе данных (или ее копии), одна из них — производительность.Но вам действительно следует создать промежуточную среду, даже если она находится на чьем-то настольном компьютере с урезанным набором данных.

Помимо этого, в прошлом мне приходилось прожить свою жизнь с некоторыми из них, и на самом деле вы ничего не можете сделать, кроме множества резервных копий.Каждому внесенному вами изменению должно предшествовать инкрементное резервное копирование.Таким образом, если вы что-то проиграли, сумма, которую вы потеряете, будет незначительной.SQL-сервер может создавать дифференциальные резервные копии, что ограничивает объем дискового пространства, используемого для резервных копий.Oracle тоже может.

На случай, если у вас действительно нет другого выбора, и это, скорее всего, хроническая ситуация...рассмотрите возможность добавления к данным приложения (файлам или базе данных) какого-либо способа пометить набор данных как «пожалуйста, Боже, на самом деле не меняйте активно производственное состояние с помощью этих данных», в сочетании с дампами данных в критических позициях процесса, когда этот флаг установлен. активирована, вы сможете реализовать большую часть производственной логики без фактического воздействия на данные.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top