Как добавить группу пользователей Active Directory в качестве логина в SQL Server


108

У меня есть приложение .net, которое подключается к SQL Server с помощью проверки подлинности Windows.

Мы не можем использовать аутентификацию SQL Server в приложении. У нас есть много пользователей Active Directory для нашего проекта. Таким образом, мы должны создать отдельную учетную запись для каждого пользователя Active Directory в SQL Server, а не создавать отдельную учетную запись для каждого пользователя AD. Есть ли способ использовать группу пользователей Active Directory в SQL Server?

Ответы:


162

В SQL Server Management Studio перейдите Object Explorer > (your server) > Security > Loginsи щелкните правой кнопкой мыши New Login:

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

Затем в появившемся диалоговом окне выберите типы объектов, которые вы хотите видеть ( Groupsпо умолчанию отключено - отметьте это!), И выберите место, где вы хотите искать свои объекты (например, использовать Entire Directory), а затем найдите свою группу AD. .

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

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

Теперь любой член этой группы AD может войти в SQL Server и использовать вашу базу данных.


Есть ли возможность создавать группы в mysql, как указано выше?
uzay95

2
Спасибо за очень четкий ответ с аннотированными снимками экрана! Я бы хотел, чтобы все ответы были такими ...
NickG

1
@NickG: Я использовал бесплатную Paint.NET для загрузки изображения и вставки закругленных красных прямоугольников
marc_s

7
У меня это не работает. У меня есть группа Windows «DataAccess», членом которой является «UserX». Я создал учетную запись для группы DataAccess и установил отображение пользователя для входа в систему таким образом, чтобы иметь общий доступ, доступ для чтения и записи данных к базе данных. Пользователь не может войти в систему. Если я добавлю пользователя специально и назначу точно такое же разрешение на сопоставление, он сможет войти в систему. Когда я нажимаю «Защищаемые элементы»> «Действующие разрешения» для группы, появляется сообщение «Невозможно выполнить как основной сервер. поскольку принципал GroupName не завершается, этот тип принципала не может быть олицетворен, или у вас нет разрешения. "
Трийнко 05

1
@Tim: имя пользователя - это по-прежнему пользователь, который входит в систему - он просто не имеет разрешения напрямую - как пользователь - но будучи членом той группы, у которой есть разрешения
marc_s

21

Вы можете использовать T-SQL:

use master
GO
CREATE LOGIN [NT AUTHORITY\LOCALSERVICE] FROM WINDOWS WITH
DEFAULT_DATABASE=yourDbName
GO
CREATE LOGIN [NT AUTHORITY\NETWORKSERVICE] FROM WINDOWS WITH
DEFAULT_DATABASE=yourDbName

Я использую это как часть восстановления с рабочего сервера на тестовую машину:

USE master
GO
ALTER DATABASE yourDbName SET OFFLINE WITH ROLLBACK IMMEDIATE
RESTORE DATABASE yourDbName FROM DISK = 'd:\DropBox\backup\myDB.bak'
ALTER DATABASE yourDbName SET ONLINE
GO
CREATE LOGIN [NT AUTHORITY\LOCALSERVICE] FROM WINDOWS WITH
DEFAULT_DATABASE=yourDbName
GO
CREATE LOGIN [NT AUTHORITY\NETWORKSERVICE] FROM WINDOWS WITH
DEFAULT_DATABASE=yourDbName
GO

Вам нужно будет использовать локализованные имена служб в случае немецкой или французской Windows, см. Как создать логин SQL Server для учетной записи службы в неанглийской Windows?


Если вам также нужно установить логин / принципал на уровне базы данных, вот еще один ответ, который я нашел полезным dba.stackexchange.com/a/2578/60876
Agostino

Интересно, можно ли это использовать для предоставления определенной группе активного каталога доступа на чтение к определенной схеме - в псевдо-sql CREATE LOGIN ... WITH DEFAULT_SCHEMAточки ... должны ссылаться на определенную группу объявлений. У нас есть несколько групп, и мы хотим предоставить активной группе каталогов accountantsдоступ к схеме «A», но не к схеме «B» и «C». Точно так же группа «биллинг» должна иметь доступ только к схеме «B». В качестве внешнего интерфейса мы используем доступ MSFT.
surfmuggle

0

Перейдите в SQL Server Management Studio, перейдите в Security, перейдите в Logins и щелкните его правой кнопкой мыши. Появится меню с кнопкой «Новый вход». Там вы сможете добавлять пользователей и / или группы из Active Directory в «разрешения» SQL Server. Надеюсь это поможет


0

Вот мое наблюдение. Я создал логин (только для чтения) для учетной записи пользователя группы Windows (AD), но он демонстративно действует на разных серверах SQL. На серверах SQl, где пользователи не могут видеть базы данных, я добавил проверку определения представления, а также дал доступ к базе данных для выполнения основной базы данных, чтобы избежать ошибки 229. У меня не будет этой проблемы, если я создаю логин для пользователя.


Это можно было бы прокомментировать, а не использовать ответ. Но вы пока не можете комментировать. Так что не хаха ^^
finnmglas
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.