Шифровать расшифровывать пакеты PL SQL в Oracle

Есть ли способ зашифровать пакеты SQL (хранимые процедуры, функции и т. Д.) В oracle с использованием определенного ключа и расшифровать с использованием того же ключа в целях безопасности ??? я использую oracle 12c ....

Спасибо,


person Sajjad    schedule 26.02.2020    source источник


Ответы (3)


Да, для этого вы можете использовать инструмент wrap, см. Исходный код PL / SQL Перенос текста

Вы можете обернуть исходный текст PL / SQL, тем самым запретив кому-либо отображать этот текст в статических представлениях словаря данных *_SOURCE.

В принципе дешифрование не поддерживается, однако вы можете использовать такие инструменты, как Unwrap It!.

person Wernfried Domscheit    schedule 26.02.2020
comment
Это единственный разумный ответ. Но нет возможности обернуть с использованием определенного ключа, как было предложено. - person Matthew McPeak; 26.02.2020

Мне нравится ответ Вернфрида. Я хотел бы немного расширить, если можно.

Предполагая, что вы попробуете метод WRAP (некоторые говорят, что его легко взломать), вот что можно попробовать проверить его эффективность:

  • Проверьте с помощью tkprof, обнаруживает ли выполнение объектов WRAPd какую-либо логику или SQL
  • Проверьте V $ SQL и связанные представления, чтобы увидеть, обнаруживает ли выполнение объектов WRAPd какую-либо логику или SQL
  • Свяжитесь с OEM-производителем, чтобы узнать, обнаруживает ли выполнение объектов WRAPd какую-либо логику или SQL.

Я никогда не тестировал вышеупомянутое, но если бы я рассматривал возможность использования WRAP, я бы сделал так, чтобы знать пределы любой защиты, которую он дает. Учитывая важность того, чтобы администраторы баз данных могли отслеживать и настраивать запросы, я был бы удивлен, если бы, по крайней мере, нельзя было установить SQL с помощью стандартных представлений / запросов производительности.

Также обратите внимание, что если в вашем коде есть какой-либо динамический SQL или PLSQL, это может отображаться в таблице символов обернутого файла (в виде шестнадцатеричных кодов).

Я думаю, вы не можете обернуть код TRIGGER (хотя, конечно, вы могли бы иметь триггеры, вызывающие процедуры PLSQL, которые обернуты).

Если вы поставщик программного обеспечения, обеспокоенный тем, что клиентский администратор баз данных ковыряется в вашем коде, учитывая вышеупомянутый пункт о мониторинге SQL и предполагая, что администратор баз данных имеет доступ к подходящему взломщику, я не думаю, что вы многое можете сделать, чтобы их остановить. Вы можете запретить пользователям, не являющимся администраторами баз данных, делать это, ограничив доступ к DBA_SOURCE, V $ SQL и связанным представлениям.

Из интереса я посмотрел на Native Compilation of PLSQL, чтобы увидеть, можно ли поставить скомпилированный M-код вместо исходного PLSQL, но похоже, что вам также нужно отправить код PLSQL.

Какие еще есть варианты? Можно ли подключить PLSQL к удаленной защищенной базе данных и использовать через вызовы REST API? Это во многом зависит от логики приложения и доступа к данным, и если такая служба возможна на защищенном удаленном сервере.

Последнее, что я подумал бы, если бы было абсолютно необходимо скрыть логику, - это реализовать в виде модулей Pro C / C / Java для создания ВНЕШНИХ БИБЛИОТЕК. Но обратите внимание, что вызовы SQL в Pro C / C / Java по-прежнему будут отображаться в V $ SQL. Кроме того, уже не многие пишут Pro * C.

person TenG    schedule 27.02.2020

Использование функции переноса - это только обфускация, а не шифрование. Его легко отменить с помощью множества доступных веб-сайтов, скриптов Python и других процедур PL / SQL. Есть дополнительные обфускации, которые вы можете сделать, чтобы усложнить интерпретацию вашего кода (Oracle SQL Developer имеет для этого некоторые встроенные функции), так что даже если ваш код развернут, его все равно трудно читать. Вот пример еще одного пользовательского набора инструментов для обфускации: https://pmdba.wordpress.com/2020/02/24/code-obfuscation-toolkit/. Чтобы получить набор инструментов коммерческого уровня, посетите это: http://www.petefinnigan.com/products/pfclobfuscate.htm

person pmdba    schedule 10.03.2020