powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Bug ASA 9 - некорректная отработка прав хранимых процедур
16 сообщений из 16, страница 1 из 1
Bug ASA 9 - некорректная отработка прав хранимых процедур
    #36542946
Фотография Александр Гoлдун
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Суть проблемы. ASA 9.0.2.3581
Есть хранимая процедура, скажем dba.OuterProc. Процедура возвращает result set.
Это процедура внутри использует выборку из другой процедуры, скажем ns.InnerProc.

Есть пользователь user1. У него есть права на выполнение dba.OuterProc, но нет прав на ns.InnerProc.

Так вот, если user1 вызывает процедуру через
Код: plaintext
CALL  dba.OuterProc
то все отрабатывается корректно - он молча получает требуемую выборку.

Но если вызвать
Код: plaintext
SELECT * FROM dba.OuterProc
то ASA ругается, что нет прав на выполнение ns.InnerProc.

Что за бред? Это так и должно быть? Навскидку в доке не нашёл упоминания о подобных различиях в трактовке прав.
...
Рейтинг: 0 / 0
Bug ASA 9 - некорректная отработка прав хранимых процедур
    #36542982
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В SA11 тоже самое.
Я тоже не вижу никаких упоминаний в BOL про это...
...
Рейтинг: 0 / 0
Bug ASA 9 - некорректная отработка прав хранимых процедур
    #36543398
iLLer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Конкретное место не вспомню, но вычитал в доках, что хитрый оптимизатор простые процедуры состоящие из банального "select .. from .." в запросах заменяет как раз на эти самые запросы...). Т.е. еще на этапе разбора. Так что не удивительно, что ядро потом лезет проверять пермишены.

Можно вставить dummy-операции в тело процедуры, чтобы отвадить оптимизатор делать такую подмену.
Либо пересмотреть сам подход использования процедур в качестве источников в запросах, заменяя такие конструкции самостоятельными процедурами.
...
Рейтинг: 0 / 0
Bug ASA 9 - некорректная отработка прав хранимых процедур
    #36543486
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Александр Гoлдун,

Во люди пошли. 1 раз сервер обманули и интересутся, почему 2й раз не выходит )))))
Да потому что он дурак. Был бы умным, и 1й раз бы дулю скрутил.

Переписывайте правильно. Такие "логические бомбы" могут потом вылезти и при смене версии или даже патча.
...
Рейтинг: 0 / 0
Bug ASA 9 - некорректная отработка прав хранимых процедур
    #36543490
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SiemarglВо люди пошли. 1 раз сервер обманули и интересутся, почему 2й раз не выходит )))))
Да потому что он дурак. Был бы умным, и 1й раз бы дулю скрутил.

Переписывайте правильно. Такие "логические бомбы" могут потом вылезти и при смене версии или даже патча.Чего-чего?
С каких это пор официальный синтаксис стал считаться логической бомбой?
...
Рейтинг: 0 / 0
Bug ASA 9 - некорректная отработка прав хранимых процедур
    #36543517
iLLer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SiemarglВо люди пошли. 1 раз сервер обманули и интересутся, почему 2й раз не выходит )))))
Да потому что он дурак. Был бы умным, и 1й раз бы дулю скрутил.

Переписывайте правильно. Такие "логические бомбы" могут потом вылезти и при смене версии или даже патча.

Вот как раз по-правильному было бы, если бы и во второй раз пропускал бы. Т.к. извращения оптимизатора не должны влиять на саму суть. А суть такова, если у пользователя есть права на выполнение конкретной процедуры, то вне зависимости от того что она делает, больше никаких прав для ее выполнения требоваться не должно. Во вском случае идеология АСА такова.
...
Рейтинг: 0 / 0
Bug ASA 9 - некорректная отработка прав хранимых процедур
    #36543868
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообще идеология защиты - если запрещено одно из вложенных действий - невозможно все.

А получается, что вы, имея право войти в зал банка, хотите автоматически получить доступ к банковскому сейфу =)

Поменяют оптимизатор - на вложенные проверки для всех случаев и все "сломается".

2 Iller - обычно наследуются запрещения, а не разрешения.
...
Рейтинг: 0 / 0
Bug ASA 9 - некорректная отработка прав хранимых процедур
    #36544025
V.V.L.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 Siemargl
Вы можете зайти в зал банка и получить деньги через кассу, но к напрямую сейфу у вас доступа нет.
Извините за офф
...
Рейтинг: 0 / 0
Bug ASA 9 - некорректная отработка прав хранимых процедур
    #36544122
escapist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А разве не должны проверятся права на InnerProc от хозяина OuterProc?Вроде раньше именно так было(если внутри идёт выборка из таблицы,то давали право select хозяину процедуры,а не пользователю от которого была вызвана процедура)

А теперь у меня схожий вопрос только уже по представлениям:
есть представление dba.innerview(выборка из таблицы dba.table1);

есть представление u.outerview,которое выбирает из представления dba.innerview(но права такого пользователю u не было дано,равно как и на таблицу dba.table1);

есть пользователь user1 у которого есть право на u.outerview,но нет на dba.innerview(и нет на таблицу dba.table1)
Пользователь user1 легко делает select*from u.outerview,да и не важно что будет написано в этом представлении(можно из dba.table1)-все запросы проходят на ура,лишь бы было право на select из этого представления.Это так и должно быть?
Правда у меня до сих пор 11.0.1.2250
...
Рейтинг: 0 / 0
Bug ASA 9 - некорректная отработка прав хранимых процедур
    #36544776
Фотография Александр Гoлдун
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SiemarglАлександр Гoлдун,

Во люди пошли. 1 раз сервер обманули и интересутся, почему 2й раз не выходит )))))
Да потому что он дурак. Был бы умным, и 1й раз бы дулю скрутил.

Переписывайте правильно. Такие "логические бомбы" могут потом вылезти и при смене версии или даже патча.
Уважаемый! Вы бредите. Либо не поняли смысл моего поста.
Моё использование процедур и защиты абсолютно корректное. Это нормальная практика - ограничить права на выполнение каких-либо действий таким способом, чтобы пользователь мог их сделать только при помощи процедуры.

И в ASA это задекларировано в документации - процедуры выполняются с правами владельца
Для пользователя процедура - черный ящик в плане прав. Тоже самое относится к VIEW, но с оговорками: если есть права непосредственно на VIEW, то права на упоминаемые внутри таблицы необязательны. Если же прав на VIEW нет, то проверяются права как при обычном запросе.

Следуя вашей логике, не было бы возможности, скажем, запретить непосредственное удаление из таблицы, но разрешить это делать из процедуры.

Описанный мною баг - это однозначно баг до тех пор, пока не доказано иное, а именно не указано, где в документации описано подобное поведение.
...
Рейтинг: 0 / 0
Bug ASA 9 - некорректная отработка прав хранимых процедур
    #36544787
Фотография Александр Гoлдун
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
escapistА разве не должны проверятся права на InnerProc от хозяина OuterProc?

Именно так и должно быть! И так оно происходит, если не селектить из процедур. А вот при выборке из процедур этот механизм не срабатывает, что явно является ошибкой ASA.

Вроде раньше именно так было(если внутри идёт выборка из таблицы,то давали право select хозяину процедуры,а не пользователю от которого была вызвана процедура)
escapist
А теперь у меня схожий вопрос только уже по представлениям:
есть представление dba.innerview(выборка из таблицы dba.table1);

есть представление u.outerview,которое выбирает из представления dba.innerview(но права такого пользователю u не было дано,равно как и на таблицу dba.table1);

есть пользователь user1 у которого есть право на u.outerview,но нет на dba.innerview(и нет на таблицу dba.table1)
Пользователь user1 легко делает select*from u.outerview,да и не важно что будет написано в этом представлении(можно из dba.table1)-все запросы проходят на ура,лишь бы было право на select из этого представления.Это так и должно быть?


Да, именно так и должно быть.
...
Рейтинг: 0 / 0
Bug ASA 9 - некорректная отработка прав хранимых процедур
    #36544837
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Александр Гoлдун
Уважаемый! Вы бредите. Либо не поняли смысл моего поста.

Угу. Брежу. Поскольку не понял из первого поста сразу, что Вы тоже хотите получить два отказа в доступе)
...
Рейтинг: 0 / 0
Bug ASA 9 - некорректная отработка прав хранимых процедур
    #36544842
Фотография Александр Гoлдун
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SiemarglВообще идеология защиты - если запрещено одно из вложенных действий - невозможно все.
...
2 Iller - обычно наследуются запрещения, а не разрешения.
Вы документацию по ASA читали? Мы обсуждаем тут не "вообще идеологию" и не "обычно наследуются" , а вполне четко задокументированную идеологию, которая на моей памяти благополучно и успешно работала и использовалась со времен SQL Anywhere 5.0, ибо весьма логична и удобна.

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

iLLer
Можно вставить dummy-операции в тело процедуры, чтобы отвадить оптимизатор делать такую подмену.

Спасибо за идею. Помогло. Только сделал не dummy-операцию, а использовал временную таблицу во внешней процедуре: в нее загонялся результат внутренней и уже из нее селектилось.
Лишнее доказательство того, что это действительно баг.
...
Рейтинг: 0 / 0
Bug ASA 9 - некорректная отработка прав хранимых процедур
    #36544928
Фотография Александр Гoлдун
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SiemarglАлександр Гoлдун
Уважаемый! Вы бредите. Либо не поняли смысл моего поста.

Угу. Брежу. Поскольку не понял из первого поста сразу, что Вы тоже хотите получить два отказа в доступе)
Нет, я хотел корректный вызов внешней процедуры в любых вариантах одинаково БЕЗ отказов в доступе. Именно так, как оно и должно быть.

Если вы не знакомы с ASA, то вот ссылки для ознакомления, непосредственно по обсуждаемой теме:
http://infocenter.sybase.com/help/index.jsp?topic=/com.sybase.help.sqlanywhere.11.0.1/dbadmin_en11/uvproc.html
http://infocenter.sybase.com/help/index.jsp?topic=/com.sybase.help.sqlanywhere.11.0.1/dbadmin_en11/perexp.html
...
Рейтинг: 0 / 0
Bug ASA 9 - некорректная отработка прав хранимых процедур
    #36544991
iLLer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Александр ГoлдунСпасибо за идею. Помогло. Только сделал не dummy-операцию, а использовал временную таблицу во внешней процедуре: в нее загонялся результат внутренней и уже из нее селектилось.
Лишнее доказательство того, что это действительно баг.
Вот , что касаемо переписи запроса оптимизатором.
В 9-ке видимо такое тоже было, только в доках об этом молчок. Видимо процедура состояла только из одного запроса, потому оптимизатор и надругался над ней. Это конечно баг, но он тесно связан с этой фичей; багофича или фичебаг.)))
...
Рейтинг: 0 / 0
Bug ASA 9 - некорректная отработка прав хранимых процедур
    #36545499
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Александр Гoлдун,

Прочитал. Я слишком много от нее хотел в плане проверок =)
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Bug ASA 9 - некорректная отработка прав хранимых процедур
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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