powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Как правильней организовать аутентификацию?
14 сообщений из 14, страница 1 из 1
Как правильней организовать аутентификацию?
    #33833526
vo1d
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ситуация:
- есть БД MS SQL Server 2005 с ОЧЕНЬ ценными конфиденциальными данными;
- есть к ней веб-интерфейс - приложение на ASP.NET 2.0, исполняется на IIS на единственном выделенном под него сервере. Вся страница при инициализации собирается из БД.

Можно:
- для всех пользователей определить права НА САМОЙ БД, и просто пытаться из нее брать для пользователя то, что она даст ему с его правами (т.е. каждое подключение к БД осуществляется с учетной записью пользователя)
- для всех пользователей ХРАНИТЬ права в БД, на уровне приложения определяя, должна ли быть доступна та или иная информация для него или нет (само же приложение будет работать с БД с очень привилегированной учетной записью, единой для всех)

Подозреваю, что первый способ "безопасней", а второй - логичней и проще в реализации. Подозреваю, что при должной организации криптографической защиты и грамотном контроле сессий второй способ может обеспечить не меньшую степень безопасности. Очень плохо представляю, какой уровень доступа к самому SQL Server'у можно получить через web в обход приложения, какие могут быть опасные дыры в IIS, ставящие под угрозу данные при неразграничении прав на саму БД.

Прошу подсказать, верны ли мои предположения, как лучше все это организовать, какие преимущества и недостатки у обоих описанных путей, какие тут могут быть подводные камни.vo1d
...
Рейтинг: 0 / 0
Как правильней организовать аутентификацию?
    #33833616
manovcih
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Для каждого пользователя имеется свой набор данных или пользователей можно объеденить в группы?
...
Рейтинг: 0 / 0
Как правильней организовать аутентификацию?
    #33833928
ZeusTheTrueGod
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Правильней не спрашивать об этом на форуме
Автор топика, сколько процентов людей(из тех что вам ответят) нормально тут разбираются в безопасности?

Вам будет предложено много способов(что-то вроде я так всегда делал, и поэтому оно надёжно), но никто не будет нести никакой ответственности за свои предложения, а если вы задали этот вопрос не просто так, то наверное будете её нести :). Вот почему лучше не задавать подобные вопросы в форумах, где каждый выскажет своё мнение, ни на чём не основанное.

Ну а если по делу,то 1 и 2 способы нисколько не противоречят друг-другу.
...
Рейтинг: 0 / 0
Как правильней организовать аутентификацию?
    #33834519
vo1d
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
  Для каждого пользователя имеется свой набор данных или пользователей можно объеденить в группы? (manovich)

Пользователи делятся в группы, авторизация будет на основе ролей - это все не о том. Вопрос был, как работать с хранилищем данных из приложения: под разными учетными записями (каждому - своя на базе), или под sa/dbo, а права разграничивать на уровне приложения (разумеется, на основе прав/ролей, ОПИСАННЫХ в таблицах БД).

Т.е. как безопасней, быстрей, менее хлопотно??...vo1d
...
Рейтинг: 0 / 0
Как правильней организовать аутентификацию?
    #33834537
vo1d
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А где об этом, блин, спрашивать?
Может, мне Дино Эспозито письмо написать прикажете?? Или просто позвонить Дону Ривесту, сказать, "эй, братан, ты самый главный секьюрный перец - посоветуй..." ((:

А способы в высшей степени противоречивые - использование одного делает применение другого бессмысленным...
Отвечайте, плз, по делу - кто что думает и почему!

PS: Если б на форумах за посты еще и ответственность была, все бы давно сидели (:vo1d
...
Рейтинг: 0 / 0
Как правильней организовать аутентификацию?
    #33834548
C...R...a...S...H
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если данные особо ценные, то я бы делал так:
Создал достаточное кол-во пользователей в SQL Server
Создал бы набор хранимок которые в соответствии с правами выдавали бы только нужные данные, при чем данные были бы в таблицах зашифрованы, а хранимка их перефишровывала. После получение данных в ASP.NET он бы так же рассшифровывались.
----------------------------------------
Knowledge is P...O...w...E...R!
My site
...
Рейтинг: 0 / 0
Как правильней организовать аутентификацию?
    #33835223
manovcih
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да, для каждой роли по хранимой процедуре, которая возвращает только данные для этой роли. Для каждой роли по пользователю в БД, который имеет доступ только к его процедуре и не имеет доступа к общей таблице.
...
Рейтинг: 0 / 0
Как правильней организовать аутентификацию?
    #33836282
vo1d
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да как данные пользователю из базы выдергивать - это не вопрос. Вопрос, как к ней подключаться самому приложению ASP.NET: под разными ограниченными учетками (т.е. создавать для пользователей учетки на БД), или под одной мощной (а уже потом заглядывать в свои таблицы, определять, какие права кому положены и что кому дать). Т.е. сам вопрос: на БД создавать для пользователей учетки, роли, разграничивать доступ, или управлять доступом в приложении?
PS: А хранимки и шифрование - уже все готово давно, остался только этот вопрос, который покою не дает...vo1d
...
Рейтинг: 0 / 0
Как правильней организовать аутентификацию?
    #33836313
vo1d
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мне там еще понадобится обращаться к некоторым системным представлениям и процедурам - как лучше, права на них раздавать, или вызывать из своих?vo1d
...
Рейтинг: 0 / 0
Как правильней организовать аутентификацию?
    #33836397
C...R...a...S...H
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я бы голосовал про БД (Лучше юзать то, что до тебя 10^6 человек проверело, чем свое писать и потом рисковать).
А обращение к системным процедумам можно вынести в обычную хранимку.
P.S.
"управлять доступом в приложении" - можно сделать интерфейс добавление пользователе и разграничение доступа на SQL Server.
За то будет вероятность потерять данные только если уйдет пароль Админа.
А под другим логинами будет украдена только часть информации.----------------------------------------
Knowledge is P...O...w...E...R!
My site
...
Рейтинг: 0 / 0
Как правильней организовать аутентификацию?
    #33836818
ZeusTheTrueGod
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Прежде всего для аутентификации, разделения прав, ограничения доступа и прочих проблем, связанных с безопасностью, самым верным способом является использование готового механизма. Написание же собственных процедур и функций безопасности приведёт к большему количеству незаметных «дырок». Вот почему предлагается использовать готовые схемы и их комбинации.

Предлагаются следующие шаги для решения

1.Создание сервера с AD(Active Directory)
На отдельном компьютере (Win2kServer или Win2003Server) делаем контроллер домена AD. Создаём пользователей и группы в соотетствии с тем,как будут разграничаться права на sql сервере. Например: создаём группу sqlServerAdmin, юзеров admin1 и admin2 внутри неё а также группу sqlUsers, юзеров sqlUser1,sqlUser2. На AD указываем все необходимые опции,связанные с паролями(там же мы сможем, к примеру, сделать иденификацию по карточке).


2. Организация данных на sql-сервере.
Под sql сервер тоже выделим отдельный компьютер. На sql сервере будем использовать только windows аутентификацию, в качестве пользователей и групп будем брать из AD(предыдущий пункт).

Предположим, что вся конфедициальная информация хранится в БД с именем db1 в таблицах tbl1, tbl2. Ставим группу sqlAdmins в качестве dbo для db1. Всем остальным группам ограничмваем доступ к db1(разрешаем только выполнять хранимки и всё), а также запрещаем им доступ к каким-либо другим базам данных. Теперь нужно написать хранимые процедуры, которые работают с таблицами tbl1 и tbl2 и выполняют требуемые операции. На выполнение(только на выполнение, ни на изменение, ни на чтение доступа быть не должно) этих хранимых процедуры и должен быть доступ у группы sqlUsers.

Результат первых двух шагов: Работа с sql сервером возможна только при аутентификации в window (AD). Те, кому положен доступ, могут работать только с хранимыми процедурами.

Тем не менее, предлагаю на этом построение защиты не заканчивать.

3. Ограничение доступа к SQL серверу
Возьмём ещё один компьютер , на котором будет стоять терминальный сервер(типа Citrix). Напишем приложение(на VB), которое работает с нашим SQL сервером из пункта два. Юзерам на терминальном сервере разрешим выполнять только это клиенсткое приложение(ограничение прав на запуск только одного конкретного приложения так же решается с помощью ActiveDirectory). На компьютере, где стоит sql сервер, в файерволе запретим какие-либо обращения к компьютеру по сети кроме как с терминалоьного сервера и сервера AD(оставим открытые порты,требуемы для Window аутентификации и для работы sql сервера). Кроме того, для всех из sqlUsers запретим вход в домен со всех компьютеров, кроме как с терминального сервера.

Выполнение третьего пункта значительно ограничивает доступ к базе:
1) доступ доступен только с одного компьютера, на котором доменная AD windows аутентификация
2) поскольку на терминальном сервере можно запускать только клиенсткое приложение, то нельзя посылать к серверу какие-либо свои запросы или просто пакеты

В качестве «дополнительных» мер предлагается вести в отдельную БД запись о выполнении всех хранимых процедур(кто,когда, с какими параметрами). Это позволит узнать о том, кто и когда какие делал запросы(можно найти виновника утечки).
...
Рейтинг: 0 / 0
Как правильней организовать аутентификацию?
    #33836961
manovcih
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Надежнее если каждый пользователь будет коннектится со своим логином (ну понятно, что не напрямую, а ASP.NET). Но это если количество пользователей не большое и для каждого можно создать учетную запись в SQL Server. Правда при этому про пул подключений к базе данных можно забыть. Если пользователей много, то можно использовать по одному логину для каждой роли.
...
Рейтинг: 0 / 0
Как правильней организовать аутентификацию?
    #33837231
vo1d
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ZeusTheTrueGod писал:
На отдельном компьютере (Win2kServer или Win2003Server) делаем контроллер домена AD. Создаём пользователей и группы в соотетствии с тем,как будут разграничаться права на sql сервере. Например: создаём группу sqlServerAdmin, юзеров admin1 и admin2 внутри неё а также группу sqlUsers, юзеров sqlUser1,sqlUser2. На AD указываем все необходимые опции,связанные с паролями(там же мы сможем, к примеру, сделать иденификацию по карточке).

Т.е. Вы предлагаете для каждого нового пользователя заводить еще и учетку в домене, а потому уже ее регистрировать на sql-сервере, присоединять к нужным ролям/создавать новую специально для нее. Причем заводить-то ее в домене придется программно (не все же пользователи наперед известны, их порядка 10 тыс...) Геморройно очень, и заводить будет один фиг робот с админскими правами УЖЕ В ДОМЕНЕ - опять страшненько, так можно без всего вообще остаться...
Идея про терминальный сервер хорошая - спасибо!!vo1d
...
Рейтинг: 0 / 0
Как правильней организовать аутентификацию?
    #33838394
ZeusTheTrueGod
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Void, как вы себе представляет 10 тысяч юзеров и базу с очень конфедициальной информацией? Все 10 тысяч юзеров имеют к ней доступ? Да кто угодно из них может "слить" какую-то часть вашей базы - поэтому желательно на каждого завести логин и вести логи. Кроме того, каждого юзера предлагается занести в AD именно для того,чтобы делать аутентификацию не самому, а с помощью Windows. Вы бы хоть что-то по реальнее в условии задачи придумали. Да и задач то на добавление юзера не так много - создать логин на контроллере домена, добавить в нужную группу - вот и все задачи. Это можно и без робота сделать.

Может нужно переформулировать условие: в базе есть конфедициальная информация и прочая, часть народа должна иметь доступ к конфедициальной(человек 10-15), а остальные - к прочей. Может именно это вам надо? Если не секрет - дайте полное условие.Например, у вас есть 10 ферм, в каждой по 10-15 коров, коровы дают молоко. Информация о надое каждой коровы каждый день - очень конфедициальная, об этом должен знать только её пастух, а вот информация о полном удое на всех фермах за год - не конфедицициальная, и нужно оповестить её для всех 100 работников(пастухи,слесари,доярки).Нужно обеспечить аутнетификацию пользователей бд.
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Как правильней организовать аутентификацию?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]