На MS SQL Server 2008 R2 мне нужен пользователь, который может создавать, восстанавливать, DBCC CHECKDB, а затем удалять базы данных. Но он не должен иметь возможность доступа или удаления указанных баз данных на сервере (по соображениям безопасности). Возможна ли эта настройка?
17
Ответы:
Да, это возможно через пару разрешений.
Во-первых - для создания базы данных - вам необходимо предоставить разрешение на уровне сервера
Create Any Database
. Это разрешение делает то, на что это похоже - возможность создавать базу данных. Обратите внимание, что это не дает фиксированной серверной роли dbcreator для входа в систему, так как эта фиксированная серверная роль дает разрешения на изменение / удаление для любой базы данных.Create Any Database
позволяет логину иметь доступ только к базам данных, которыми они владеют. Это также даст возможность восстановить.(Таким образом, ТОЛЬКО « Создавая любую базу данных» - вы даете возможность создавать новую базу данных, но избегаете возможности отбрасывать или изменять ЛЮБУЮ базу данных, полученную при использовании предопределенной роли сервера dbcreator)
Чтобы предоставить это разрешение «Создать любую базу данных» -
Для возможности запуска
DBCC CHECKDB
и удаления баз данных достаточно фиксированной роли базы данных db_owner. Это дает все, что вы запрашиваете. Обратите внимание: вы также предоставляете этому пользователю возможность выбирать, удалять, обрезать, обновлять и вставлять с помощьюdb_owner
. Мне нравится думать об этом какsysadmin
о базе данных.Вы примените это разрешение только к базе данных, для которой вы собираетесь использовать эту возможность. Это позволит вам контролировать, какие базы данных пользователь может удалить, восстановить или проверить. Любые базы данных, для которых вы не предоставили пользователю эти разрешения, будут защищены от выполнения этими действиями этого пользователя.
Для этого вы сначала должны сопоставить имя пользователя базы данных:
А затем добавьте этого пользователя в
db_owner
роль (работает в SQL Server 2012 и далее):Для SQL Server 2008 вам нужно было бы использовать системную хранимую процедуру, чтобы добавить члена роли в качестве комментария, приведенного ниже:
Вы также можете сделать все это через графический интерфейс. Информация для входа в систему, которую вы должны сделать через папку безопасности в SSMS на уровне экземпляра: щелкните правой кнопкой мыши имя входа -> Свойства -> Securables. Для уровня базы данных вы должны сделать это через папку безопасности на уровне базы данных: щелкните правой кнопкой мыши и выберите нового пользователя -> выберите логин, который вы хотите использовать, из списка имен входа на сервер / дайте имя пользователю базы данных -> перейдите к вкладка членство, чтобы выбрать роль членства.
Справочная система SQL Server, Books Online, также является отличным ресурсом для большинства вопросов о разрешениях - если вы решите, что вам нужно назначить другие разрешения. Просто выполните поиск команды T-SQL, для которой вы хотите дать разрешения, и в статье, как правило, есть раздел « Разрешения » для этой команды, в котором указано, какие разрешения требуются для выполнения этого действия. Вы можете посмотреть в статье для DBCC CHECKDB пример - примерно 7/8 пути вниз по статье - это раздел разрешений.
источник
ALTER ROLE [db_owner] ADD MEMBER [frank]
работает только с SQL Server 2012. Если вы работаете на SQL Server 2008, нужно использовать SP:EXEC sp_addrolemember 'db_owner', 'frank';
(Ссылка здесь и здесь )