Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Убрать права на DDL в рамках всей базы  [new]
Oblom
Member

Откуда: Moscow Square
Сообщений: 624
Добрый день!
Как можно реализовать сабж?

Пытался сделать через роли.
Например классическая роль db_read_write_execute реализуется так:
CREATE ROLE [db_read_write_execute] AUTHORIZATION [dbo]
GO
GRANT EXECUTE TO db_read_write_execute
GRANT SELECT TO db_read_write_execute
GRANT UPDATE TO db_read_write_execute
GRANT INSERT TO db_read_write_execute
GRANT DELETE TO db_read_write_execute


Но попытка закрыть хотя бы LTER объектов через
CREATE ROLE NoDDL AUTHORIZATION [dbo]
GO
DENY ALTER TO NoDDL

потерпела неудачу, пользователь из этой роли как менял хранимку, так и меняет.

Как можно правильно решить эту задачу?
18 июл 19, 18:06    [21929659]     Ответить | Цитировать Сообщить модератору
 Re: Убрать права на DDL в рамках всей базы  [new]
msLex
Member

Откуда:
Сообщений: 8072
Oblom
Добрый день!
Как можно реализовать сабж?

Пытался сделать через роли.
Например классическая роль db_read_write_execute реализуется так:
CREATE ROLE [db_read_write_execute] AUTHORIZATION [dbo]
GO
GRANT EXECUTE TO db_read_write_execute
GRANT SELECT TO db_read_write_execute
GRANT UPDATE TO db_read_write_execute
GRANT INSERT TO db_read_write_execute
GRANT DELETE TO db_read_write_execute



Но попытка закрыть хотя бы LTER объектов через
CREATE ROLE NoDDL AUTHORIZATION [dbo]
GO
DENY ALTER TO NoDDL


потерпела неудачу, пользователь из этой роли как менял хранимку, так и меняет.

Как можно правильно решить эту задачу?


Если пользователь является владельцем базы, у него будет доступ в любом случае.
18 июл 19, 18:10    [21929661]     Ответить | Цитировать Сообщить модератору
 Re: Убрать права на DDL в рамках всей базы  [new]
Yasha123
Member

Откуда:
Сообщений: 1833
msLex
Oblom
Добрый день!
Как можно реализовать сабж?

Пытался сделать через роли.
Например классическая роль db_read_write_execute реализуется так:
CREATE ROLE [db_read_write_execute] AUTHORIZATION [dbo]
GO
GRANT EXECUTE TO db_read_write_execute
GRANT SELECT TO db_read_write_execute
GRANT UPDATE TO db_read_write_execute
GRANT INSERT TO db_read_write_execute
GRANT DELETE TO db_read_write_execute



Но попытка закрыть хотя бы LTER объектов через
CREATE ROLE NoDDL AUTHORIZATION [dbo]
GO
DENY ALTER TO NoDDL


потерпела неудачу, пользователь из этой роли как менял хранимку, так и меняет.

Как можно правильно решить эту задачу?


Если пользователь является владельцем базы, у него будет доступ в любом случае.

он не овнеру базы пытается денаить,
а юзеру dbo.
юзер dbo это тот, в кого мапится sysadmin.
денаить что-то сисадмину бессмысленно,
ибо его права просто не проверяются.

в конкретной базе может быть всего один овнер.
dbo могут быть тучи.
сервер с тучей сиадминов это полный бардак.

BOL
The dbo User Account
The dbo, or database owner, is a user account that has implied permissions to perform all activities in the database.
Members of the sysadmin fixed server role are automatically mapped to dbo.

Server and Database Roles in SQL Server
23 июл 19, 09:49    [21932345]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить