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

Откуда:
Сообщений: 928
Добрый день!
Вроде много работал с базами и раньше с доступами пользователей особо не заморачивался, но назрел вопрос целесообразности, правильности способа заведение пользователя и раздачи прав.
Пусть есть самописная программа на уровне организации (СУБД SQL), все пользователи заведены в домене , есть учетки в AD.
Какой способ авторизации вы используете или считаете верным?

1. SQL авторизация (может быть через общую роль или отдельные логины), то есть заводится отдельный sql логин для каждого пользователя, который может включаться в единственную роль, роли даются разрешения и работа ведётся под роолью, без учета AD.
2. На стороне СУБД заводятся логины как в AD, например company\Pupkin (для каждого пользователя), под них заводится определенная sql роль, в которой прописывается права и пользователи, созданные ранее включаются в эту роль.
3. Создаётся 1-на учетка SQL или в AD (единственная и универсальная для программы), вся работа ведётся под ней, когда пользователь запускает приложение, то авторизация для всех пользователей происходит под этой учеткой автоматически из программы.
4. Создается 1-н логин или роль (единственный) в базе, а в этот логин или роль на уровне AD прописываются все пользователи (тоесть раздачей прав занимается администратор домена). При этом с токи зрения СУБД есть только один логин, а состав пользователей, кто в ходит в этот логин - знает только AD админ.

Может я что то забыл или исказил, прошу подсказать, поправить. Спасибо!
26 ноя 19, 10:57    [22025308]     Ответить | Цитировать Сообщить модератору
 Re: Заведение новых пользователей в БД, как верно, эффективно?  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7768
medoed,

SQL авторизация на промышленном уровне является небезопасной. Дома что хотите делайте. Требования зависят от целей, нет единого рецепта на все случаи.
26 ноя 19, 11:20    [22025346]     Ответить | Цитировать Сообщить модератору
 Re: Заведение новых пользователей в БД, как верно, эффективно?  [new]
medoed
Member

Откуда:
Сообщений: 928
Владислав Колосов
medoed,

SQL авторизация на промышленном уровне является небезопасной. Дома что хотите делайте. Требования зависят от целей, нет единого рецепта на все случаи.

Я 1-ый способ, если вы о нём не использую давно! Вы какой способ используете из перечисленных или что то своё?
26 ноя 19, 11:23    [22025353]     Ответить | Цитировать Сообщить модератору
 Re: Заведение новых пользователей в БД, как верно, эффективно?  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7768
medoed,

зависит от требований. Например, ваше приложение многофункциональное, на предприятии работает 1000 сотрудников - контактный центр, бухгалтерия, обслуживание клиентов,продажи, склад и тому подобное. В таком случае администрирование производится на уровне AD, т.к. все приёмы-увольнения проводят через определённый процесс. Соответственно, выделяются группы доступа, разграничиваются схемы объектов, создаются роль БД. В случае мелкого бизнеса доступ к базе контролирует не отдел безопасности, а руководитель и админ непосредственно. Плюс простое приложение без ролей. Здесь можно давать персональные разрешения. Микроуправление. Роли БД в любом случае стоит использовать.

Сообщение было отредактировано: 26 ноя 19, 11:29
26 ноя 19, 11:29    [22025365]     Ответить | Цитировать Сообщить модератору
 Re: Заведение новых пользователей в БД, как верно, эффективно?  [new]
Сон Веры Павловны
Member

Откуда:
Сообщений: 5957
5. Для приложения создается группа AD, для группы на сервере создается логин (разумеется, с win-аутентификацией), пользователи и роли в нужных базах, пользователи мапятся на логин, и включаются в роли. Для работы в приложении администраторы включают учётку пользователя в соответствующую группу AD.
26 ноя 19, 11:33    [22025378]     Ответить | Цитировать Сообщить модератору
 Re: Заведение новых пользователей в БД, как верно, эффективно?  [new]
medoed
Member

Откуда:
Сообщений: 928
Владислав Колосов
medoed,

зависит от требований. Например, ваше приложение многофункциональное, на предприятии работает 1000 сотрудников - контактный центр, бухгалтерия, обслуживание клиентов,продажи, склад и тому подобное. В таком случае администрирование производится на уровне AD, т.к. все приёмы-увольнения проводят через определённый процесс. Соответственно, выделяются группы доступа, разграничиваются схемы объектов, создаются роль БД. В случае мелкого бизнеса доступ к базе контролирует не отдел безопасности, а руководитель и админ непосредственно. Плюс простое приложение без ролей. Здесь можно давать персональные разрешения. Микроуправление. Роли БД в любом случае стоит использовать.


Ну пусть ближе ко второму случаю. Про роли в БД я с вами согласен полностью, так всегда и делал. Но вопрос , кто должен пользователей включать в эту роль или исключать. Я так понял мы говорим только про windows авторизацию, ок...
Получается на уровне AD заводится такая же группа, как и роль и включение/исключение производится только на уровне AD, тогда всем заведует сис админ.
Если мы говорим, что windows логины заводятся повторно на сервере субд, тогда включение и исключение в раннее заведённую роль пользователей может делать админ СУБД или даже администратор приложения. Вот в этом и вопрос, доступ к базе новым пользователя кто должен контролировать админ сети или админ субд/приложения?
26 ноя 19, 11:42    [22025395]     Ответить | Цитировать Сообщить модератору
 Re: Заведение новых пользователей в БД, как верно, эффективно?  [new]
medoed
Member

Откуда:
Сообщений: 928
Сон Веры Павловны
5. Для приложения создается группа AD, для группы на сервере создается логин (разумеется, с win-аутентификацией), пользователи и роли в нужных базах, пользователи мапятся на логин, и включаются в роли. Для работы в приложении администраторы включают учётку пользователя в соответствующую группу AD.

Это и есть почти 4-ый способ. Получается, без сетевого админа - нового пользователя в систему не завести.

Сообщение было отредактировано: 26 ноя 19, 11:50
26 ноя 19, 11:43    [22025398]     Ответить | Цитировать Сообщить модератору
 Re: Заведение новых пользователей в БД, как верно, эффективно?  [new]
Сон Веры Павловны
Member

Откуда:
Сообщений: 5957
medoed
Это и есть почти 4-ый способ.

Почти, за исключением того, что в 4 способе речь идет о единственном логине, а в моем - о любом количестве, в зависимости от количества программ. Плюс, поскольку права всё равно назначаются через роль, то этот вариант совместим с вариантом наличия отдельных персональных логинов для отдельных пользователей, включенных в ту же роль, что и учётка группы AD для программы.
medoed
Получается, без сетевого админа - нового пользователя в систему не завести.

Ну, по-хорошему, без какого-либо админа так и должно быть. Или сетевого, или БД.

Сообщение было отредактировано: 26 ноя 19, 12:03
26 ноя 19, 12:02    [22025432]     Ответить | Цитировать Сообщить модератору
 Re: Заведение новых пользователей в БД, как верно, эффективно?  [new]
medoed
Member

Откуда:
Сообщений: 928
Сон Веры Павловны
medoed
Это и есть почти 4-ый способ.

Ну, по-хорошему, без какого-либо админа так и должно быть. Или сетевого, или БД.

Получается заведение нового пользователя из приложения вы не рассматриваете вовсе и если админ СУБД не будет иметь доступ к АД, он тоже нового пользователя по стандартной схеме для программы не заведёт!?
26 ноя 19, 12:28    [22025476]     Ответить | Цитировать Сообщить модератору
 Re: Заведение новых пользователей в БД, как верно, эффективно?  [new]
Критик
Member

Откуда: Москва / Калуга
Сообщений: 33682
Блог
Все способы хороши для своего применения.
Например, у вас есть не win-система, которая должна стучаться к вашему серверу.
Или есть админ данного конкретного sql-сервера, который при этом не должен быть админом других sql-серверов.
И таких "или" много.

Сообщение было отредактировано: 26 ноя 19, 14:02
26 ноя 19, 14:02    [22025622]     Ответить | Цитировать Сообщить модератору
 Re: Заведение новых пользователей в БД, как верно, эффективно?  [new]
Minamoto
Member

Откуда: Москва
Сообщений: 1162
medoed
Получается, без сетевого админа - нового пользователя в систему не завести.

В виндовые группы пользователя может включать кто угодно, кому выданы соответствующие права.
26 ноя 19, 14:12    [22025648]     Ответить | Цитировать Сообщить модератору
 Re: Заведение новых пользователей в БД, как верно, эффективно?  [new]
medoed
Member

Откуда:
Сообщений: 928
Minamoto
medoed
Получается, без сетевого админа - нового пользователя в систему не завести.

В виндовые группы пользователя может включать кто угодно, кому выданы соответствующие права.

Это да, но судя по прошлому поддерживаемому мной приложению, когда пользователей в него заводили ит-аналитики, через интерфейс - вряд ли этому аналитику дали бы права на AD. Так что такой подход не весьма гибок, имхо!
26 ноя 19, 14:23    [22025662]     Ответить | Цитировать Сообщить модератору
 Re: Заведение новых пользователей в БД, как верно, эффективно?  [new]
AndrF
Member

Откуда:
Сообщений: 2194
3 способ.

Права пользователям даются внутри приложения, которое работает под своей доменной учеткой. Чтобы не изобретать лисапед можно посмотреть реализацию хотя бы в 1С.

Сообщение было отредактировано: 26 ноя 19, 15:05
26 ноя 19, 15:04    [22025734]     Ответить | Цитировать Сообщить модератору
 Re: Заведение новых пользователей в БД, как верно, эффективно?  [new]
medoed
Member

Откуда:
Сообщений: 928
AndrF
3 способ.

Права пользователям даются внутри приложения, которое работает под своей доменной учеткой. Чтобы не изобретать лисапед можно посмотреть реализацию хотя бы в 1С.

А как потом на уровне субд понять, кто из пользователей завесил базу например /создал блокировку/поудалял лишнего, если все коннекты под одной учетной записью на уровне субд делаются?
26 ноя 19, 15:20    [22025752]     Ответить | Цитировать Сообщить модератору
 Re: Заведение новых пользователей в БД, как верно, эффективно?  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7768
medoed,

Вы ограничиваете возможности ролей БД, сосредоточились на пользователях. В роль могут входить не только пользователи, но и другие роли, схемы, пользователи без логина. Назначение групп AD - администрирование пользователей и это не эквивалентно ролям БД.
26 ноя 19, 17:45    [22025922]     Ответить | Цитировать Сообщить модератору
 Re: Заведение новых пользователей в БД, как верно, эффективно?  [new]
Yasha123
Member

Откуда:
Сообщений: 1833
Владислав Колосов
В роль могут входить не только пользователи, но и другие роли, схемы,...

какие-то новости.
26 ноя 19, 17:56    [22025942]     Ответить | Цитировать Сообщить модератору
 Re: Заведение новых пользователей в БД, как верно, эффективно?  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7768
Yasha123,

К вечеру голова плохо варит :)
26 ноя 19, 18:00    [22025951]     Ответить | Цитировать Сообщить модератору
 Re: Заведение новых пользователей в БД, как верно, эффективно?  [new]
Idol_111
Member

Откуда:
Сообщений: 604
medoed
AndrF
3 способ.

Права пользователям даются внутри приложения, которое работает под своей доменной учеткой. Чтобы не изобретать лисапед можно посмотреть реализацию хотя бы в 1С.

А как потом на уровне субд понять, кто из пользователей завесил базу например /создал блокировку/поудалял лишнего, если все коннекты под одной учетной записью на уровне субд делаются?

Никак. Это не проблема SQL сервера, а дизайна программы.

Представьте себе, что пользователь решил подключится к БД через Студию, минуя Программу. Вот вам и проблемы с безопасностью. И вот это уже Ваш косяк.
28 ноя 19, 01:32    [22027143]     Ответить | Цитировать Сообщить модератору
 Re: Заведение новых пользователей в БД, как верно, эффективно?  [new]
medoed
Member

Откуда:
Сообщений: 928
Idol_111
medoed
пропущено...

А как потом на уровне субд понять, кто из пользователей завесил базу например /создал блокировку/поудалял лишнего, если все коннекты под одной учетной записью на уровне субд делаются?

Никак. Это не проблема SQL сервера, а дизайна программы.

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

Немного не в тему Ваш пример, мне кажется! Если у него не будет собственного логина в базу, то он и через студию к базе не подцепится вовсе! Общий логин для всех пользоватиелей и sql авторизацию - я не рассматриваю вовсе!

А если будет логин, но он через студию что то удалит, то при должном аудите в базе - всё будет видно кто что удалил/изменил, вне зависимости от инструментария доступа к БД!

Сообщение было отредактировано: 28 ноя 19, 10:21
28 ноя 19, 10:20    [22027326]     Ответить | Цитировать Сообщить модератору
 Re: Заведение новых пользователей в БД, как верно, эффективно?  [new]
Idol_111
Member

Откуда:
Сообщений: 604
medoed,

похоже Вы потеряли логическую нить. Перечитайте еще раз всю ветвь.
29 ноя 19, 01:35    [22028303]     Ответить | Цитировать Сообщить модератору
 Re: Заведение новых пользователей в БД, как верно, эффективно?  [new]
L_argo
Member

Откуда:
Сообщений: 1217
1. Еще можно вспомнить про app_role.

2. А также про искажение логинов/паролей, т.е. юзер вводит логин/пароль, который существует в системе в искаженном виде. Тогда вход через сторонние средства будет сильно затруднен.
29 ноя 19, 10:15    [22028461]     Ответить | Цитировать Сообщить модератору
 Re: Заведение новых пользователей в БД, как верно, эффективно?  [new]
AndrF
Member

Откуда:
Сообщений: 2194
medoed

Немного не в тему Ваш пример, мне кажется! Если у него не будет собственного логина в базу, то он и через студию к базе не подцепится вовсе!


Подобное и не нужно - не дело пользователю работать через SSMS или подобное. Доступ обычного юзера - только через программу. Та же программа, при необходимости, ведет свои логи.
29 ноя 19, 15:04    [22028958]     Ответить | Цитировать Сообщить модератору
 Re: Заведение новых пользователей в БД, как верно, эффективно?  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31364
AndrF
medoed

Немного не в тему Ваш пример, мне кажется! Если у него не будет собственного логина в базу, то он и через студию к базе не подцепится вовсе!


Подобное и не нужно - не дело пользователю работать через SSMS или подобное. Доступ обычного юзера - только через программу. Та же программа, при необходимости, ведет свои логи.
Работа всех пользователей в сиквеле под общим логином тоже имеет свои недостатки, не получится реализовать часть функциональности в слое работы с данными.
29 ноя 19, 20:40    [22029231]     Ответить | Цитировать Сообщить модератору
 Re: Заведение новых пользователей в БД, как верно, эффективно?  [new]
Idol_111
Member

Откуда:
Сообщений: 604
alexeyvg
AndrF
пропущено...


Подобное и не нужно - не дело пользователю работать через SSMS или подобное. Доступ обычного юзера - только через программу. Та же программа, при необходимости, ведет свои логи.
Работа всех пользователей в сиквеле под общим логином тоже имеет свои недостатки, не получится реализовать часть функциональности в слое работы с данными.

Извечный выбор между безопасностью и функциональностью, ну или сложность разработки взлетает :).
2 дек 19, 01:09    [22030032]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить