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

Я хотел бы использовать интегрированную защиту с моим внутренним приложением, которое находится в домене. К сожалению, я никогда не мог заставить это работать хорошо. Я хотел бы назначить всю группу Exchange (Active Directory) роль в SQL Server для доступа к чтению и записи в определенные таблицы. Таким образом, мне не нужно было бы создавать оператора всякий раз, когда кто-либо нанимается или удаляет оператора, когда кто-то уволен. Это возможно? Какие шаги я предприму для этого?

39 голосов | спросил Michael Hedgpeth 7 Mayam11 2011, 05:43:38

4 ответа


45
  • Задайте группу AD как логин. И «login» означает, что вход на уровне сервера не является концепцией пользователя /пользователя AD. В SQL Server говорят, что это главный уровень сервера
  • Создайте подключенного пользователя. Вы не должны разрешать пользователю прямо на таблицы. И «пользователь» означает пользователя базы данных, а не концепцию пользователя AD: в SQL Server говорят, что это «основной уровень базы данных»
  • Добавить пользователя в роль (также «основной уровень базы данных»)
  • Разрешения GRANT для ролей в таблицах (таблица или proc и т. д. является «защищаемой»).

Пример сценария

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 следует использовать .

ответил gbn 7 Maypm11 2011, 12:31:50
4

Предоставление разрешений в SQL Server для группы AD относительно просто. Это можно сделать либо через T-SQL, либо Management Studio.

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

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

* С точки зрения безопасности, чтобы конкретный пользователь мог видеть некоторые конкретные данные, вы могли бы создать процедуру и предоставить пользователю выполнить разрешение на эту процедуру, и больше ничего. Разрешение прямого запроса пользователя означает предоставление разрешения select для всех задействованных таблиц. Также проще работать с процедурами и легче отлаживать.

Сохранение скрытых табличных процедур и ограничение доступа. Для типов DBA это похоже на «дайте мне увидеть все ваши переменные экземпляра: я не хочу использовать методы, геттеры или сеттеры».

ответил Peter Schofield 7 Maypm11 2011, 12:00:34
2

От marc_s отвечает « Как добавить группу пользователей Active Directory в качестве входа в SQL Server »:

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

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

<p> Затем в появившемся диалоговом окне выберите типы объектов, которые вы хотите просмотреть (<code>Группы</code> отключен по умолчанию - проверьте это!) и выберите место, где вы хотите найти (например, используйте <code>Целый каталог</code>), а затем найдите свою группу AD. </p>

<p> <img src =

ответил Even Mien 1 MaramTue, 01 Mar 2016 07:53:43 +03002016-03-01T07:53:43+03:0007 2016, 07:53:43
1

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

ответил Piyush Agrawal 29 FebruaryEurope/MoscowbWed, 29 Feb 2012 16:25:20 +0400000000pmWed, 29 Feb 2012 16:25:20 +040012 2012, 16:25:20

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132