Информация об изменениях

Сообщение Re[34]: Процедуры в БД - это же ужас-ужас!!! от 07.11.2019 3:35

Изменено 07.11.2019 3:40 amironov79

Re[34]: Процедуры в БД - это же ужас-ужас!!!
Здравствуйте, Sinclair, Вы писали:

S>Ну, если честно, то это — надуманная проблема. У разработчика бизнес-логики и так есть доступ до более-менее всего. С учётом того, что он может инжектить в код произвольный SQL, который исполняется под правами "сервис-аккаунта", то что он такого не может сделать с базой, что мог бы при помощи кодогенерации?


Может выйти за пределы сервера базы в систему: работать с файлами, запускать процессы с правами пользователя субд. Думаю, там есть система прав доступа, которую надо настраивать. В том же oracle для работы с java надо гонять приложение и смотреть, какие права требуются, вплоть до разрешения подключиться к любому удаленному узлу:
dbms_java.grant_permission('APPUSER', 'java.lang.RuntimePermission', 'getClassLoader', '');
dbms_java.grant_permission('APPUSER', 'java.io.FilePermission', '/tmp', 'read');
dbms_java.grant_permission('APPUSER', 'java.net.SocketPermission', 'sql-server:1433', 'connect,resolve');
Re[34]: Процедуры в БД - это же ужас-ужас!!!
Здравствуйте, Sinclair, Вы писали:

S>Ну, если честно, то это — надуманная проблема. У разработчика бизнес-логики и так есть доступ до более-менее всего. С учётом того, что он может инжектить в код произвольный SQL, который исполняется под правами "сервис-аккаунта", то что он такого не может сделать с базой, что мог бы при помощи кодогенерации?


Может выйти за пределы сервера базы в систему: работать с файлами, запускать процессы с правами системного пользователя, под которым работает субд. Думаю, там есть система прав доступа, которую надо настраивать. В том же oracle для работы с java надо гонять приложение и смотреть, какие права требуются, вплоть до разрешения подключиться к любому удаленному узлу:
dbms_java.grant_permission('APPUSER', 'java.lang.RuntimePermission', 'getClassLoader', '');
dbms_java.grant_permission('APPUSER', 'java.io.FilePermission', '/tmp', 'read');
dbms_java.grant_permission('APPUSER', 'java.net.SocketPermission', 'sql-server:1433', 'connect,resolve');