|
|
|
ASA 9 Вопрос по защите таблиц от изменений
|
|||
|---|---|---|---|
|
#18+
Можно ли каким-нибудь образом защитить таблицу от изменения ? Суть вот в чем: есть некоторое приложение, работающее с БД, есть в нем некоторые лицензионные ограничения, если клиент что-то раширяет ему перекомпилируется приложение, хочется эти ограничения хранить в самой БД, чтобы избегать перекомпилляций ехе-шника. Можно было бы сделать таблицу от dba, но пользователь должен делать backup БД, т.е. ему нужны права dba ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.10.2004, 11:15 |
|
||
|
ASA 9 Вопрос по защите таблиц от изменений
|
|||
|---|---|---|---|
|
#18+
Первый вариант: Если Backup должен делаться по времени, то можно сделать EVENT, который будет автоматом делать резервные копии. Плюс на всякие администраторские действия, если их реализовать в собственном приложении пользователю не обязательно знать пароль DBA, достаточно в своей БД хранить пометку, может ли пользователь выполнять администраторские функции или нет. В таком случае пользователь как обычно коннектиться к БД под своим логином, а клиентское приложение считывает флаг наличия администраторских прав. В случаях проведения операций, разрешенных только DBA, клиентское приложение всегда спокойно может открыть вторую сессию к БД под логином DBA и вшитым в нее и закрытым паролем и в пределах этой сессии провести все необходимые операции. Второй вариант: Сделать еще одну небольшую БД, стартовать и цеплять ее как удаленный сервер к основной БД. DBA там можно закрыть неизвестным для пользователя паролем и разрешать доступ к таблицам дополнительной БД только на чтение для удаленных пользователей основной БД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.10.2004, 12:27 |
|
||
|
ASA 9 Вопрос по защите таблиц от изменений
|
|||
|---|---|---|---|
|
#18+
Есть еще третий вариант. Воспользоваться функцией ENCRYPT для шифрования ваших данных (не помню с какой версии, в 9 точно есть). Шифрует по указанному ключу. Для расшифровки - DECRYPT. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.10.2004, 12:50 |
|
||
|
ASA 9 Вопрос по защите таблиц от изменений
|
|||
|---|---|---|---|
|
#18+
Получается, что только backup по event дает 100% надежность. Все остальные варианты являются потенциально взламываемыми ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.10.2004, 13:36 |
|
||
|
ASA 9 Вопрос по защите таблиц от изменений
|
|||
|---|---|---|---|
|
#18+
VovakaПолучается, что только backup по event дает 100% надежность. Все остальные варианты являются потенциально взламываемыми ...Ну, как сказать... Если задаться целью, взломать можно практически любую защиту программы, вопрос в том, стоит ли эта программа таких усилий. В том числе и таких усилий по ее защите. Если вы пишете на заказ, за нормальную цену, вряд ли вашему заказчику будет интресно терять вас как разработчика для последующей разработки/сопровождения, взламывая из-за двух трех фич вашу программу. Имхо, конечно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2004, 06:38 |
|
||
|
ASA 9 Вопрос по защите таблиц от изменений
|
|||
|---|---|---|---|
|
#18+
Andyn Если вы пишете на заказ, за нормальную цену, вряд ли вашему заказчику будет интресно терять вас как разработчика для последующей разработки/сопровождения, взламывая из-за двух трех фич вашу программу. Нет, продукт все таки тиражируемый, хоть и совсем немного. И случаи несанкционированного использования тоже известны. Т.е. кто-то уже снимал защиту HASP. Так что защищать надо по возможности по максимуму. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2004, 08:52 |
|
||
|
ASA 9 Вопрос по защите таблиц от изменений
|
|||
|---|---|---|---|
|
#18+
Тогда можно попробовать сделать так: оформить раздачу прав в виде процедуры возвращающей result set и сделать этой процедуре set hidden. Т.о. процедура выполняется, а что именно она делает никто не узнает и исправить текст ее не сможет, своего рода неразборный черный ящик. По set hidden см. главу Hiding the contents of procedures, functions, triggers and views в BOL. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2004, 10:27 |
|
||
|
ASA 9 Вопрос по защите таблиц от изменений
|
|||
|---|---|---|---|
|
#18+
VovakaМожно было бы сделать таблицу от dba, но пользователь должен делать backup БД, т.е. ему нужны права dba ... Почему-то никто из ответивших не вспомнил про такой хороший способ организации безопасности, как хранимые процедуры. Чтобы backup'ить базу Вашему пользователю не нужны права DBA. Код: plaintext 1. 2. 3. 4. 5. 6. Не забудьте, что если передаете путь как строку, то неплохо будет в переменной @p_Path удвоить символы back slash "\", также как и одинарные кавычки. Можете для этого строковую функцию написать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2004, 02:00 |
|
||
|
ASA 9 Вопрос по защите таблиц от изменений
|
|||
|---|---|---|---|
|
#18+
Гм, действительно не вспомнили :) В ASA на вызываемую ХП действуют права влалельца, ее создавшего. Соотвествующе процедура, созданная из под DBA и вызываемая из под других логинов может спокойно вызвать тот же BACKUP. авторНе забудьте, что если передаете путь как строку, то неплохо будет в переменной @p_Path удвоить символы back slash "\", также как и одинарные кавычки. Можете для этого строковую функцию написать. В 9-ке уже не обязательно удваивать символы, видимо они вделали в нее какой то механизм, который позволяет указывать, что в передаваемой строке нет управляющих комбинаций. Для одинарных кавычек функцию тоже писать не надо: Код: plaintext 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2004, 05:52 |
|
||
|
ASA 9 Вопрос по защите таблиц от изменений
|
|||
|---|---|---|---|
|
#18+
Да, я действительно забыл заключить путь в кавычи. Так что надо как ASCRUS написал, а то вообще не заработает. Удваивать кавычки все равно надо. Например, если ваш путь "C:\John's files", то команда будет выглядеть BACKUP DATABASE DIRECTORY 'John's files' Кавычка после John "закроет" строку, и анализатор ругнется на остаток строки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2004, 16:21 |
|
||
|
ASA 9 Вопрос по защите таблиц от изменений
|
|||
|---|---|---|---|
|
#18+
авторEXECUTE IMMEDIATE WITH RESULT SET OFF 'BACKUP DATABASE DIRECTORY ''' || @p_Path || '''' ; ругается на RESULT почему то ... но без RESULT SET OFF создается нормально, по умолчанию как я понял, RESULT SET отключен как раз ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2004, 11:10 |
|
||
|
ASA 9 Вопрос по защите таблиц от изменений
|
|||
|---|---|---|---|
|
#18+
А вот надо полный номер билда указывать, тогда и ругаться не будет :) Опция WITH RESULT SET по моему была введена в 9.01 :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2004, 11:40 |
|
||
|
ASA 9 Вопрос по защите таблиц от изменений
|
|||
|---|---|---|---|
|
#18+
9.0.1.1899 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2004, 12:26 |
|
||
|
ASA 9 Вопрос по защите таблиц от изменений
|
|||
|---|---|---|---|
|
#18+
ASCRUS В ASA на вызываемую ХП действуют права влалельца, ее создавшего. Соотвествующе процедура, созданная из под DBA и вызываемая из под других логинов может спокойно вызвать тот же BACKUP. ... EXECUTE IMMEDIATE WITH RESULT SET OFF 'BACKUP DATABASE DIRECTORY ''' || @p_Path || '''' ; А что , и DynExec дают делать под правами владельца ? Это здорово, если так. А в ASE вот наоборот, вся процедура под правами владельца, а EXEC('...') - под правами пользователя - идиотизм, блин. Видимо, потенциальной security hole так боятся, что такую вот фигню утворили. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2004, 12:31 |
|
||
|
ASA 9 Вопрос по защите таблиц от изменений
|
|||
|---|---|---|---|
|
#18+
авторА что , и DynExec дают делать под правами владельца ? Это здорово, если так. А в ASE вот наоборот, вся процедура под правами владельца, а EXEC('...') - под правами пользователя - идиотизм, блин. Видимо, потенциальной security hole так боятся, что такую вот фигню утворили. Угу - именно и круто, что можно наделать из под DBA нужных процедур, отвечающих за администрирование, разрешить грантами на их запуск пользователями и не давать пользователю никакого DBA. Плюс для дополнительного разруливания администрирования по расписанию или на подписанные события БД можно делать event-ы, которые тоже запускаются с правами их владельца. Все эти возможности, плюс правильная архитектура и позволяют ASA выглядеть снаружи, как СУБД с нулевым администрированием - ведь фактически все администрирование можно запрограммировать прямо внутри БД и пользователю давать только черный работающий ящик. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2004, 12:44 |
|
||
|
ASA 9 Вопрос по защите таблиц от изменений
|
|||
|---|---|---|---|
|
#18+
А мне вот интересно стало: процедуры, которые скрыты, выгрузить UNLOAD'ом можно? Если нет, то как тогда такую базу перезагружать (хотя, насколько я понял, эта опция только для конечных потребителей продукта и тогда это не так важно), а если да, то тогда это потенциальная лазейка. Залез в хелп: там говорится, что перезагружать можно, а текст процедуры скрэмблируется и хранится в БД в нечитаемом виде. А еще написано, что прятать можно не только процедуры, но и функции, представления и триггеры. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2004, 09:44 |
|
||
|
ASA 9 Вопрос по защите таблиц от изменений
|
|||
|---|---|---|---|
|
#18+
bansheeА мне вот интересно стало: процедуры, которые скрыты, выгрузить UNLOAD'ом можно? Если нет, то как тогда такую базу перезагружать (хотя, насколько я понял, эта опция только для конечных потребителей продукта и тогда это не так важно), а если да, то тогда это потенциальная лазейка. Залез в хелп: там говорится, что перезагружать можно, а текст процедуры скрэмблируется и хранится в БД в нечитаемом виде. А еще написано, что прятать можно не только процедуры, но и функции, представления и триггеры. Есть процедурка sp_test. Пишу: Код: plaintext автор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. Выгружаю БД - в скрипте на создание процедуры такой же текст. Вывод - перегружать можно, взломать и посмотреть нельзя. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2004, 11:14 |
|
||
|
ASA 9 Вопрос по защите таблиц от изменений
|
|||
|---|---|---|---|
|
#18+
P.S. Решение как всегда в духе Watcom - просто и элегантно :) Кстати за что люблю ASA - за то что проверить чего нибудь - дело 3 сек. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2004, 11:15 |
|
||
|
|

start [/forum/topic.php?fid=55&gotonew=1&tid=2014111]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
159ms |
get topic data: |
12ms |
get first new msg: |
7ms |
get forum data: |
3ms |
get page messages: |
54ms |
get tp. blocked users: |
2ms |
| others: | 230ms |
| total: | 495ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...