powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / ASA 9 Вопрос по защите таблиц от изменений
19 сообщений из 19, страница 1 из 1
ASA 9 Вопрос по защите таблиц от изменений
    #32758630
Фотография Vovaka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно ли каким-нибудь образом защитить таблицу от изменения ?
Суть вот в чем: есть некоторое приложение, работающее с БД, есть в нем некоторые лицензионные ограничения, если клиент что-то раширяет ему перекомпилируется приложение, хочется эти ограничения хранить в самой БД, чтобы избегать перекомпилляций ехе-шника. Можно было бы сделать таблицу от dba, но пользователь должен делать backup БД, т.е. ему нужны права dba ...
...
Рейтинг: 0 / 0
ASA 9 Вопрос по защите таблиц от изменений
    #32758853
Фотография ASCRUS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Первый вариант:
Если Backup должен делаться по времени, то можно сделать EVENT, который будет автоматом делать резервные копии. Плюс на всякие администраторские действия, если их реализовать в собственном приложении пользователю не обязательно знать пароль DBA, достаточно в своей БД хранить пометку, может ли пользователь выполнять администраторские функции или нет. В таком случае пользователь как обычно коннектиться к БД под своим логином, а клиентское приложение считывает флаг наличия администраторских прав. В случаях проведения операций, разрешенных только DBA, клиентское приложение всегда спокойно может открыть вторую сессию к БД под логином DBA и вшитым в нее и закрытым паролем и в пределах этой сессии провести все необходимые операции.

Второй вариант:
Сделать еще одну небольшую БД, стартовать и цеплять ее как удаленный сервер к основной БД. DBA там можно закрыть неизвестным для пользователя паролем и разрешать доступ к таблицам дополнительной БД только на чтение для удаленных пользователей основной БД.
...
Рейтинг: 0 / 0
ASA 9 Вопрос по защите таблиц от изменений
    #32758937
Andyn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть еще третий вариант.

Воспользоваться функцией ENCRYPT для шифрования ваших данных (не помню с какой версии, в 9 точно есть). Шифрует по указанному ключу. Для расшифровки - DECRYPT.
...
Рейтинг: 0 / 0
ASA 9 Вопрос по защите таблиц от изменений
    #32759109
Фотография Vovaka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Получается, что только backup по event дает 100% надежность. Все остальные варианты являются потенциально взламываемыми ...
...
Рейтинг: 0 / 0
ASA 9 Вопрос по защите таблиц от изменений
    #32760318
Andyn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VovakaПолучается, что только backup по event дает 100% надежность. Все остальные варианты являются потенциально взламываемыми ...Ну, как сказать... Если задаться целью, взломать можно практически любую защиту программы, вопрос в том, стоит ли эта программа таких усилий. В том числе и таких усилий по ее защите. Если вы пишете на заказ, за нормальную цену, вряд ли вашему заказчику будет интресно терять вас как разработчика для последующей разработки/сопровождения, взламывая из-за двух трех фич вашу программу. Имхо, конечно.
...
Рейтинг: 0 / 0
ASA 9 Вопрос по защите таблиц от изменений
    #32760372
Фотография Vovaka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Andyn Если вы пишете на заказ, за нормальную цену, вряд ли вашему заказчику будет интресно терять вас как разработчика для последующей разработки/сопровождения, взламывая из-за двух трех фич вашу программу.

Нет, продукт все таки тиражируемый, хоть и совсем немного. И случаи несанкционированного использования тоже известны. Т.е. кто-то уже снимал защиту HASP. Так что защищать надо по возможности по максимуму.
...
Рейтинг: 0 / 0
ASA 9 Вопрос по защите таблиц от изменений
    #32760494
Andyn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тогда можно попробовать сделать так: оформить раздачу прав в виде процедуры возвращающей result set и сделать этой процедуре set hidden. Т.о. процедура выполняется, а что именно она делает никто не узнает и исправить текст ее не сможет, своего рода неразборный черный ящик. По set hidden см. главу Hiding the contents of procedures, functions, triggers and views в BOL.
...
Рейтинг: 0 / 0
ASA 9 Вопрос по защите таблиц от изменений
    #32762455
Dmitriy Popov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
VovakaМожно было бы сделать таблицу от dba, но пользователь должен делать backup БД, т.е. ему нужны права dba ...

Почему-то никто из ответивших не вспомнил про такой хороший способ организации безопасности, как хранимые процедуры. Чтобы backup'ить базу Вашему пользователю не нужны права DBA.

Код: plaintext
1.
2.
3.
4.
5.
6.
CREATE PROCEDURE SYS_Backup(
  @p_Path LONG VARCHAR
)
AS
BEGIN
  EXECUTE('BACKUP DATABASE DIRECTORY ' || @p_Path)
END

Не забудьте, что если передаете путь как строку, то неплохо будет в переменной @p_Path удвоить символы back slash "\", также как и одинарные кавычки. Можете для этого строковую функцию написать.
...
Рейтинг: 0 / 0
ASA 9 Вопрос по защите таблиц от изменений
    #32762472
Фотография ASCRUS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гм, действительно не вспомнили :) В ASA на вызываемую ХП действуют права влалельца, ее создавшего. Соотвествующе процедура, созданная из под DBA и вызываемая из под других логинов может спокойно вызвать тот же BACKUP.

авторНе забудьте, что если передаете путь как строку, то неплохо будет в переменной @p_Path удвоить символы back slash "\", также как и одинарные кавычки. Можете для этого строковую функцию написать.
В 9-ке уже не обязательно удваивать символы, видимо они вделали в нее какой то механизм, который позволяет указывать, что в передаваемой строке нет управляющих комбинаций. Для одинарных кавычек функцию тоже писать не надо:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
CREATE PROCEDURE DBA.SYS_Backup(
  @p_Path CHAR( 250 )
)
AS
BEGIN
  EXECUTE IMMEDIATE WITH RESULT SET OFF
    'BACKUP DATABASE DIRECTORY ''' || @p_Path || '''' ;
END;
Так должно сойти :)
...
Рейтинг: 0 / 0
ASA 9 Вопрос по защите таблиц от изменений
    #32763558
Dmitriy Popov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да, я действительно забыл заключить путь в кавычи. Так что надо как ASCRUS написал, а то вообще не заработает.

Удваивать кавычки все равно надо.

Например, если ваш путь "C:\John's files", то команда будет выглядеть

BACKUP DATABASE DIRECTORY 'John's files'

Кавычка после John "закроет" строку, и анализатор ругнется на остаток строки.
...
Рейтинг: 0 / 0
ASA 9 Вопрос по защите таблиц от изменений
    #32764512
Фотография Vovaka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторEXECUTE IMMEDIATE WITH RESULT SET OFF
'BACKUP DATABASE DIRECTORY ''' || @p_Path || '''' ;


ругается на RESULT почему то ...
но без RESULT SET OFF создается нормально, по умолчанию как я понял, RESULT SET отключен как раз ...
...
Рейтинг: 0 / 0
ASA 9 Вопрос по защите таблиц от изменений
    #32764569
Фотография ASCRUS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А вот надо полный номер билда указывать, тогда и ругаться не будет :) Опция WITH RESULT SET по моему была введена в 9.01 :)
...
Рейтинг: 0 / 0
ASA 9 Вопрос по защите таблиц от изменений
    #32764701
Фотография Vovaka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
9.0.1.1899
...
Рейтинг: 0 / 0
ASA 9 Вопрос по защите таблиц от изменений
    #32764716
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ASCRUS
В ASA на вызываемую ХП действуют права влалельца, ее создавшего. Соотвествующе процедура, созданная из под DBA и вызываемая из под других логинов может спокойно вызвать тот же BACKUP.
...

EXECUTE IMMEDIATE WITH RESULT SET OFF
'BACKUP DATABASE DIRECTORY ''' || @p_Path || '''' ;



А что , и DynExec дают делать под правами владельца ? Это здорово, если так.
А в ASE вот наоборот, вся процедура под правами владельца, а EXEC('...') - под правами пользователя - идиотизм, блин. Видимо, потенциальной security hole так боятся, что такую вот фигню утворили.
...
Рейтинг: 0 / 0
ASA 9 Вопрос по защите таблиц от изменений
    #32764756
Фотография ASCRUS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторА что , и DynExec дают делать под правами владельца ? Это здорово, если так.
А в ASE вот наоборот, вся процедура под правами владельца, а EXEC('...') - под правами пользователя - идиотизм, блин. Видимо, потенциальной security hole так боятся, что такую вот фигню утворили.
Угу - именно и круто, что можно наделать из под DBA нужных процедур, отвечающих за администрирование, разрешить грантами на их запуск пользователями и не давать пользователю никакого DBA. Плюс для дополнительного разруливания администрирования по расписанию или на подписанные события БД можно делать event-ы, которые тоже запускаются с правами их владельца. Все эти возможности, плюс правильная архитектура и позволяют ASA выглядеть снаружи, как СУБД с нулевым администрированием - ведь фактически все администрирование можно запрограммировать прямо внутри БД и пользователю давать только черный работающий ящик.
...
Рейтинг: 0 / 0
ASA 9 Вопрос по защите таблиц от изменений
    #32765964
banshee
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А мне вот интересно стало: процедуры, которые скрыты, выгрузить UNLOAD'ом можно? Если нет, то как тогда такую базу перезагружать (хотя, насколько я понял, эта опция только для конечных потребителей продукта и тогда это не так важно), а если да, то тогда это потенциальная лазейка. Залез в хелп: там говорится, что перезагружать можно, а текст процедуры скрэмблируется и хранится в БД в нечитаемом виде. А еще написано, что прятать можно не только процедуры, но и функции, представления и триггеры.
...
Рейтинг: 0 / 0
ASA 9 Вопрос по защите таблиц от изменений
    #32766207
Фотография ASCRUS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bansheeА мне вот интересно стало: процедуры, которые скрыты, выгрузить UNLOAD'ом можно? Если нет, то как тогда такую базу перезагружать (хотя, насколько я понял, эта опция только для конечных потребителей продукта и тогда это не так важно), а если да, то тогда это потенциальная лазейка. Залез в хелп: там говорится, что перезагружать можно, а текст процедуры скрэмблируется и хранится в БД в нечитаемом виде. А еще написано, что прятать можно не только процедуры, но и функции, представления и триггеры.
Есть процедурка sp_test. Пишу:
Код: plaintext
ALTER PROCEDURE sp_test SET HIDDEN;
смотрю в Central на ее описание:
авторcreate procedure "DBA"."sp_test" hidden '(!$$))()*))$((($())(((())$()(()(b5!x$!@@5=b!$!5!@$5x(b@=$!b$W%*5)$))()()(()$((((($()((((($$!((((!#%(*@@$!bmx5!@m=bxm@$!S@=5x5%@$($)(($)((()(($(&$$$$!$))(*$$((((x5m!@b$!b$W*@@@@%$@%($!#!5@(=$@(!$(()($$%%$)((()()$(((&$$$$!$(()!mmm*@@@@(xS!@0x5bWx5W5@%@(!mmm*)(($$$$$$!$$$(&$$)(($))((())$$$$@@@@@5%Sx5%@.!%W@%$%@m*@@@@%@(=$)*))$))()$(((($$!%((((()(()(())$@$5x(bxb$%=(xm.*@@bxmm@$!b$(b@=$))(*$$$$$!(()($$)(((()$$!%$$%))(!b$xW%.*@@b!m!b$*@05=S*@@@@b$!b$(((!*!($'
смотрю в sys.SysProcedure - такое же описание лежит в поле Proc_Defn и NULL в поле Source. Выгружаю БД - в скрипте на создание процедуры такой же текст. Вывод - перегружать можно, взломать и посмотреть нельзя.
...
Рейтинг: 0 / 0
ASA 9 Вопрос по защите таблиц от изменений
    #32766214
Фотография ASCRUS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
P.S. Решение как всегда в духе Watcom - просто и элегантно :) Кстати за что люблю ASA - за то что проверить чего нибудь - дело 3 сек.
...
Рейтинг: 0 / 0
ASA 9 Вопрос по защите таблиц от изменений
    #32767923
Фотография Vovaka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 ASCRUS
Можно было бы резюме этой ветки в FAQ выложить, ИМХО интересная тема ...
...
Рейтинг: 0 / 0
19 сообщений из 19, страница 1 из 1
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / ASA 9 Вопрос по защите таблиц от изменений
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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