Hooking queries in MS SQL 2k.
От: MHammer  
Дата: 19.04.03 22:54
Оценка:
Кто подскажет как сабж сделать? Надо словить SELECT, добавить к нему WHERE и отправить дальше.Хоть подскажите куда копать,а то нигде ничего нет.
Re: Hooking queries in MS SQL 2k.
От: bizhan  
Дата: 20.04.03 03:33
Оценка:
Здравствуйте, MHammer, Вы писали:

MH>Кто подскажет как сабж сделать? Надо словить SELECT, добавить к нему WHERE и отправить дальше.Хоть подскажите куда копать,а то нигде ничего нет.


К конкретному селекту или ко весм селектам к данной таблице?

А зачем? Может быть тебе другое надо?

Павел
Re[2]: Hooking queries in MS SQL 2k.
От: MHammer  
Дата: 20.04.03 07:29
Оценка:
Здравствуйте, bizhan, Вы писали:

B>Здравствуйте, MHammer, Вы писали:


MH>Кто подскажет как сабж сделать? Надо словить SELECT, добавить к нему WHERE и отправить дальше.Хоть подскажите куда копать,а то нигде ничего нет.


B>К конкретному селекту или ко весм селектам к данной таблице?

Это в принципе не имеет значения-если можно один словить,значит остальные-дело техники.

B>А зачем? Может быть тебе другое надо?

Нужно чтобы от вызывающей программы при определенных обстоятельствах скрывать часть данных,как будто их нет вообще, потому как програма написана и доступа к ее исходникам нет.
Re[3]: Hooking queries in MS SQL 2k.
От: AntoxaM  
Дата: 20.04.03 08:29
Оценка:
Hello MHammer! On 4/20/03 11:29 AM you wrote:

> MH>Кто подскажет как сабж сделать? Надо словить SELECT, добавить к нему

> WHERE и отправить дальше.Хоть подскажите куда копать,а то нигде ничего нет.
> B>К конкретному селекту или ко весм селектам к данной таблице?
> Это в принципе не имеет значения-если можно один словить,значит
> остальные-дело техники.
> B>А зачем? Может быть тебе другое надо?
> Нужно чтобы от вызывающей программы при определенных обстоятельствах
> скрывать часть данных,как будто их нет вообще, потому как програма
> написана и доступа к ее исходникам нет.
а вьюшки не подходят для этой цели?
--
Best Regards,
Anton
Posted via RSDN NNTP Server 1.5 beta
Re[3]: Hooking queries in MS SQL 2k.
От: bizhan  
Дата: 20.04.03 08:33
Оценка:
Здравствуйте, MHammer, Вы писали:

B>А зачем? Может быть тебе другое надо?

MH>Нужно чтобы от вызывающей программы при определенных обстоятельствах скрывать часть данных,как будто их нет вообще, потому как програма написана и доступа к ее исходникам нет.

А как ты по селекту узнаешь, что это именно тот селект, который делает программа?
Я потому и спросил — конкретный или все.

В Оракле я могу задать политику для доступа к таблице.
И, например, для конкретного пользователя показывать только четные строки.
Но это будет действовать на все его селекты.То есть, это к безопастности.

Есть ли аналог в MS SQL — надо посмотреть.

Павел
Re[4]: Hooking queries in MS SQL 2k.
От: MHammer  
Дата: 20.04.03 08:53
Оценка:
Здравствуйте, bizhan, Вы писали:

B>Здравствуйте, MHammer, Вы писали:


B>А как ты по селекту узнаешь, что это именно тот селект, который делает программа?

B>Я потому и спросил — конкретный или все.
Конкретный.

B>В Оракле я могу задать политику для доступа к таблице.

B>И, например, для конкретного пользователя показывать только четные строки.
B>Но это будет действовать на все его селекты.То есть, это к безопастности.

B>Есть ли аналог в MS SQL — надо посмотреть.

ИМХО нет.
Re: Hooking queries in MS SQL 2k.
От: Sinclair Россия https://github.com/evilguest/
Дата: 21.04.03 10:37
Оценка:
Здравствуйте, MHammer, Вы писали:

MH>Кто подскажет как сабж сделать? Надо словить SELECT, добавить к нему WHERE и отправить дальше.Хоть подскажите куда копать,а то нигде ничего нет.

Переименуй таблицу, сделай view с исходным именем таблицы и задай там where.
... << RSDN@Home 1.0 beta 6a >>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[2]: Hooking queries in MS SQL 2k.
От: bizhan  
Дата: 21.04.03 23:44
Оценка:
Здравствуйте, Sinclair, Вы писали:


S>Переименуй таблицу, сделай view с исходным именем таблицы и задай там where.


Хочется общее решение. Переименование таблицы порушит и другие селекты, а
не только один конкретный.

Я тут играюсь на тему прав доступа. Нифига не вышло пока, но интересно

Павел
Re[3]: Hooking queries in MS SQL 2k.
От: EqWu Россия  
Дата: 22.04.03 07:13
Оценка:
Здравствуйте, MHammer, Вы писали:

MH>>Кто подскажет как сабж сделать? Надо словить SELECT, добавить к нему WHERE и отправить дальше.Хоть подскажите куда копать,а то нигде ничего нет.


B>>К конкретному селекту или ко весм селектам к данной таблице?

MH>Это в принципе не имеет значения-если можно один словить,значит остальные-дело техники.

MH>Нужно чтобы от вызывающей программы при определенных обстоятельствах скрывать часть данных,как будто их нет вообще, потому как програма написана и доступа к ее исходникам нет.


Перехватывать селект скорее всего не получится. Предлгаю другой вариант.
1. Переименовать исходную таблицу.
2. Добавить в нее еще один столбец, в котором будет флаг доступа к данной записи (можно или нет ее читать).
3. Создаем вьюшку с опцией WITH VIEW_METADATA. Это позволит делать INSERT и UPDATE с этой вьюшкой.
4. В самой вьюшке прописываем это самое WHERE-условие по свежедобавленному флагу доступа.
Таким образом и доступ можно регулировать "на ходу": изменил флажок у записи и "вуаля" — доступ закрыт/открыт.

В данном случая WITH VIEW_METADATA — одно из главных условий. На такие вьюшки можно даже
триггера писать (INSTEAD triggers)

Отпишись, если получится...
... << RSDN@Home 1.0 beta 6a >>
Re[4]: Hooking queries in MS SQL 2k.
От: EqWu Россия  
Дата: 22.04.03 07:21
Оценка:
Здравствуйте, EqWu, Вы писали:

EW>Здравствуйте, MHammer, Вы писали:


MH>>Кто подскажет как сабж сделать? Надо словить SELECT, добавить к нему WHERE и отправить дальше.Хоть подскажите куда копать,а то нигде ничего нет.


B>>К конкретному селекту или ко весм селектам к данной таблице?

MH>Это в принципе не имеет значения-если можно один словить,значит остальные-дело техники.

MH>Нужно чтобы от вызывающей программы при определенных обстоятельствах скрывать часть данных,как будто их нет вообще, потому как програма написана и доступа к ее исходникам нет.


EW>Перехватывать селект скорее всего не получится. Предлгаю другой вариант.

EW>1. Переименовать исходную таблицу.
EW>2. Добавить в нее еще один столбец, в котором будет флаг доступа к данной записи (можно или нет ее читать).
EW>3. Создаем вьюшку с опцией WITH VIEW_METADATA. Это позволит делать INSERT и UPDATE с этой вьюшкой.
EW>4. В самой вьюшке прописываем это самое WHERE-условие по свежедобавленному флагу доступа.
EW>Таким образом и доступ можно регулировать "на ходу": изменил флажок у записи и "вуаля" — доступ закрыт/открыт.

ВАЖНОЕ ДОБАВЛЕНИЕ!!!
Во WHERE-условии лучше применить user-defined functions (типа WHERE accFlag = dbo.isAccessible()),
чтобы в этой функции (возможно опосредованно через хранимую процедуру) проверять что за юзер
проводит запрос. Ведь прогу то, от которой хочется данные скрывать, ты по имени юзера идентифицируешь?
!!!!!!!!!!!!!!!!!!!!

EW>В данном случая WITH VIEW_METADATA — одно из главных условий. На такие вьюшки можно даже

EW>триггера писать (INSTEAD triggers)

EW>Отпишись, если получится...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.