Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Как скриптами создать скриптами учётную запись с ограничениями прав?  [new]
Игорь_UUS
Member

Откуда: г. Екатеринбург
Сообщений: 687
Добрый день.

В СУБД периодически добавляются новые базы (не так чтоб часто, но...), на каждую базу создаётся своя учётная запись, через которую работают все клиенты (программы). Делается ограничение, что новая учётная запись имеет полные права в рамках одной базы и полная блокировка на всё (в т.ч. на видимость через любого клиента) в других базах.

Сейчас привлекаю сис. админа., который всё это делает через MS, это долго... нудно и т.п.))...

Мне бы проще всего написать и когда надо выполнять скрипт, в котором и база создастся и доступ нужный назначаться. Создать, восстановить (и пр.) базу знаю как, но вот с правами беда(( ни разу не сталкивался (не админ я)) )

Подскажите, как скриптами создать новую учётную запись в субд и назначить ей полные права владения ТОЛЬКО определённой базой, и полностью закрыть доступ к другим в т.ч. видимость? По возможности пример не помешает.

Заранее спасибо!
8 дек 16, 12:13    [19979837]     Ответить | Цитировать Сообщить модератору
 Re: Как скриптами создать скриптами учётную запись с ограничениями прав?  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6802
Игорь_UUS,

всё что делается через "MS" выполняется на сервере скриптами. Профайлером отловите действия + msdn для понимания что делается
8 дек 16, 12:18    [19979860]     Ответить | Цитировать Сообщить модератору
 Re: Как скриптами создать скриптами учётную запись с ограничениями прав?  [new]
Adony
Member

Откуда: Москва
Сообщений: 1085
Можно отскриптовать уже существующую БД и пользователя, и посмотреть что и как.
8 дек 16, 12:21    [19979886]     Ответить | Цитировать Сообщить модератору
 Re: Как скриптами создать скриптами учётную запись с ограничениями прав?  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8839
CREATE LOGIN
CREATE USER
все остальное в справке. Особо изучите требуемые для выполнения права.
Пусть видят базы, какая разница.
8 дек 16, 12:29    [19979939]     Ответить | Цитировать Сообщить модератору
 Re: Как скриптами создать скриптами учётную запись с ограничениями прав?  [new]
Игорь_UUS
Member

Откуда: г. Екатеринбург
Сообщений: 687
Владислав Колосов
CREATE LOGIN
CREATE USER
все остальное в справке. Особо изучите требуемые для выполнения права.
Пусть видят базы, какая разница.


А за что отвечает "скрытие" базы? имеется ввиду это свойство при создании учётной записи или это отдельная операция? Надо чтоб не видели...
8 дек 16, 12:52    [19980057]     Ответить | Цитировать Сообщить модератору
 Re: Как скриптами создать скриптами учётную запись с ограничениями прав?  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8839
Игорь_UUS,

надо зачем?
8 дек 16, 13:43    [19980330]     Ответить | Цитировать Сообщить модератору
 Re: Как скриптами создать скриптами учётную запись с ограничениями прав?  [new]
Игорь_UUS
Member

Откуда: г. Екатеринбург
Сообщений: 687
Владислав Колосов,

уффф... не хотелось бы спрашивать "на верху" зачем это всё. Если уж делать полу-автоматизацию, то точно в таком же исполнении как сейчас. Тут вопрос, это можно реализовать через скрипты? если да, то что посмотреть то?
8 дек 16, 14:49    [19980669]     Ответить | Цитировать Сообщить модератору
 Re: Как скриптами создать скриптами учётную запись с ограничениями прав?  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8839
Игорь_UUS,

собственно, есть такая концепция разработки - если после пятого "зачем" мы не приходим к конечному результату, то есть "зачем" уже нельзя задать по предыдущему ответу, то такую идею можно смело выбрасывать.
8 дек 16, 14:53    [19980705]     Ответить | Цитировать Сообщить модератору
 Re: Как скриптами создать скриптами учётную запись с ограничениями прав?  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8839
Если запретить просмотр баз, это может повлечь последствия. Разрешения описаны в статье справки Инструкция GRANT.
8 дек 16, 14:57    [19980728]     Ответить | Цитировать Сообщить модератору
 Re: Как скриптами создать скриптами учётную запись с ограничениями прав?  [new]
Игорь_UUS
Member

Откуда: г. Екатеринбург
Сообщений: 687
Владислав Колосов
CREATE LOGIN
CREATE USER
все остальное в справке. Особо изучите требуемые для выполнения права.
Пусть видят базы, какая разница.



Сейчас стал разбираться, получается изначально создаётся имя входа (CREATE LOGIN) для подключения к СУБД, затем создаётся пользователь БД (CREATE USER).

Вот тут уже не могу разобраться, зачем нужен пользователь БД? Он нужен, если авторизация к БД настроена по пользователям?

И ещё вопрос, при создании имени входа указать БД по умолчанию (DEFAULT_DATABASE), то это будет являться неким ограничением? что данное имя входа имеет доступ только к БД по умолчанию и ни к какой другой?
26 дек 16, 12:48    [20048503]     Ответить | Цитировать Сообщить модератору
 Re: Как скриптами создать скриптами учётную запись с ограничениями прав?  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
Игорь_UUS
Вот тут уже не могу разобраться, зачем нужен пользователь БД? Он нужен, если авторизация к БД настроена по пользователям?
Пользователь БД нужен, чтобы выдавать ему права на уровне БД.

Игорь_UUS
И ещё вопрос, при создании имени входа указать БД по умолчанию (DEFAULT_DATABASE), то это будет являться неким ограничением? что данное имя входа имеет доступ только к БД по умолчанию и ни к какой другой?
Нет.
26 дек 16, 12:50    [20048517]     Ответить | Цитировать Сообщить модератору
 Re: Как скриптами создать скриптами учётную запись с ограничениями прав?  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8839
Игорь_UUS,

DEFAULT_DATABASE - если при подключении не указана конкретная база,
LOGIN - для подключения к серверу
USER - для определения прав в базе данных.
Вся информация есть в справке.
26 дек 16, 12:53    [20048533]     Ответить | Цитировать Сообщить модератору
 Re: Как скриптами создать скриптами учётную запись с ограничениями прав?  [new]
Игорь_UUS
Member

Откуда: г. Екатеринбург
Сообщений: 687
Гавриленко Сергей Алексеевич
Игорь_UUS
Вот тут уже не могу разобраться, зачем нужен пользователь БД? Он нужен, если авторизация к БД настроена по пользователям?
Пользователь БД нужен, чтобы выдавать ему права на уровне БД.

Игорь_UUS
И ещё вопрос, при создании имени входа указать БД по умолчанию (DEFAULT_DATABASE), то это будет являться неким ограничением? что данное имя входа имеет доступ только к БД по умолчанию и ни к какой другой?
Нет.



Если доступ к определённой базе должен быть полным, нужно ли создавать пользователя к имени входа?
и
Как настроить при создании имени входа, что имеется доступ полный доступ только к определённой базе? и тогда не совсем понятно, зачем БД по умолчанию при создании?
26 дек 16, 12:55    [20048551]     Ответить | Цитировать Сообщить модератору
 Re: Как скриптами создать скриптами учётную запись с ограничениями прав?  [new]
Игорь_UUS
Member

Откуда: г. Екатеринбург
Сообщений: 687
Владислав Колосов
Игорь_UUS,

DEFAULT_DATABASE - если при подключении не указана конкретная база,
LOGIN - для подключения к серверу
USER - для определения прав в базе данных.
Вся информация есть в справке.


Спасибо, картина начинает быть ясной...
26 дек 16, 12:56    [20048561]     Ответить | Цитировать Сообщить модератору
 Re: Как скриптами создать скриптами учётную запись с ограничениями прав?  [new]
Игорь_UUS
Member

Откуда: г. Екатеринбург
Сообщений: 687
Игорь_UUS,

CREATE LOGIN MyTest
    WITH PASSWORD = 'asdasdertert';
USE dbtest;
CREATE USER MyTest FOR LOGIN MyTest;


Правильно ли я понимаю?

я создаю новое имя входа, через которое можно подключиться к СУБД, но используя имя входа я не смогу подключиться ни к одной конкретной базе, т.к. ни в одной из баз нет пользователя привязанного к имени входу. Поэтому необходимо создание пользователя в базе привязав к имени входа.

Получается, что данный скрипт ограничит доступ ко все БД за исключением одной "MyTest"
26 дек 16, 13:26    [20048753]     Ответить | Цитировать Сообщить модератору
 Re: Как скриптами создать скриптами учётную запись с ограничениями прав?  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
Игорь_UUS
Игорь_UUS,

CREATE LOGIN MyTest
    WITH PASSWORD = 'asdasdertert';
USE dbtest;
CREATE USER MyTest FOR LOGIN MyTest;



Правильно ли я понимаю?

я создаю новое имя входа, через которое можно подключиться к СУБД, но используя имя входа я не смогу подключиться ни к одной конкретной базе, т.к. ни в одной из баз нет пользователя привязанного к имени входу. Поэтому необходимо создание пользователя в базе привязав к имени входа.

Получается, что данный скрипт ограничит доступ ко все БД за исключением одной "MyTest"
Скрипт ничего не ограничивает, и даже ничего не разрешает. Он создает логин и пользователя.
26 дек 16, 14:28    [20049091]     Ответить | Цитировать Сообщить модератору
 Re: Как скриптами создать скриптами учётную запись с ограничениями прав?  [new]
Игорь_UUS
Member

Откуда: г. Екатеринбург
Сообщений: 687
Гавриленко Сергей Алексеевич
Игорь_UUS
Игорь_UUS,

CREATE LOGIN MyTest
    WITH PASSWORD = 'asdasdertert';
USE dbtest;
CREATE USER MyTest FOR LOGIN MyTest;



Правильно ли я понимаю?

я создаю новое имя входа, через которое можно подключиться к СУБД, но используя имя входа я не смогу подключиться ни к одной конкретной базе, т.к. ни в одной из баз нет пользователя привязанного к имени входу. Поэтому необходимо создание пользователя в базе привязав к имени входа.

Получается, что данный скрипт ограничит доступ ко все БД за исключением одной "MyTest"
Скрипт ничего не ограничивает, и даже ничего не разрешает. Он создает логин и пользователя.


Да, я разобрался... действительно пустышка. После этого пришлось добавить в роль db_owner БД данного пользователя и у него появились все права.


Но не могу разобраться с "GRANT", хочу понять как можно изменить разрешение у имени входа, запретив ему видеть все базы за исключением одной. Подскажите если не сложно...
26 дек 16, 14:40    [20049148]     Ответить | Цитировать Сообщить модератору
 Re: Как скриптами создать скриптами учётную запись с ограничениями прав?  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
Игорь_UUS
Гавриленко Сергей Алексеевич
пропущено...
Скрипт ничего не ограничивает, и даже ничего не разрешает. Он создает логин и пользователя.


Да, я разобрался... действительно пустышка. После этого пришлось добавить в роль db_owner БД данного пользователя и у него появились все права.


Но не могу разобраться с "GRANT", хочу понять как можно изменить разрешение у имени входа, запретив ему видеть все базы за исключением одной. Подскажите если не сложно...
Что такое "видеть"?
26 дек 16, 15:06    [20049278]     Ответить | Цитировать Сообщить модератору
 Re: Как скриптами создать скриптами учётную запись с ограничениями прав?  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31990
Игорь_UUS
Но не могу разобраться с "GRANT", хочу понять как можно изменить разрешение у имени входа, запретив ему видеть все базы за исключением одной. Подскажите если не сложно...
У логина не должно быть серверного разрешения VIEW ANY DATABASE

При этом
BOL
По умолчанию разрешение VIEW ANY DATABASE предоставлено роли public. Таким образом, любой пользователь, подключившийся к экземпляру SQL Server, может увидеть все базы данных в данном экземпляре. Чтобы это проверить, выполните следующий запрос.
Поэтому
BOL
Чтобы ограничить видимость метаданных, запретите разрешение VIEW ANY DATABASE для имени входа. После отказа в этом разрешении для имени входа доступны только метаданные баз данных master, tempdb и баз данных, владельцем которых оно является. Дополнительные сведения см. в разделе DENY, запрет разрешений на сервере (Transact-SQL).
26 дек 16, 22:38    [20050752]     Ответить | Цитировать Сообщить модератору
 Re: Как скриптами создать скриптами учётную запись с ограничениями прав?  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31990
Гавриленко Сергей Алексеевич
Игорь_UUS
пропущено...


Да, я разобрался... действительно пустышка. После этого пришлось добавить в роль db_owner БД данного пользователя и у него появились все права.


Но не могу разобраться с "GRANT", хочу понять как можно изменить разрешение у имени входа, запретив ему видеть все базы за исключением одной. Подскажите если не сложно...
Что такое "видеть"?
Ну, видимо, получать их список через sys.databases и sysdatabases, ну и в прогах, которые его визуализируют, типа SSMS
26 дек 16, 22:40    [20050753]     Ответить | Цитировать Сообщить модератору
 Re: Как скриптами создать скриптами учётную запись с ограничениями прав?  [new]
Игорь_UUS
Member

Откуда: г. Екатеринбург
Сообщений: 687
alexeyvg
Игорь_UUS
Но не могу разобраться с "GRANT", хочу понять как можно изменить разрешение у имени входа, запретив ему видеть все базы за исключением одной. Подскажите если не сложно...
У логина не должно быть серверного разрешения VIEW ANY DATABASE

При этом
BOL
По умолчанию разрешение VIEW ANY DATABASE предоставлено роли public. Таким образом, любой пользователь, подключившийся к экземпляру SQL Server, может увидеть все базы данных в данном экземпляре. Чтобы это проверить, выполните следующий запрос.
Поэтому
BOL
Чтобы ограничить видимость метаданных, запретите разрешение VIEW ANY DATABASE для имени входа. После отказа в этом разрешении для имени входа доступны только метаданные баз данных master, tempdb и баз данных, владельцем которых оно является. Дополнительные сведения см. в разделе DENY, запрет разрешений на сервере (Transact-SQL).


Спасибо!

Я удалил разрешение у логина:
USE master;
DENY VIEW ANY DATABASE TO Kont


Теперь логин перестал видеть все базы. Далее мне нужно его сделать владельцем базы:
ALTER AUTHORIZATION ON DATABASE ::[Kontinent] TO [Kont]


При выполнении пишет ошибку: "Предложенный новый владелец базы данных уже является пользователем или ему присвоен псевдоним в базе данных"

Вроде как понимаю почему?! до этого я создал имя входа и сразу сделал пользователя для этого имени входа, вот как делал:

CREATE LOGIN Kont 
    WITH PASSWORD = 'HHlsdfkglksdfFKZSHFXJS';
USE Kontinent;
CREATE USER Kont FOR LOGIN Kont;


Чтоб изменить владельца базы, мне пришлось удалить пользователя. После этого подключаясь по имени входа вижу только "свою" базу ну и: master, tempdb.

Немного поюзал таблицы, вроде как ко всему имею доступ, в рамках своей базы. У меня сразу вопрос

В моём случае, получается, не нужно создавать пользователя? Что нужно делать: создаю имя входа, убираю разрешение просмотра БД для созданного имени входа, затем изменяю владельца нужной базы и по идеи всё? И, по данному логину я могу работать только с той базой, у которой данный логин является владельцем? И данный логин к другим базам доступа иметь не будет, и, получить доступ к другим базам самостоятельно не сможет? Правильно?
27 дек 16, 08:17    [20051244]     Ответить | Цитировать Сообщить модератору
 Re: Как скриптами создать скриптами учётную запись с ограничениями прав?  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31990
Игорь_UUS
Чтоб изменить владельца базы, мне пришлось удалить пользователя.
Можно было просто в базе включить его в предопределённую роль db_owner
Игорь_UUS
Что нужно делать: создаю имя входа, убираю разрешение просмотра БД для созданного имени входа, затем изменяю владельца нужной базы и по идеи всё? И, по данному логину я могу работать только с той базой, у которой данный логин является владельцем? И данный логин к другим базам доступа иметь не будет, и, получить доступ к другим базам самостоятельно не сможет? Правильно?
Ага.
Ну или создать в базе пользователя для этого логина, и дать какие то другие права к этой базе (не обязательно же делать владельца - это очень большие, максимальные, права к базе).
27 дек 16, 09:36    [20051412]     Ответить | Цитировать Сообщить модератору
 Re: Как скриптами создать скриптами учётную запись с ограничениями прав?  [new]
Игорь_UUS
Member

Откуда: г. Екатеринбург
Сообщений: 687
alexeyvg
Игорь_UUS
Чтоб изменить владельца базы, мне пришлось удалить пользователя.
Можно было просто в базе включить его в предопределённую роль db_owner
Игорь_UUS
Что нужно делать: создаю имя входа, убираю разрешение просмотра БД для созданного имени входа, затем изменяю владельца нужной базы и по идеи всё? И, по данному логину я могу работать только с той базой, у которой данный логин является владельцем? И данный логин к другим базам доступа иметь не будет, и, получить доступ к другим базам самостоятельно не сможет? Правильно?
Ага.
Ну или создать в базе пользователя для этого логина, и дать какие то другие права к этой базе (не обязательно же делать владельца - это очень большие, максимальные, права к базе).


Спасибо! Надо подумать, предполагается дать все права на базу... если потребуется ограничить, тогда буду создавать пользователя...
Ещё раз спасибо!
27 дек 16, 09:51    [20051476]     Ответить | Цитировать Сообщить модератору
 Re: Как скриптами создать скриптами учётную запись с ограничениями прав?  [new]
Игорь_UUS
Member

Откуда: г. Екатеринбург
Сообщений: 687
Игорь_UUS,

Сейчас тестирую новое "имя входа". Данное имя входя является владельцем "своей базы". При выполнении определённой хранимой процедуры возникает исключение "Запрещено разрешение "EXECUTE" на объект "sp_OACreate" базы данных "mssqlsystemresource", схемы "sys"."

Получается нет разрешения. Решил посмотреть что там в справке... пишут: "Необходимо членство в фиксированной серверной роли sysadmin."

Но, если я дам такое разрешение новому имени входа, то это может быть чревато? Правильно? Получается имя входа получит права к СУБД как у SA?.

В хранимой процедуре предусмотрено:
WITH EXECUTE AS OWNER


Но сейчас владелец базы не SA как было ранее, а новое имя входа.

Как быть в этом случае?
27 дек 16, 10:36    [20051678]     Ответить | Цитировать Сообщить модератору
 Re: Как скриптами создать скриптами учётную запись с ограничениями прав?  [new]
Игорь_UUS
Member

Откуда: г. Екатеринбург
Сообщений: 687
Вот такой вариант, вроде как должен решить мою проблему:

GRANT EXEC ON sp_OACreate TO [Kont]


но пишет ошибку: "Невозможно найти пользователь "Kont", так как он не существует или отсутствуют разрешения."

И тут понять не могу, ведь речь должна быть об имени входа? Или нужно создавать пользователя БД master "Kont", но зачем? и как оно будет ассоциироваться с пользователем "свой БД"?

Голова кругом... подскажите как мне решить эту проблему?
27 дек 16, 11:20    [20051949]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить