Дозволи SQL Server на створення, відновлення та видалення лише деяких баз даних


17

У MS SQL Server 2008 R2 мені потрібно мати користувача, який може створювати, відновлювати, DBCC CHECKDB і потім скидати бази даних. Але він не повинен мати доступ до або видаляти вказані бази даних на сервері (з міркувань безпеки). Чи можлива така налаштування?


Ви можете отримати кілька підказок тут: toadworld.com/platforms/sql-server/w/wiki/…
дез

Відповіді:


27

Так, це можливо через пару дозволів.

По-перше - створити базу даних - Вам потрібно буде надати дозвіл на рівні сервера Create Any Database. Цей дозвіл робить саме те, що звучить як - можливість створювати базу даних. Зауважте, що це не дає фіксованої ролі сервера dbcreator для входу в систему, оскільки ця фіксована роль сервера дає дозволи змінювати / видаляти будь-яку базу даних.Create Any Databaseдозволяє логіну мати таку владу над базами даних, якими вони володіють. Це також дасть можливість відновити.

(Так, роблячи «Створити Будь-яку базу даних» ТІЛЬКИ - ви даєте можливість створити нову базу даних, але уникаючи можливість відкинути або змінити БУДЬ-ЯКУ базу даних , яку ви хочете отримати за допомогою фіксованої серверної ролі DBCreator)

Щоб надати цей дозвіл "Створити будь-яку базу даних" -

use [master]
GO
GRANT CREATE ANY DATABASE TO [LoginName]
GO

Для можливості роботи DBCC CHECKDBта скидання баз даних - фіксованої ролі бази даних db_owner достатньо. Це дає все те, що ви просите. Зверніть увагу: Ви також надаєте цьому користувачеві можливість вибирати, видаляти, усікати, оновлювати та вставляти за допомогою db_owner. Мені подобається думати про це як sysadminв базі даних.

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

Для цього слід спочатку зіставити логін користувачеві бази даних:

USE [DatabaseName]
GO
CREATE USER [UserName] FOR LOGIN [LoginName] 
GO

А потім додайте цього користувача до db_owner ролі (працює в SQL Server 2012 і далі):

ALTER ROLE [db_owner] ADD MEMBER [frank]
GO

Для SQL Server 2008 вам доведеться використовувати процедуру, що зберігається в системі, щоб додати члена ролі в якості коментатора нижче праворуч вказаного:

EXEC sp_addrolemember 'db_owner', 'frank';

Ви також можете все це зробити через GUI. Інформація про вхід, яку ви робите через папку безпеки в SSMS на рівні екземпляра: Клацніть правою кнопкою миші на вхід -> Властивості -> Securables. Для рівня бази даних, ви зробите це через папку безпеки на рівні бази даних: клацніть правою кнопкою миші та виберіть нового користувача -> виберіть логін, який ви бажаєте використати, зі свого списку входів на сервер / дайте ім’я користувача бази даних -> перейдіть до на вкладці "членство", щоб вибрати роль членства.

Довідкова система SQL Server - Книги в Інтернеті - це фантастичний ресурс для більшості питань дозволу - якщо ви визначите, що вам потрібно призначити інші дозволи. Просто виконайте пошук команди T-SQL, якій ви хочете надати дозволи, і, як правило, у статті є розділ " Дозволи " для цієї команди, який дозволяє вам знати, які дозволи потрібно виконати для цього дії. Ви можете подивитися статтю для DBCC CHECKDB для прикладу - приблизно 7/8 від зменшення статті - розділ дозволів.


3
Я хотів би лише додати, що ALTER ROLE [db_owner] ADD MEMBER [frank]працює лише з SQL Server 2012. Якщо ви перебуваєте на SQL Server 2008, вам слід перейти до SP: EXEC sp_addrolemember 'db_owner', 'frank';(
Перегляньте
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.