Будь-які вказівки на скорочення моїх пільг у виробництві, але не роблячи мою роботу надмірно складною


9

Запуск SQL Server 2005 та 2008 на Windows 2008 R2.

Ми збираємось знижувати пільги у виробництві для розробників - і я хотів би зробити те саме для себе, як DBA , обмежуючи права на виробництво та підвищуючи при необхідності .

Моєю основною метою було б усунути дурні помилки - допущені DBA , прихильники матимуть максимум доступ до читання у виробництві. Нам подобається діяти так, як ми - супергерої, які не можуть помилитися, але не маючи виробничих прав весь час має сенс, і це найкраща практика, яку рекомендують деякі.

Який найкращий підхід? Що буде найменш болісно використовувати день у день та під час встановлення?

В даний час у нас є група Windows для DBA, яка має права на всі наші сервери та бази даних.

Мені також було б цікаво знизити дозволи на ОС / віддалений вхід, але мене найбільше хвилює права БД.

Я здогадуюсь, що нам знадобляться підвищені приватні приватні особи, щоб відстежувати сліди, як, можливо, і чистити власність до того, як ми відіб’ємо права на старий вхід у систему. Які ще проблеми ми можемо очікувати?

Дякуємо за пораду та ділимось своїм досвідом!


Яку платформу баз даних ви використовуєте (SQL Server, Oracle, DB2, MySQL тощо)? Ви говорите про привілеї до бази даних? Або привілеї операційної системи?
Джастін Печера

Це допомогло б, так? SQL Server 2005/2008. Цікавлять і приватні особи, і DB, і ОС.
Сем

Про які дурні помилки ми говоримо тут? Найбільш цінний механізм безпеки, який я знайшов, - це встановити фон робочого столу на всіх виробничих машинах червоним кольором PRODжовтими літерами. Тому що в моєму багаторічному досвіді заходи безпеки, які просто роздратують людей, будуть просто працювати, а коли настане криза, просто сповільнить вас. Ви дійсно не хочете опинитися в тому становищі, де вам потрібен saобліковий запис, і ніхто не може запам’ятати пароль ...
Gaius

Так, у мене на робочому столі встановлений червоний колір на серверах і зелений на програвачі Dev. В основному я думаю про помилки модифікації даних у SSMS.
Сем

Відповіді:


2

В ідеалі для операційної бази даних ви не хочете, щоб розробники взагалі мали доступ до сервера або будь-якої бази даних на ньому. Така річ - одне з перших, що вам доведеться зробити для дотримання SOX .

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

Якщо вам потрібно знайти сліди у виробництві, у вас є деякі проблеми, і для цього знадобиться Велика стіна тексту ™. Перша моя рекомендація - створити середовище якості, яке буде заблоковано так само, як і виробництво, і якщо слід запустити сліди, відновіть резервну копію prod db до QA та запустіть сліди там. Знову ж таки, якщо у вас є вимоги до SOX, HIPAA або PCI-DSS , тоді вам краще оздоровити дані продукту, перш ніж відновити його до QA.

В даний час у нас є група Windows для DBA, яка має права на всі наші сервери та бази даних.

Надати їм вхід та перегляд прав на дані; однак для виконання обов'язків DBAly використовуйте окремий логін із підвищеними привілеями. Я знаю одного фінансового клієнта, який робить це - регулярні реєстрації на основі автентичності Windows були обмежені в збитку, який вони могли ненароком зробити. Відновлення та запуск DML, необхідного для роботи з окремим входом для автентифікації SQL.

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

Поточне урядове агентство, з яким я працюю, має кожного адміністратора сервера / db, який має привілеї, підвищені вище, ніж стандартний користувач, але не зовсім адміністратор (вважайте це PowerUserгрупою). Функції адміністратора домену виконуються за допомогою спільного облікового запису адміністратора домену.

Поширена помилка полягає у відновленні неправильної бази даних (наприклад, QA, відновленої на виробничому сервері), і це не вирішиться через обмежені права чи кілька входів. Робити в парі потенційно руйнівні речі - це один із способів мінімізувати ризики.

Я здогадуюсь, що нам знадобляться підвищені приватні особи, щоб пропустити сліди

Ні. Вам потрібні лише дозволи ALTER TRACE:
http://msdn.microsoft.com/en-us/library/ms187611.aspx


Прочитайте жирний розділ у питанні.
Сем

Дякуємо, що надали хорошу відповідь - та конкретику вашого минулого. Цінується.
Сем

Ви маєте на увазі ЗАЛИШУВАННЯ ТРАСУ?
Сем

@Sam, виправлено ....
Tangurena

3

Спочатку я пропоную вам виконувати всю програму привілеїв у середовищі розробки або якості, де немає проблем, якщо доступ буде видалено на деякий час. Вам потрібно буде перевірити, чи не буде у додатків проблем із безпекою.

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

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

  • для періодичного читання даних ми використовуємо логін SQL. Для цього користувача ми призначаємо роль бази даних - db_datareader. Тут і закінчується доступ розробників до основного кластеру баз даних. Для будь-якої іншої ідеї, яку вони мали б, вони використовуватимуть бази даних сервера звітів, які представляють собою копії (зроблені за допомогою журналу доставки) основних баз даних сервера, зроблені опівночі. Щоб не вбивати сервер звітності спеціальними запитами вбивць, ми використовуємо розподіли груп ресурсів для пам'яті та процесора.

  • для команди DBA у нас є доменна група, яка має всі привілеї на машині та сервері (адміністратор на машині Windows та sysadmin на сервері sql)

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

  • Існують деякі випадкові винятки для досвідчених розробників, але після того, як їхня потреба буде виконана, ми видаляємо їх доступ - вони отримують дозволи на основі входу в домен, тому ми можемо відстежувати з'єднання в режимах простеження / ddl та будь-які можливі зміни за допомогою тригерів ddl.

Що стосується способу виконання всього, що працює з логінами та користувачами - у програмі Management Studio в папці безпеки сервера ви створюєте всі необхідні логіни, а потім, ви пов'язуєте їх зі своїми базами даних та надаєте їм необхідні ролі. Якщо ви скриптуєте дію, ви побачите, що спочатку буде створено логін сервера, потім користувач бази даних, підключений до цього логіна, потім призначить для цього користувача роль бази даних. Ви можете зберігати сценарій у своєму наборі сценаріїв, щоб ви могли кожен раз перевіряти, які користувачі повинні жити та бити, а які - не.


Перечитайте запитання. Ніхто з вас навіть не віддаляється близько.
Сем

Я б сказав, що ми відповіли на тему, тому що тільки сильна політика захистить вас. Навіть ви, як DBA, зможете знати, що ви робили і коли. Для звичайних операцій використовуйте свого користувача або користувача лише для читання, для встановлення використовуйте конкретного користувача, для розробників - лише користувача, який читає, для моніторингу загальних дій - тригери DDL та сліди. Що не так у цій дії? Я не думаю, що існує якийсь спосіб автоматизувати підвищення привілеїв, як вам здається, ви хочете. Навіть операційні системи мають таке використання, користувачі з низькими привілеями для звичайних операцій та користувачі з великим потенціалом для дій адміністратора.
Мар’ян

0

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

У SQL 2005 р. І більше можливо детальне управління за допомогою schema. Перевірте це посилання на схемі для отримання більш детальної інформації.


Прочитайте жирний розділ у питанні.
Сем
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.