Любые указания по снижению моих привилегий в производстве, но не усложняющие мою работу

9

Запуск SQL Server 2005 и 2008 в Windows 2008 R2.

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

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

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

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

Я также был бы заинтересован в снижении разрешений ОС / удаленного входа в систему - но меня больше всего интересуют права БД.

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

Спасибо за ваш совет и обмен опытом!

Сэм
источник
Какую платформу (ы) базы данных вы используете (SQL Server, Oracle, DB2, MySQL и т. Д.)? Вы говорите о привилегиях базы данных? Или права операционной системы?
Джастин Кейв
Это поможет, а? SQL Server 2005/2008. Интересует как БД, так и ОС прив.
Сэм
О каких глупых ошибках мы здесь говорим? Единственный наиболее ценный механизм безопасности, который я обнаружил, - это установить фон рабочего стола на всех производственных машинах красным с PRODжелтыми буквами. Потому что в моем многолетнем опыте «меры безопасности», которые просто раздражают людей, просто обойдутся, а когда случится кризис, они просто замедлят вас. Вы действительно не хотите быть в положении, когда вам нужен saаккаунт, и никто не может вспомнить пароль ...
Гай
Да, мой рабочий стол установлен на красный на серверах и зеленый на dev. В основном я думаю об ошибках модификации данных в SSMS.
Сэм

Ответы:

2

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

Для рода право, UserIds бежать под землей, только права , которые они действительно должны иметь это db_datareader, db_datawriterи явный GRANT EXECUTE ON x TO y(для каждого сохраненного прока и пользовательской функции xдля идента y).

Если вам нужно запустить трассировку на производстве, у вас есть некоторые проблемы, и вам понадобится Great Wall of Text ™, чтобы объяснить все это. Моя первая рекомендация - иметь среду QA, которая заблокирована точно так же, как и производство, и, если нужно запустить трассировку, восстановите резервную копию prod db в QA и запустите трассировки там. Опять же, если у вас есть требования SOX, HIPAA или PCI-DSS , тогда вам лучше санировать данные продукта, прежде чем восстанавливать его в QA.

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

Дайте им войти и просматривать права на данные; однако для выполнения обязанностей DBAly используйте отдельный логин с повышенными привилегиями. Я знаю одного финансового клиента, который делает это - обычные логины на основе проверки подлинности Windows были ограничены в ущерб, который они могли непреднамеренно сделать. Восстановление и запуск DML требует запуска с отдельным входом для аутентификации SQL.

Одно государственное учреждение, с которым я работал, использовало 2 отдельных входа для каждого администратора сервера / базы данных. Так что, если бы у Tangurenaменя был логин в домене (у этого логина были бы постоянные Userпривилегии), то TangurenaAdminбыл бы мой отдельный Administratorлогин. Вы попадете в беду, если будете использовать свою учетную запись администратора все время, но тогда у нее нет прав доступа к другим вещам (например, нет электронной почты. О, вы говорите, что, как будто это плохо ... ).

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

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

Я предполагаю, что нам нужны повышенные привилегии, чтобы запустить

Нет. Вам нужны только разрешения ALTER TRACE:
http://msdn.microsoft.com/en-us/library/ms187611.aspx

Tangurena
источник
Пожалуйста, прочитайте жирный раздел в вопросе.
Сэм
Спасибо за хороший ответ и подробности из вашего прошлого. Очень признателен.
Сэм
Возможно, вы имеете в виду ALTER TRACE?
Сэм
@Sam, исправлено ....
Tangurena
3

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

Я расскажу вам наш внутренний подход:

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

  • для случайного чтения данных мы используем логин SQL. Для этого пользователя мы назначаем роль базы данных - db_datareader. На этом доступ для разработчиков на основном кластере базы данных заканчивается. Для любой другой идеи они будут использовать базы данных сервера отчетов, которые являются копиями (выполненными с использованием Log Shipping) баз данных основного сервера, сделанными в полночь. Чтобы не убивать сервер отчетов с помощью специальных запросов-убийц, мы используем выделение групп ресурсов для памяти и процессора.

  • для команды DBA у нас есть доменная группа, которая имеет все привилегии на машине и на сервере (admin на машине с windows и sysadmin на сервере sql)

  • для установок у нас есть пользователь SQL, который является db_owner для баз данных, которые мы используем при запуске обновлений - мы используем триггеры DDL для мониторинга изменений схемы, и мы должны видеть, какие изменения были сделаны во время установки или как отдельное изменение

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

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

Мэриан
источник
Пожалуйста, перечитайте вопрос. Никто из вас даже близко не подходит.
Сэм
Я бы сказал, что мы ответили по этому вопросу, потому что только сильная политика будет держать вас в безопасности. Даже вы, как администратор базы данных, сможете узнать, что вы сделали и когда. Для обычных операций используйте своего пользователя или пользователя только для чтения, для целей установки используйте конкретного пользователя, для разработчиков - только пользователя только для чтения, для общего мониторинга действий - триггеры и трассировки DDL. Что не так в этой линии действий? Я не думаю, что есть какой-либо способ автоматизировать повышение привилегий, как вам кажется. Такое использование есть даже в операционных системах, пользователи с низкими привилегиями для обычных операций и пользователи с высокими правами на действия администратора.
Marian
0

На сервере SQL вы можете создать пользователя базы данных и назначить ему database role права доступа чтение / запись / владение. После того, как пользователь перенесен в рабочую среду, вы можете перейти к пользователю базы данных, который был перенесен, и отменить проверку ролей, которые вы не хотите иметь. Например, предположим, что пользователь stan является членом db_owner (владелец базы данных) в тесте. После переноса пользовательского stan в рабочий режим вы можете вывести его из db_owner и назначить ему только роль db_datareader (только для чтения).

В SQL 2005+ более детальный контроль может быть выполнен с помощью schema. Проверьте эту ссылку на схеме для более подробной информации.

StanleyJohns
источник
Пожалуйста, прочитайте жирный раздел в вопросе.
Сэм