Запуск SQL Server 2005 и 2008 в Windows 2008 R2.
Мы собираемся уменьшить привилегии в производстве для разработчиков - и я хотел бы сделать то же самое для себя, как администратор БД , ограничивая права на производство и повышая права при необходимости .
Моей основной целью было бы устранить глупые ошибки - допущенные администраторами баз данных , у разработчиков больше всего будет доступ к чтению на производстве. Нам нравится действовать так, как будто мы супергерои, которые не могут ошибиться, но не имея постоянных прав на производство, имеет смысл, и это лучшая практика, рекомендованная некоторыми.
Какой лучший подход? Что будет наименее болезненно использовать изо дня в день и во время установки?
В настоящее время у нас есть группа окон для администраторов баз данных, которая имеет права на все наши серверы и базы данных.
Я также был бы заинтересован в снижении разрешений ОС / удаленного входа в систему - но меня больше всего интересуют права БД.
Я предполагаю, что нам понадобятся привилегированные привилегированные пользователи для запуска трассировки как sa и, возможно, для некоторой очистки прав собственности, прежде чем мы отнимем права SA нашего старого логина. Какие еще проблемы мы можем ожидать?
Спасибо за ваш совет и обмен опытом!
PROD
желтыми буквами. Потому что в моем многолетнем опыте «меры безопасности», которые просто раздражают людей, просто обойдутся, а когда случится кризис, они просто замедлят вас. Вы действительно не хотите быть в положении, когда вам нуженsa
аккаунт, и никто не может вспомнить пароль ...Ответы:
В идеале, для рабочей производственной базы данных вам не нужно, чтобы разработчики имели какой-либо доступ к серверу или какой-либо базе данных на нем вообще. Подобные вещи - одно из первых, что вам нужно сделать для соответствия 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
источник
Во-первых, я предлагаю вам выполнить всю игру с привилегиями в среде разработки или QA, где нет проблем, если доступ будет удален в течение некоторого времени. Вам нужно будет проверить, не возникнет ли у приложений проблем с безопасностью.
Я расскажу вам наш внутренний подход:
все приложения используют одного пользователя домена, которому предоставлены необходимые разрешения для базы данных (обычно роль базы данных db_owner).
для случайного чтения данных мы используем логин SQL. Для этого пользователя мы назначаем роль базы данных - db_datareader. На этом доступ для разработчиков на основном кластере базы данных заканчивается. Для любой другой идеи они будут использовать базы данных сервера отчетов, которые являются копиями (выполненными с использованием Log Shipping) баз данных основного сервера, сделанными в полночь. Чтобы не убивать сервер отчетов с помощью специальных запросов-убийц, мы используем выделение групп ресурсов для памяти и процессора.
для команды DBA у нас есть доменная группа, которая имеет все привилегии на машине и на сервере (admin на машине с windows и sysadmin на сервере sql)
для установок у нас есть пользователь SQL, который является db_owner для баз данных, которые мы используем при запуске обновлений - мы используем триггеры DDL для мониторинга изменений схемы, и мы должны видеть, какие изменения были сделаны во время установки или как отдельное изменение
Есть некоторые случайные исключения для опытных разработчиков, но после того, как их потребности удовлетворены, мы удаляем их доступ - они получают разрешения на основе их входа в домен, поэтому мы можем отслеживать соединения в представлениях трассировки / ddl и любые возможные изменения с помощью триггеров ddl.
Что касается способа выполнения всей этой работы с именами входа и пользователями - в Management Studio в папке безопасности сервера вы создаете все необходимые имена входа, а затем связываете их с базами данных и назначаете им необходимые им роли. Если вы выполните сценарий действия, вы увидите, что первоначально будет создан логин сервера, затем пользователь базы данных, подключенный к этому логину, затем назначит роль базы данных для этого пользователя. Вы можете сохранить сценарий в своем наборе сценариев, чтобы вы могли каждый раз проверять, какие пользователи должны быть активными и активными, а какие - нет.
источник
На сервере SQL вы можете создать пользователя базы данных и назначить ему
database role
права доступа чтение / запись / владение. После того, как пользователь перенесен в рабочую среду, вы можете перейти к пользователю базы данных, который был перенесен, и отменить проверку ролей, которые вы не хотите иметь. Например, предположим, что пользователь stan является членом db_owner (владелец базы данных) в тесте. После переноса пользовательского stan в рабочий режим вы можете вывести его из db_owner и назначить ему только роль db_datareader (только для чтения).В SQL 2005+ более детальный контроль может быть выполнен с помощью
schema
. Проверьте эту ссылку на схеме для более подробной информации.источник