Як оновити групу безпеки AD на правах доступу до сервера Sql


12

Я використовую Sql Server 2008 на Small Business Server 2003; клієнт використовує WinXP.

Я додав користувача до своєї групи безпеки Active Directory; Чому цей користувач не може негайно отримати доступ до бази даних? Здається, існує затримка, перш ніж користувач розпізнається в Sql Server.

Я використовую Групи безпеки AD для дозволів прямо, щоб мені не потрібно додавати окремих користувачів у сервер Sql. Тож ефективно мені нічого не потрібно робити, окрім як додавати користувача до групи безпеки AD, щоб надати доступ.

Але чомусь Sql Server не відразу розпізнає додаток. Я бачив це не раз. Я додаю користувача до групи, але він не може отримати доступ до даних до наступного дня. Здається, що він не запитує Active Directory у режимі реального часу. Чи можете ви підтвердити, що це так?

Що мені потрібно зробити, щоб сервер Sql "оновив" список користувачів з Active Directory?


У студії управління SQL Server 2008 я додав логін для сервера за допомогою групи безпеки і в базі даних створив користувача, відображений у цьому вході. Це чудово працює!
D_Bester

Однак після того, як я додав нового користувача до групи безпеки, він не зміг отримати доступ до зазначеної бази даних. Цей користувач має доступ до сервера за допомогою іншої групи, тому просто тестування підключення до сервера Sql спрацювало чудово. Я додав з'єднання до сервера Sql для користувача (на своєму комп’ютері). Коли я вказав базу даних, я хотів сказати, що база даних недоступна.
D_Bester

Точка перевірки різних контролерів домену Я бачу, що реплікація дійсно закінчена через 15 хвилин, але SQL ігнорує нового користувача до групи AD. Перезапуск сервера SQL вирішує проблему, тому чекає 24 години. Повинно бути кращим способом.
Аарон Аусет

Відповіді:


12

Користувачеві потрібно вийти зі своєї робочої станції та увійти знову. Ось чому зміни, начебто, набувають чинності наступного дня. Причиною цього є те, що коли користувач здійснює реєстрацію на наступний день, він отримує новий маркер від контролера домену, і цей маркер містить список груп доменів, до яких вони входять. Цей маркер із переліком груп доменів оновлюється лише тоді, коли користувач увійде на свій комп’ютер, тому якщо користувач ніколи не виходитиме з нього, маркер ніколи не оновлюється.

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


1
Чи є команда чи сценарій, який можна запустити на робочій станції, щоб "оновити" свій маркер AD, щоб він міг "знати", що користувач зараз є членом нової групи доменів, і таким чином уникнути затримки? - Оновлення: здається, що одна особа, рекомендована klist purgeна dba.stackexchange.com/a/44922/29371 , але з застереженням, що це може зламати інші кешовані доступні ресурси, які користувачеві доведеться відновити / відновити підключення.
NateJ

@mrdenny Будь-які рекомендації щодо вирішення цього питання для облікових записів послуг? Ми запускаємо всі екземпляри SQL під обліковими записами служб і використовуємо ці облікові записи служб для з'єднань між SQL-серверами та SSRS тощо. У будь-який момент ми маємо безліч з'єднань між машинами. Ми не можемо відключити всі з'єднання та зробити новий логін десь, щоб отримати нову інформацію про групу AD.
SomeGuy

Що стосується облікових записів сервісів, все, що ви можете зробити, це перезапустити послугу на пристрої, який потребує нових прав.
mrdenny

5

Коли користувач входить у систему, йому присвоюється маркер безпеки, який включає всю інформацію про членство в групі.

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

Ви можете відтворити той самий сценарій, наприклад, призначаючи дозволи, наприклад, у файловій системі; це поведінка AD, а не поведінка SQL Server.


1

Таким чином, ви отримаєте негайний результат - щоразу отримувати нові облікові дані, запускаючи cmd / script на зразок:

runas /netonly /user:domain\username "sqlcmd -S serverName -d dbname -q \"insert into testpermissions values (65)\""

за допомогою cmd.exe (не powershell, я не зміг отримати правильне цитування).

Таким чином, ви будете отримувати новий маркер кожного разу (але вводити свій pwd). Можливо, ви могли б зробити щось із збереженим текстом пароля, якби речі були занадто обтяжливими.

У будь-якому випадку, працює для мене, і я сподіваюся, що це допоможе комусь іншому.

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