Як призначити весь доступ до безпеки групи Active Directory у SQL Server 2008?


40

Я хотів би використовувати інтегровану безпеку зі своїм внутрішнім додатком, який є всім у домені. На жаль, мені ніколи не вдалося змусити це добре працювати. Я хотів би призначити цілій групі Exchange (Active Directory) роль у SQL Server для доступу для читання / запису до певних таблиць. Таким чином, мені не доведеться створювати оператора, коли когось наймають або видаляють оператора, коли когось звільняють. Чи можливо це? Які кроки я б здійснив для цього?

Відповіді:


48
  • Встановіть групу AD як логін. А "вхід" означає вхід на серверному рівні, а не концепція AD користувача / login. У SQL Server говорять, це основний рівень сервера
  • Створіть зіставленого користувача в. Не слід насправді дозволити користувача безпосередньо на таблицях. А "користувач" означає користувач бази даних, а не поняття AD користувача: у SQL Server говорять, це "принцип рівня бази даних"
  • Додайте користувача до ролі (також "головний рівень бази даних")
  • ВИКОРИСТАННЯ дозволів на ролі в таблицях (таблиця або процесор тощо - це "безпечна")

Зразок сценарію

USE master;
GO
CREATE LOGIN [MYDOMAIN\APPLICATION SUPPORT] FROM WINDOWS;
GO
USE mydb;
GO
CREATE USER [MYDOMAIN\APPLICATION SUPPORT] FROM LOGIN [MYDOMAIN\APPLICATION SUPPORT];
GO
CREATE ROLE rSupport;
GO
EXEC sp_addrolemember 'rSupport', 'MYDOMAIN\APPLICATION SUPPORT';
GO
GRANT SELECT, INSERT,UPDATE, etc ON Mytable TO rSupport;
GO

sp_addrolememberзастаріло, починаючи з SQL Server 2012, де його ALTER ROLEслід використовувати.


3
Було б корисно пояснити, чому слід призначати дозволи до ролей замість користувачів SQL (у цьому випадку групи AD).
Дрю Шапін

Можливо, ви маєте на увазі "створити користувача [...] для входу [...]", а не "з входу"?
Агостіно

СТВОРИТИ КОРИСТУВАЧ ... ДЛЯ ВХОДУ ...; і СТВОРИТИ КОРИСТУВАЧ ... З ВХОДУ ...; обидва працюють для мене (MSSQL2016). Не впевнені, чи є різниця?
Інженер, що

Ні, обидва дійсні docs.microsoft.com/en-us/sql/t-sql/statements/…
gbn

4

Надання дозволу в межах SQL Server групі AD досить просто. Це можна зробити через T-SQL або Management Studio.

Наприклад, якщо у вас викликана група AD MYDOMAIN\APPLICATION SUPPORT, ви б створили логін на рівні сервера, а потім використовували відображення для окремих баз даних, щоб дати трохи більш детальні дозволи, такі як зчитувач даних.

В ідеалі весь доступ до додатків повинен здійснюватися через збережені процедури *, тому потрібно виконувати лише дозволи на ті збережені процедури в цій базі даних.

* З точки зору безпеки, щоб дозволити конкретному користувачеві бачити певні конкретні дані, ви можете створити процедуру і надати користувачеві право на виконання дозволу на цю процедуру, і нічого іншого. Дозвіл користувача на запит безпосередньо означатиме надання дозволу на вибір для всіх задіяних таблиць. Так само простіше працювати з процедурами і простіше налагоджувати.

Збережені процедури абстрактного доступу до таблиці та обмеження доступу. Для типів DBA це як "дозвольте мені побачити всі ваші змінні екземпляра: я не хочу використовувати методи, геттери або сетери".


3

З відповіді marc_s "Як додати групу користувачів Active Directory як логін в SQL Server" :

У студії управління SQL Server перейдіть до Object Explorer > (your server) > Security > Loginsта клацніть правою кнопкою миші New Login:

введіть тут опис зображення

Потім у діалоговому вікні, що з'являється, виберіть типи об’єктів, які ви хочете бачити ( Groupsза замовчуванням вимкнено - перевірте це!) Та виберіть місце, де ви хочете шукати ваші об’єкти (наприклад, використання Entire Directory), а потім знайдіть свою групу AD .

введіть тут опис зображення

Тепер у вас є звичайний вхід на SQL Server - як і під час створення одного користувача AD. Дайте цьому новому входу права доступу до потрібних йому баз даних, і ви перейдете!

Тепер будь-який учасник групи AD може увійти до SQL Server та використовувати вашу базу даних.


2
Посилання на цю відповідь, ймовірно, корисне, але ви не додаєте нічого нового в публікацію, чи не так? Ви могли просто опублікувати посилання як коментар.
Андрій М

2
У відповіді є приємний знімок екрана для перевірки груп під типом об’єкта, оскільки саме цього мені не вистачало, коли я намагався це зробити. Посилання на мою думку не відображає це настільки корисно. Просто намагаюся допомогти наступній людині ...
Навіть Мієн

Що ви маєте на увазі? Зазвичай посилання є для того, щоб перейти за ним, і кожен, хто перейшов за посиланням, побачив би приємний знімок екрана, про який ви говорите, а також все інше, що ви перепублікували тут. Але не збираюся сперечатися, просто даю вам знати, що моя думка не змінилася: посилання (у коментарі) буде так само добре.
Андрій М

4
Моя думка також незмінна. Посилання в коментарі не передає такої ж інформації, як фактичне зображення на веб-сторінці. "Покажіть, не кажіть."
Навіть Міен

1

Якщо користувач є членом DOMAIN \ SecurityGroup, який має повноваження Sysadmin у SQL, це буде використано під час доступу до баз даних. В іншому випадку вам потрібно подивитися, які DOMAIN \ SecurityGroup (и) мають повноваження у кожній базі даних. Якщо користувач є членом 2 SecurityGroups, при цьому SecGroupA має повноваження для вибору, а SecGroupB має повноваження для вставки, тоді він може вибрати та вставити.

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