Давно ждал ответа на вопрос, поставленный "КАА" от Специалистов, однако его пока нет.
Во-первых, хотелось бы сказать спасибо за то, что заметили, что группе "паблик" разработчиками даются так много привилегий на те объекты, которые сами же разработчики сравнивают с объектами в схеме system (вопрос по-пути - к "КАА" - как заметили? вернее, в каких-то скриптах построения - в каких скриптах? или уже потом, после построения схемы sde?). Думаю, что это неспроста, потому что работая с продуктами от "есри" заметил - ничего просто так разработчики не делают, все в достаточной мере выверено и обдумано. К сожалению, ответа на вопрос - почему группе "паблик" дано так много привилегий на объекты схемы sde и "можно ли их убрать" Григорий Кувшинников не дает.
Обратимся к предлагаемому на рассмотрение руководству. Итак - всего в данном руководстве упоминаний "public" - 12 (из них - в заголовке 1, в тексте - 4, в синтаксисе команд - 2 и не относящихся к данному вопросу - (public database link, public synonym и т.д.) - 5). Ни в одном из семи упоминаний предоставления привилегий группе public не говорится про update, delete, insert на таблицы схемы sde. Считаю, что на первую часть вопроса (зачем del., upd., ins. on gdb* даны public) в данном руководстве нет. Кстати - по пути - несмотря на все эти разъяснения -
ArcSDE uses the stored procedures of the DBMS_PIPE and DBMS_LOCK Oracle built-in
packages. ArcSDE calls stored procedures of the DBMS_PIPE package when it stores and
transmits ArcSDE rowids. ArcSDE calls the stored procedures of the DBMS_LOCK
package to add a row to the PROCESS_INFORMATION table whenever an ArcSDE
session connects. Your Oracle DBA must connect to the Oracle instance as the SYS user and
grant execute on these packages to PUBLIC:
connect sys/
grant execute on dbms_pipe to public;
grant execute on dbms_lock to public;
я так и не понял, зачем давать привилегии на выполнение этих пакетов всем? Может, логичнее было бы давать эти привилегии какому-то конкретному пользователю (пользователям), н-р sde?
Теперь посмотрим в данном руководстве, какие привилегии нужно отнимать. Проведя поиск по "revok" обнаруживаю, что все отнимания привилегий касаются отнятия привилегий у пользователей, после того, как они один раз подконектились к sde и создали лог-таблицы, либо отнятия привилегий у самого пользователя sde после того, как он обновил таблицы предыдущей версии и т.п., но - ни слова о том, чтобы убрать привилегии на системные таблицы sde. Поэтому считаю, что ответа на вторую часть вопроса (можно ли эти привилегии убрать) данное руководство тоже не дает. Кстати - по пути - в данном руководстве упоминается процедура create_user_and_logfiles из пакета user_util, предоставляемого разработчиками. У меня процедура не срабатывала на вызове процедуры из пакета dbms_stats ни под sys-ом, ни под system-ом - пришлось просто заремить вызовы dbms_stats.
Итак, считаю, что ответа все еще нет. Экспериментировать с sde, просто убрав привилегии на системные таблицы из группы "паблик" не хочу, потому что по опыту знаю - эксперименты даже с документированными возможностями sde приводят к плачевным результатам (здесь по пути - пробовал воспользоваться любезно предоставляемой разработчиками возможностью использовать blob вместо long raw - создание данных - отлично - пробовал переименовать класс объектов - "убил" словарь базы данных - ни у кого проблем при использовании blob с sde не возникало? хотя - тут, возможно моя вина).
В заключении хочу еще раз подчеркнуть - жду ответа на данный вопрос, потому что вопрос серьезный. Достаточно посмотреть на данный листинг -
SQL> select table_name, grantable from dba_tab_privs
2 where owner = 'SDE' and grantee = 'PUBLIC' and privilege in ('INSERT', 'UPDATE', 'DELETE');
TABLE_NAME GRA
------------------------------ ---
GDB_ANNOSYMBOLS YES
GDB_ANNOSYMBOLS YES
GDB_ANNOSYMBOLS YES
GDB_ATTRRULES YES
GDB_ATTRRULES YES
GDB_ATTRRULES YES
GDB_CODEDDOMAINS YES
GDB_CODEDDOMAINS YES
GDB_CODEDDOMAINS YES
GDB_DEFAULTVALUES YES
GDB_DEFAULTVALUES YES
GDB_DEFAULTVALUES YES
GDB_DOMAINS YES
GDB_DOMAINS YES
GDB_DOMAINS YES
GDB_EDGECONNRULES YES
GDB_EDGECONNRULES YES
GDB_EDGECONNRULES YES
GDB_EXTENSIONS YES
GDB_EXTENSIONS YES
GDB_EXTENSIONS YES
GDB_FEATURECLASSES YES
GDB_FEATURECLASSES YES
GDB_FEATURECLASSES YES
GDB_FEATUREDATASET YES
GDB_FEATUREDATASET YES
GDB_FEATUREDATASET YES
GDB_FIELDINFO YES
GDB_FIELDINFO YES
GDB_FIELDINFO YES
GDB_GEOMNETWORKS YES
GDB_GEOMNETWORKS YES
GDB_GEOMNETWORKS YES
GDB_JNCONNRULES YES
GDB_JNCONNRULES YES
GDB_JNCONNRULES YES
GDB_NETCLASSES YES
GDB_NETCLASSES YES
GDB_NETCLASSES YES
GDB_NETWEIGHTASOCS YES
GDB_NETWEIGHTASOCS YES
GDB_NETWEIGHTASOCS YES
GDB_NETWEIGHTS YES
GDB_NETWEIGHTS YES
GDB_NETWEIGHTS YES
GDB_NETWORKS YES
GDB_NETWORKS YES
GDB_NETWORKS YES
GDB_OBJECTCLASSES YES
GDB_OBJECTCLASSES YES