Поэтому я работал на многих рабочих местах в качестве разработчика, и мой уровень доступа к базе данных был различным. У меня обычно нет доступа к производственной базе данных.
Большую часть времени у меня есть доступ к тестовой базе данных, но она меняется. Иногда я могу делать и изменять базу данных и данные по своему усмотрению, но обычно есть другие меры. Как будто я могу иметь доступ только к данным.
Я работал в одном месте, где команда администраторов баз данных управляла бы базами данных, мы не могли вносить изменения вообще, если мы не отправили форму со сценарием sql для их «проверки». Как правило, они не имели ничего общего с самим проектом, поэтому большую часть времени это было просто нажать F5.
Честно говоря, я понимаю, почему prod нужно заблокировать, но я предпочитаю иметь как можно больше доступа к базам данных в средах разработки и тестирования. Я думаю, что большинство разработчиков достаточно способны знать свой путь в базе данных. Но я хотел бы услышать мнения, хотя? Сколько доступа к базе данных должны иметь разработчики? Можно ли нам доверять, чтобы мы ничего не сломали?
Ответы:
Разработчикам необходим доступ на чтение ко всем базам данных, включая prod. Иногда проблема в том, что данные на Prod не соответствуют ожиданиям, и им нужно увидеть данные, которые вызывают проблему, потому что они не могут воспроизвести их на dev.
У разработчиков не должно быть прав на запись производственных данных или прав на создание объектов. Ничто не должно подталкивать к тому, что не является частью официального релиза. Слишком часто люди делают быстрое исправление в prod, которое либо не работает, из-за чего prod становится еще более испорченным или работает, но они забывают поместить код на серверы dev / QA / Staging и, что еще хуже, в исходный код. управляющий репозиторий и код перезаписывается примерно через месяц в следующем официальном выпуске.
Я предпочитаю, чтобы разработчики имели полные права QA для базы данных, потому что развертывание на другом сервере помогает им увидеть, есть ли какие-либо пробелы в их процессе развертывания (упс, забыл, что я изменил эту таблицу, чтобы сделать так, и тому подобное, и я забыл, что я сделал это изменение использование графического интерфейса, а не сценария в управлении исходным кодом, что является причиной любых структурных изменений в базе данных).
Если у вас есть новый клиент корпоративного типа, у которого будет собственный набор серверов, разрешения могут быть ослаблены перед началом работы. Это потому, что так много должно произойти, и те немногие люди, которые могут это сделать, будут задерживаться, а иногда даже должны брать отпуск. В частности, людям, импортирующим данные из другой системы, может быть предложено поместить их в prod перед запуском, если загрузка данных займет много времени. Эти люди, как правило, являются специалистами по данным, и уровень временного доступа к продукту выше, чем у среднего разработчика приложений. Это не роскошь, которую вы имеете при переходе на уже работающий производственный сервер.
Одним из наиболее важных моментов ограничения рабочих прав на базу данных является то, что разработчикам необходимо убедиться, что их работа находится в форме, которую может развернуть кто-то другой. Это имеет тенденцию улучшать качество работы, потому что они не пытаются исправить на лету, потому что они забыли что-то или что-то не работает, потому что они сделали это иначе, чем в dev, когда полагались только на память. Вы также теряете те «упс, я удалил всю пользовательскую таблицу случайно, потому что я забыл выделить случайные ситуации типа« где », когда при развертывании prod используются только сценарии, которые запускаются как целая, а не одна команда за раз, как это обычно бывает при разработке запустить вещи на продукт. Команда с ограниченными правами на базы данных prod, скорее всего, также сохранит изменения базы данных в системе контроля версий.
источник
Ну, это действительно вопрос «вампиры (программисты) против оборотней (сисадминов)», как сказал здесь Джефф Этвуд .
источник
Обычно (это означает, что роскошь заключается в настройке полной среды), разработчик имеет доступ к:
Основная причина, по которой разработчики не должны трогать производственные серверы, заключается в том, что когда что-то идет не так, ответственность несет операционная команда, а не разработчики.
источник
Абсолютный минимум, необходимый для выполнения работы.
Если всем разработчикам предоставлен полный доступ к БД, вероятность того, что один из них разозлится (или пьян, или очень устал, или ...) и нанесет серьезный ущерб, гораздо выше, чем если бы он мог только читать из базы данных.
Если ваша работа в основном может быть выполнена без доступа к записи в БД (и в большинстве случаев я имею в виду не более нескольких запросов на изменение в неделю), то вам действительно не нужен доступ на запись.
источник
Есть 2 конкурирующих желания во всей рабочей среде.
Часть того, что формирует баланс, который достигнут (или должен в любом случае), является ожиданием, установленным для разработчиков. В каждой моей работе разработчики имели доступ ко всему, чего они ожидали от себя. Доступ к системе возможен только в том случае, если вы знаете, что делаете. Это означало, что вы знали, что делаете, как с точки зрения разработчика, так и сисадмина. Если вы не были уверены в какой-либо области, у вас не было бы доступа к системам без кого-то, кто бы вас сопровождал.
Подводя итог, если вы не знаете, у вас не должно быть доступа ни к какой системе, кроме легко перестраиваемых систем разработки . Если вы знаете, чем вы знаете, вы не должны получать доступ ни к какой системе, кроме ваших легко перестраиваемых систем разработки .
источник
Разработчики должны иметь полный доступ к базам данных разработчиков (в идеале они должны работать на локальном сервере, но это не всегда возможно). Они должны иметь доступ к базе данных build / QA, но только к данным (должны получить разрешение / отправить заявку для изменения структуры). У разработчиков никогда не должно быть случайного доступа к производственной базе данных (если это не небольшая компания / проект, а разработчики также не занимаются производственной поддержкой).
источник
Я думаю, что ключевым моментом здесь является уровень ответственности разработчиков. В большой организации с большим количеством разработчиков они, скорее всего, будут иметь доступ только к разработке с доступом только для чтения к QA / Test.
Однако в команде разработчиков должны быть люди с полным доступом ко всем средам. Обычно это человек, ответственный за исправления и т. Д. Хотя это несколько рискованно, это компромисс между тем, насколько вы доверяете разработчику, как быстро вы хотите, чтобы все было исправлено, и рисками, связанными с путаницей в системе или раскрытием информации в системе. ,
Я работал в крупном IT-магазине, и у нас был доступ для чтения к производству для большинства людей. Я, как ведущий разработчик, также имел права доступа к производственной базе данных. Мне все еще приходилось следовать тем же рекомендациям, что и системным администраторам и администраторам баз данных, с точки зрения процесса и документации, но я мог бы также срочно исправить это при необходимости.
источник
Есть связанная с этим проблема, о которой большинство из нас забывают - возможно, мы не единственные, кто использует базу данных! Мы склонны принимать это как должное, но не должны. Даже на небольших сайтах деловые люди могут использовать сторонние инструменты для работы с базами данных для своих отчетов. Корпоративные сайты почти всегда будут иметь несколько пользователей таблиц базы данных, и ваши «небольшие» изменения могут сломать их приложения и наоборот.
Так что это должен быть первый вопрос. Вторым должен быть доступный персонал - я работал на сайтах, где были системные администраторы, которые защищали свой газон, но на самом деле это было не так хорошо. (Возможно, именно поэтому они были настолько территориальными - они знали, что они поймают много тепла, если кто-то оглянется.) Иногда вам нужно иметь больше доступа, чем вы хотели бы.
Но в идеальном мире я согласен с мнением других людей. Я не хочу доступа к оперативным данным, так как, честно говоря, я не хочу ответственности. Подумайте об этом - если у меня есть оперативный доступ и есть нарушение, тогда мне придется потратить много времени, доказывая, что я не имею к этому никакого отношения. Возможно, мне придется показать, что я не искажал данные по личным причинам и т. Д. Многие сайты очень серьезно относятся к конфиденциальности, особенно. правительственные сайты.
Я даже не хочу доступ с правами администратора и записи к системе тестовой группы. Если я не могу что-то сделать в производственной системе, я не хочу делать это в тестовых системах. Доступ для чтения является исключением, поскольку необходимо выяснить, что происходит.
Системы разработки, как индивидуальные, так и ведомственные, - это отдельная история. Но даже здесь, на практике, как правило, лучше всего выполнять все изменения в базе данных через одного человека, вместо того, чтобы каждый делал свое дело.
источник
Я полностью согласен со всеми ответами, говоря «как можно меньше привилегий для разработчиков на базе данных prod». Но, честно говоря, кто может запретить разработчикам доступ к базе данных, если они хотят ее получить. При наличии достаточной воли (будь то преступник или навсегда) они получат необходимый доступ.
Кто может помешать им вставить в приложение простой редактор SQL? Таким образом, они могут использовать базу данных с привилегиями приложения. В большинстве случаев это все, что нужно. Когда база данных настроена надежно, они могут не иметь права создавать или удалять объекты, но они по крайней мере имеют доступ для чтения и записи данных.
Я уже здесь опс люди плачут. Но, честно говоря, вы не полностью контролируете приложение, развернутое в рабочей среде, если только вы сами не пишете его (и даже тогда не думаете о библиотеках). И всем разработчикам, как уже сказала Эрин, вы также несете ответственность за производственную среду, а не только специалистам по эксплуатации. Так что используйте свои привилегии с умом.
источник