Jak przypisać cały dostęp do bezpieczeństwa grupy Active Directory w SQL Server 2008?

40

Chciałbym zastosować zintegrowane zabezpieczenia z moją wewnętrzną aplikacją, która jest w domenie. Niestety, nigdy nie byłem w stanie sprawić, żeby działał dobrze. Chciałbym przypisać całej grupie Exchange (Active Directory) rolę w SQL Server dla dostępu do odczytu / zapisu do niektórych tabel. W ten sposób nie musiałbym tworzyć operatora, gdy ktoś jest zatrudniony, ani usuwać operatora, gdy ktoś jest zwolniony. czy to możliwe? Jakie kroki bym to zrobił?

Michael Hedgpeth
źródło

Odpowiedzi:

48
  • Ustaw grupę AD jako login. „Logowanie” oznacza logowanie na poziomie serwera, a nie koncepcję AD użytkownika / logowania. W SQL Server Speak jest to główny poziom serwera
  • Utwórz zmapowanego użytkownika w. Tak naprawdę nie powinieneś zezwalać użytkownikowi bezpośrednio na tabele. A „użytkownik” oznacza użytkownika bazy danych, a nie AD użytkownika: w SQL Server mówimy, że jest to „główny poziom bazy danych”
  • Dodaj użytkownika do roli (także „główny poziom bazy danych”)
  • PRZYZNAJ uprawnienia do ról w tabelach (tabela lub proc itp. Jest „zabezpieczalny”)

Przykładowy skrypt

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_addrolememberjest przestarzałe, począwszy od SQL Server 2012, gdzie ALTER ROLEnależy go użyć.

gbn
źródło
3
Pomocne byłoby wyjaśnienie, dlaczego należy przypisywać uprawnienia do ról zamiast użytkowników SQL (w tym przypadku grup AD).
Drew Chapin
Może oznaczać „utworzyć użytkownika [...] do logowania [...]”, zamiast „z logowania”?
Agostino,
UTWÓRZ UŻYTKOWNIKA ... DO LOGOWANIA ...; i UTWÓRZ UŻYTKOWNIKA ... Z LOGOWANIA ...; oba działają dla mnie (MSSQL2016). Nie jesteś pewien, czy jest jakaś różnica?
Odwrócony inżynier
4

Udzielanie uprawnień w programie SQL Server grupie AD jest stosunkowo proste. Można to zrobić za pomocą T-SQL lub Management Studio.

Na przykład, jeśli masz grupę AD o nazwie MYDOMAIN\APPLICATION SUPPORT, utworzysz login na poziomie serwera, a następnie użyjesz mapowania do poszczególnych baz danych, aby dać nieco bardziej szczegółowe uprawnienia, takie jak czytnik danych.

W idealnym przypadku dostęp do wszystkich aplikacji powinien odbywać się za pośrednictwem procedur przechowywanych *, dlatego wymagane są tylko uprawnienia do wykonywania tych procedur przechowywanych w tej bazie danych.

* Z punktu widzenia bezpieczeństwa, aby konkretny użytkownik mógł zobaczyć określone dane, możesz utworzyć procedurę i udzielić użytkownikowi uprawnienia do wykonania tej procedury i nic więcej. Zezwolenie użytkownikowi na bezpośrednie wysyłanie zapytań oznaczałoby przyznanie uprawnień do wyboru wszystkim tabelom. Łatwiej jest również pracować z procedurami i łatwiej debugować.

Procedury składowane abstrahują od dostępu do tabeli i ograniczają dostęp. W przypadku typów DBA jest to jak „pokaż mi wszystkie zmienne instancji: nie chcę używać metod, pobierających ani ustawiających”.

Peter Schofield
źródło
3

Od marc_s odpowiadającego „Jak dodać grupę użytkowników Active Directory jako login w SQL Server” :

W SQL Server Management Studio przejdź do Object Explorer > (your server) > Security > Loginsi kliknij prawym przyciskiem myszy New Login:

wprowadź opis zdjęcia tutaj

Następnie w wyskakującym oknie dialogowym wybierz typy obiektów, które chcesz zobaczyć ( Groupsdomyślnie jest wyłączone - zaznacz!) I wybierz lokalizację, w której chcesz szukać swoich obiektów (np. Użyj Entire Directory), a następnie znajdź grupę AD .

wprowadź opis zdjęcia tutaj

Masz teraz regularne logowanie do SQL Server - tak jak podczas tworzenia jednego użytkownika AD. Daj temu nowemu loginowi uprawnienia do baz danych, których potrzebuje, i gotowe!

Każdy członek tej grupy AD może teraz zalogować się do SQL Server i korzystać z bazy danych.

Nawet Mien
źródło
2
Link do tej odpowiedzi SO jest prawdopodobnie przydatny, ale nie dodajesz nic nowego do wpisu, prawda? Link mógł zostać właśnie opublikowany jako komentarz.
Andriy M
2
Odpowiedź zawiera ładny zrzut ekranu do sprawdzania Grup w obszarze Typ obiektu, ponieważ tego właśnie brakowało, gdy próbowałem to zrobić. Moim zdaniem link nie pokazuje go w tak przydatny sposób. Po prostu próbuję pomóc następnej osobie ...
Nawet Mien
Co masz na myśli? Zwykle jest tam link, za którym można podążać, a każdy podążający za tym linkiem zobaczyłby fajny zrzut ekranu, o którym mówisz, a także wszystko inne, co tutaj opublikowałeś. Nie zamierzam się jednak kłócić, po prostu informując, że moja opinia pozostaje niezmieniona: link (w komentarzu) również by się spisał.
Andriy M
4
Moja opinia również nie uległa zmianie. Link w komentarzu nie zawiera tych samych informacji, co rzeczywisty obraz na stronie internetowej. „Pokaż, nie mów”.
Nawet Mien
1

Jeśli użytkownik jest członkiem DOMAIN \ SecurityGroup, który ma uprawnienie Sysadmin w języku SQL, zostanie on użyty podczas uzyskiwania dostępu do baz danych. W przeciwnym razie musisz sprawdzić, jakie uprawnienia DOMAIN \ SecurityGroup (s) uzyskały w każdej bazie danych. Jeśli użytkownik jest członkiem 2 grup zabezpieczeń, przy czym SecGroupA ma uprawnienia do wyboru, a SecGroupB ma uprawnienia do wstawiania, wówczas użytkownik może wybrać i wstawić.

Piyush Agrawal
źródło