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

Откуда:
Сообщений: 33
Здравствуйте,

Имеется база данных на платформе MSSQL, к которой имеют доступ разнообразные клиенты, в том числе и сторонние.
Подскажите пожалуйста, имеется ли принципиальная возможность отследить, является ли клиент своим или чужим, на уровне транзакции? Например, клиент посылает запрос на изменение таблицы, при этом каким-то образом передается информация о ранее выданном сертификате клиенту, например этим сертификатом клиент шифрует какое либо из полей запроса. При проходе запроса перед записью информации в таблицу отрабатывает триггер, который проверяет (расшифровывает это значение), и в случае неудачи отшивает клиента, причем отшивает таким образом, чтобы клиент понял, что его транзакция не прошла?
Возможно ли такое в принципе?

Спасибо.
15 дек 13, 12:43    [15294924]     Ответить | Цитировать Сообщить модератору
 Re: Определение клиента по принципу "свой-чужой"  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37069
И все клиенты ходят под одним логином sa, да?
15 дек 13, 12:45    [15294929]     Ответить | Цитировать Сообщить модератору
 Re: Определение клиента по принципу "свой-чужой"  [new]
aleks2
Guest
Не жмоться на логины.
15 дек 13, 12:46    [15294931]     Ответить | Цитировать Сообщить модератору
 Re: Определение клиента по принципу "свой-чужой"  [new]
max950
Member

Откуда:
Сообщений: 33
Нет, клиенты ходят под разными логинами, но специфика заключается в том, что "неправильный" клиент может заходить под "правильным" логином. Естественно, вариант с логинами рассматривался и сожалению не устраивает. По поэтому поднялся вопрос про такую экзотику.
15 дек 13, 12:56    [15294940]     Ответить | Цитировать Сообщить модератору
 Re: Определение клиента по принципу "свой-чужой"  [new]
Dmitry V. Liseev
Member [заблокирован]

Откуда: Санкт-Петербург
Сообщений: 5489
А если несколько запросов? От своих и от чужих? Триггер откатит только часть транзакции?
15 дек 13, 13:15    [15294960]     Ответить | Цитировать Сообщить модератору
 Re: Определение клиента по принципу "свой-чужой"  [new]
Sergey Sizov
Member

Откуда:
Сообщений: 1528
max950
Нет, клиенты ходят под разными логинами, но специфика заключается в том, что "неправильный" клиент может заходить под "правильным" логином.
А это уже чисто организационная проблема, которая, по определению, программными средствами не решается. Не надо давать те права, которые давать таки не хочется. И тогда проблема "и невинность соблюсти, и капитал приобрести " отпадет сама собой.
15 дек 13, 13:32    [15294998]     Ответить | Цитировать Сообщить модератору
 Re: Определение клиента по принципу "свой-чужой"  [new]
max950
Member

Откуда:
Сообщений: 33
Sergey Sizov
max950
Нет, клиенты ходят под разными логинами, но специфика заключается в том, что "неправильный" клиент может заходить под "правильным" логином.
А это уже чисто организационная проблема, которая, по определению, программными средствами не решается. Не надо давать те права, которые давать таки не хочется. И тогда проблема "и невинность соблюсти, и капитал приобрести " отпадет сама собой.

Согласен, но по факту имеем то, что имеем. По сути, это попытка в некотором роде загнать джина в бутылку.
15 дек 13, 13:38    [15295014]     Ответить | Цитировать Сообщить модератору
 Re: Определение клиента по принципу "свой-чужой"  [new]
Dmitry V. Liseev
Member [заблокирован]

Откуда: Санкт-Петербург
Сообщений: 5489
Вы пытаетесь создать свою собственную аутентификацию. Сделать можно. Но секурно не будет. Надо смотреть модель угроз. Это зависит от архитектуры системы. Если это банк, то скажите название, чтобы я успел закрыть счета в нём.
15 дек 13, 13:53    [15295030]     Ответить | Цитировать Сообщить модератору
 Re: Определение клиента по принципу "свой-чужой"  [new]
max950
Member

Откуда:
Сообщений: 33
Dmitry V. Liseev
Вы пытаетесь создать свою собственную аутентификацию. Сделать можно. Но секурно не будет. Надо смотреть модель угроз. Это зависит от архитектуры системы. Если это банк, то скажите название, чтобы я успел закрыть счета в нём.

Нет, это не банк. И задача не стоит так жестко. "Неправильные" клиенты, они "почти правильные", просто есть необходимость установить совместные правила работы разных клиентов.
15 дек 13, 14:03    [15295043]     Ответить | Цитировать Сообщить модератору
 Re: Определение клиента по принципу "свой-чужой"  [new]
Dmitry V. Liseev
Member [заблокирован]

Откуда: Санкт-Петербург
Сообщений: 5489
max950
Dmitry V. Liseev
Вы пытаетесь создать свою собственную аутентификацию. Сделать можно. Но секурно не будет. Надо смотреть модель угроз. Это зависит от архитектуры системы. Если это банк, то скажите название, чтобы я успел закрыть счета в нём.

Нет, это не банк. И задача не стоит так жестко. "Неправильные" клиенты, они "почти правильные", просто есть необходимость установить совместные правила работы разных клиентов.
Вам в любом случае надо оценить последствия случайного/преднамеренного подмена клиента. И уже исходить из этого. Может, Вы клиенту можете полностью доверять. Тогда пусть просто сам передаёт дополнительный параметр, свой он или чужой.
15 дек 13, 14:15    [15295062]     Ответить | Цитировать Сообщить модератору
 Re: Определение клиента по принципу "свой-чужой"  [new]
max950
Member

Откуда:
Сообщений: 33
Dmitry V. Liseev
max950
пропущено...

Нет, это не банк. И задача не стоит так жестко. "Неправильные" клиенты, они "почти правильные", просто есть необходимость установить совместные правила работы разных клиентов.
Вам в любом случае надо оценить последствия случайного/преднамеренного подмена клиента. И уже исходить из этого. Может, Вы клиенту можете полностью доверять. Тогда пусть просто сам передаёт дополнительный параметр, свой он или чужой.

Попробую упростить задачу:
есть одна таблица, в которую пишут разные клиенты, пусть речь идет не про транзакцию, а простой запрос на INSERT,
в запросе клиент передает свой идентификатор (простое число),имеется триггер, который перед записью в таблицу сравнивает свой идентификатор со своим списком, если значение не найдено, то запрос клиента не проходит. Такая схема имеет право на существование? Спасибо.
15 дек 13, 14:29    [15295081]     Ответить | Цитировать Сообщить модератору
 Re: Определение клиента по принципу "свой-чужой"  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37069
max950
Dmitry V. Liseev
пропущено...
Вам в любом случае надо оценить последствия случайного/преднамеренного подмена клиента. И уже исходить из этого. Может, Вы клиенту можете полностью доверять. Тогда пусть просто сам передаёт дополнительный параметр, свой он или чужой.

Попробую упростить задачу:
есть одна таблица, в которую пишут разные клиенты, пусть речь идет не про транзакцию, а простой запрос на INSERT,
в запросе клиент передает свой идентификатор (простое число),имеется триггер, который перед записью в таблицу сравнивает свой идентификатор со своим списком, если значение не найдено, то запрос клиента не проходит. Такая схема имеет право на существование? Спасибо.
Не имеет. Что помешает клиенту передать нужный идентификатор?
15 дек 13, 14:31    [15295086]     Ответить | Цитировать Сообщить модератору
 Re: Определение клиента по принципу "свой-чужой"  [new]
max950
Member

Откуда:
Сообщений: 33
Гавриленко Сергей Алексеевич
max950
пропущено...

Попробую упростить задачу:
есть одна таблица, в которую пишут разные клиенты, пусть речь идет не про транзакцию, а простой запрос на INSERT,
в запросе клиент передает свой идентификатор (простое число),имеется триггер, который перед записью в таблицу сравнивает свой идентификатор со своим списком, если значение не найдено, то запрос клиента не проходит. Такая схема имеет право на существование? Спасибо.
Не имеет. Что помешает клиенту передать нужный идентификатор?

Это всего лишь упрощение задачи, в своем вопросе я хотел понять, можно ли на уровне триггеров разделить запросы правильных и неправильных клиентов. Если такое в принципе возможно, то потом можно уже думать не про простой идентификатор, а про тот или иной вариант ключа. Главное понять, возможно ли в принципе отсечь клиента до того, как он сделает запись в таблицу.
15 дек 13, 14:40    [15295104]     Ответить | Цитировать Сообщить модератору
 Re: Определение клиента по принципу "свой-чужой"  [new]
Glory
Member

Откуда:
Сообщений: 104760
max950
можно ли на уровне триггеров разделить запросы правильных и неправильных клиентов.

Можно. Если есть критерии такого разделения. И критерии эти доступны серверу
16 дек 13, 10:40    [15297279]     Ответить | Цитировать Сообщить модератору
 Re: Определение клиента по принципу "свой-чужой"  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31442
max950
Главное понять, возможно ли в принципе отсечь клиента до того, как он сделает запись в таблицу.
Можно в триггере запретить делать неразрешённые изменения с выдачей ошибки, можно в триггере тихо игнорировать попытки сделать такие изменения.
Главное, как в триггере узнать, можно этому коннекту делать данные изменения, или нельзя.

P.S. Передать данные (итпа ключа) для коннекта из клиента можно в CONTEXT_INFO
16 дек 13, 11:04    [15297428]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить