Na MS SQL Server 2008 R2 muszę mieć użytkownika, który może tworzyć, przywracać, DBCC CHECKDB, a następnie upuszczać bazy danych. Nie może jednak mieć dostępu do określonych baz danych na serwerze ani ich usuwać (ze względów bezpieczeństwa). Czy to możliwe?
sql-server
sql-server-2008
Cicik
źródło
źródło
Odpowiedzi:
Tak, jest to możliwe dzięki kilku uprawnieniom.
Po pierwsze - aby utworzyć bazę danych - musisz udzielić uprawnienia na poziomie serwera
Create Any Database
. To uprawnienie działa tak, jak się wydaje - moc tworzenia bazy danych. Uwaga ta jest nie dając stałą rolę serwera dbcreator do logowania, ponieważ stała rola serwera daje alter / Usuń uprawnienia dowolnej bazy danych.Create Any Database
pozwala loginowi mieć tę władzę tylko nad bazami danych, które posiadają. To da również możliwość przywrócenia.(Więc wykonując TYLKO „Utwórz dowolną bazę danych” - dajesz możliwość utworzenia nowej bazy danych, ale unikasz możliwości usunięcia lub zmiany DOWOLNEJ bazy danych, które można dostać za pomocą rolę dbcreator stałe serwera)
Aby udzielić tego uprawnienia „Utwórz dowolną bazę danych” -
Aby móc uruchamiać
DBCC CHECKDB
i usuwać bazy danych - wystarczy stała rola bazy danych db_owner. Zapewnia to wszystko, o co prosisz. Uwaga: Użytkownik zapewnia również użytkownikowi możliwość wybierania, usuwania, obcinania, aktualizowania i wstawiania za pomocądb_owner
. Lubię myśleć o tym jaksysadmin
w bazie danych.Będziesz stosował to uprawnienie tylko do bazy danych, na której zamierzasz mieć tę możliwość. To pozwoli ci kontrolować, które bazy danych użytkownik może upuszczać, przywracać lub sprawdzać. Wszystkie bazy danych, w których użytkownik nie otrzymał tych uprawnień, będą bezpieczne od tego użytkownika wykonującego te czynności
Aby to zrobić, najpierw mapuj login na użytkownika bazy danych:
A następnie dodaj tego użytkownika do
db_owner
roli (Działa w SQL Server 2012 i nowszych):W przypadku programu SQL Server 2008 trzeba użyć systemowej procedury składowanej, aby dodać członka roli jako komentator poniżej słusznie wskazany:
Możesz to wszystko zrobić również poprzez GUI. Informacje logowania, które zrobiłbyś w folderze zabezpieczeń w SSMS na poziomie instancji: Kliknij prawym przyciskiem myszy login -> Właściwości -> Zabezpieczenia. Na poziomie bazy danych zrobiłbyś to przez folder bezpieczeństwa na poziomie bazy danych: kliknij prawym przyciskiem myszy i wybierz nowego użytkownika -> wybierz login, którego chcesz używać z listy logowania do serwera / podaj nazwę użytkownika bazy danych -> przejdź do kartę członkostwa, aby wybrać członkostwo w roli.
System pomocy programu SQL Server, Books Online, jest fantastycznym źródłem większości pytań dotyczących uprawnień - jeśli stwierdzisz, że musisz przypisać inne uprawnienia. Po prostu wyszukaj komendę T-SQL, której chcesz udzielić uprawnień , aw artykule zwykle znajduje się sekcja Zezwolenia dla tej komendy, która informuje, jakie uprawnienia są wymagane do wykonania tej akcji. Możesz na przykład zobaczyć artykuł dla DBCC CHECKDB - około 7/8 w dół tego artykułu to sekcja uprawnień.
źródło
ALTER ROLE [db_owner] ADD MEMBER [frank]
działa tylko z SQL Server 2012. Jeśli korzystasz z SQL Server 2008, powinieneś skorzystać z SP:EXEC sp_addrolemember 'db_owner', 'frank';
(Patrz tutaj i tutaj )