Сколько доступа к базе данных должны иметь разработчики? [закрыто]


16

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

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

Я работал в одном месте, где команда администраторов баз данных управляла бы базами данных, мы не могли вносить изменения вообще, если мы не отправили форму со сценарием sql для их «проверки». Как правило, они не имели ничего общего с самим проектом, поэтому большую часть времени это было просто нажать F5.

Честно говоря, я понимаю, почему prod нужно заблокировать, но я предпочитаю иметь как можно больше доступа к базам данных в средах разработки и тестирования. Я думаю, что большинство разработчиков достаточно способны знать свой путь в базе данных. Но я хотел бы услышать мнения, хотя? Сколько доступа к базе данных должны иметь разработчики? Можно ли нам доверять, чтобы мы ничего не сломали?


6
Возможно, вы хотели спросить: «Сколько доступа к производственной базе данных должны иметь разработчики?»
Mayank

@Mayank Ты ударился ногтем по голове. Всегда должен быть тестовый сервер, чтобы «поиграть» с новыми концепциями. Рабочий сервер должен видеть только исправленные / проверенные / проверенные версии. Я бы сказал то же самое для веб-сайтов (хотя большинство веб-разработчиков не используют один).
Эван Плейс

@Mayank - Да, я хотел бы услышать о доступе к производственным базам данных, но также хотел бы услышать мнения о доступе в различных средах, таких как DEV, INT, TEST, PREPROD и т. Д.
RoboShop

1
Несмотря на то, что он был помечен как дубликат, связанный вопрос programmers.stackexchange.com/questions/246618/… фактически является интересным расширением этого.
Имон Нербонн

Ответы:


16

Разработчикам необходим доступ на чтение ко всем базам данных, включая prod. Иногда проблема в том, что данные на Prod не соответствуют ожиданиям, и им нужно увидеть данные, которые вызывают проблему, потому что они не могут воспроизвести их на dev.

У разработчиков не должно быть прав на запись производственных данных или прав на создание объектов. Ничто не должно подталкивать к тому, что не является частью официального релиза. Слишком часто люди делают быстрое исправление в prod, которое либо не работает, из-за чего prod становится еще более испорченным или работает, но они забывают поместить код на серверы dev / QA / Staging и, что еще хуже, в исходный код. управляющий репозиторий и код перезаписывается примерно через месяц в следующем официальном выпуске.

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

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

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


1
+1 за комментарий о том, что вы забыли положить вещи в систему контроля версий. Я думаю, что независимо от прав доступа и от того, кто выполняет миграцию в различные среды, он должен быть максимально автоматизирован, чтобы гарантировать, что все сборки построены из исходного кода управления. Вы должны сделать все возможное, чтобы максимально ограничить любой процесс, который требует удаленного взаимодействия с сервером, чтобы связываться с кодом или базой данных.
RoboShop

8
«Разработчикам нужен доступ на чтение ко всем базам данных, включая prod», нет-нет, по крайней мере, в моей предыдущей работе. Данные продукта содержат финансовые записи и транзакции клиентов, которые являются конфиденциальными.
Ох,

3
@ ohho, это допустимое исключение, но оно должно сделать действительно трудным устранение проблемы, которую вы не можете немедленно воспроизвести на dev.
HLGEM

7

Ну, это действительно вопрос «вампиры (программисты) против оборотней (сисадминов)», как сказал здесь Джефф Этвуд .


Иди в команду Эдварда, наверное.
Джоэл Этертон

2
@ Джоэл Этертон, для тех из нас, кто еще не видел фильм, какой из них команда Эдвард?
CaffGeek

1
@Chad Хорошо, что вы на самом деле не видели ту «сумеречную» чушь. По крайней мере, вам не придется притворяться, что не видели этого, как я. ;)
Mayank

@Chad: я тоже не видел фильмов, но Эдвард - вампир. Я знаю, что из-за постоянной бомбардировки рекламой Burger King и какой-то дурацкой кампании «купи себе дерьмо, смазывая Сумерки повсюду». Соя и програмадор.
Джоэл Этертон

о, я знаю, это хорошо, я не видел это И я никогда не буду.
CaffGeek

7

Обычно (это означает, что роскошь заключается в настройке полной среды), разработчик имеет доступ к:

  • Производственный сервер
    • Нет (SA / PM будет применяться для настройки схемы, конечный пользователь предоставит данные инициализации)
  • UAT сервер
    • Нет (SA / PM будет применяться для настройки схемы и заполнения образца данных)
  • Тестирование / QA сервер
    • Обычно разработчик отправляет скрипт настройки схемы команде QA, а QA создает таблицы
    • Разработчики имеют полный доступ к базам данных, но редко меняют его
    • Разработчики могут помочь коллегам по обеспечению качества посеять / исправить / удалить некоторые данные
  • Сервер разработки / localhost
    • Полный доступ

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


2
Разработчики всегда несут ответственность, даже если они не могут прикоснуться к системе, это они исправляют ее.
Эрин

2
Если исправление представляет собой изменение в базе данных, ответственность за его создание несет группа разработчиков, а его операционная группа - за ее применение. Кроме того, по соображениям здравого смысла я бы не позволил разработчикам каким-либо образом «изменять» (данные или структуру) среду контроля качества. Любые изменения в этой среде должны контролироваться так же, как и в производственной среде.
Соронтар

2
Если у вас есть операционная команда ...
Marcie

Я бы попросил доступ только для чтения на производственных серверах. Облегчает поиск ошибок.
Карра

@Carra: Это может иметь проблемы с регулированием, поскольку производственные серверы могут иметь данные, которые регулируются законом (например, медицинская система в США должна соответствовать HIPAA). Я никогда не был в таком месте, где кто-либо пытался ограничить мой доступ к конфиденциальным данным в реальном времени, но они, вероятно, существуют.
Дэвид Торнли

2

Абсолютный минимум, необходимый для выполнения работы.

Если всем разработчикам предоставлен полный доступ к БД, вероятность того, что один из них разозлится (или пьян, или очень устал, или ...) и нанесет серьезный ущерб, гораздо выше, чем если бы он мог только читать из базы данных.

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


2

Есть 2 конкурирующих желания во всей рабочей среде.

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

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

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


2

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


1

Я думаю, что ключевым моментом здесь является уровень ответственности разработчиков. В большой организации с большим количеством разработчиков они, скорее всего, будут иметь доступ только к разработке с доступом только для чтения к QA / Test.

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

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


0

Есть связанная с этим проблема, о которой большинство из нас забывают - возможно, мы не единственные, кто использует базу данных! Мы склонны принимать это как должное, но не должны. Даже на небольших сайтах деловые люди могут использовать сторонние инструменты для работы с базами данных для своих отчетов. Корпоративные сайты почти всегда будут иметь несколько пользователей таблиц базы данных, и ваши «небольшие» изменения могут сломать их приложения и наоборот.

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

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

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

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


0

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

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

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.