понедельник, 6 декабря 2010 г.

Шифрование сценария (Encrypting a Scenario).

При подготовке поста о том, что такое сценарий, дошел в просмотре документации до раздела, посвященного шифрованию сценариев. Попробовал, что это такое - теперь готов рассказать.

Итак, шифрование сценариев позволяет нам спрятать исполняемый этими сценариями код. При запуске таких сценариев, код, который отображается в Операторе, является нечитабельным. Хотя и работает, сам по себе, правильно.

ODI использует алгоритм DES для шифрования, используя в качестве ключа шифрования строку символов или файл. Этот ключ может использоваться и для зашифроки и для расшифровки сценариев.

Нет способа расшифровать зашифрованный сценарий без ключа шифрования. Поэтому очень важно держать этот ключ в безопасном месте. Так же разработчики ODI советуют использовать для каждой разработки свой уникальный ключ. Я думаю, имелось ввиду, что для одного проекта один ключ для всех сценариев. Для другого - другой и т.п.


Для того, чтобы зашифровать сценарий, нажимаем на сценарии правой кнопкой мыши и в контекстном меню выбираем команду Encrypt:


Вводим ключ и нажимаем Ок. Появится диалоговое окно с возможностью сохранения введенного ключа в виде файла.


Попытка использования слишком короткой длины ключа шифрования может привести к появлению ошибки. Для правильной работы требуется ключ с длиной не менее 10 символов.


На этом шифрование сценария закончена, и он может быть запущен. Название сценария, названия шагов процедур, переменных, шагов модуля знаний при просмотре сессии в Операторе отображаются так же, как и для незашифрованного сценария. А вот содержимое шагов выглядит примерно так:


Можно передавать на пром сервер для развертывания.
После того, как администраторы и технологии напишут несколько писем и пару раз позвонят, в том числе и начальству, можно будет убрать шифрование со сценария, выбрав в контекстном меню команду Decrypt:


В случае, если в диалоге шифрования выбрать опцию Get a new encryption key, ODI сам сгенерирует новый ключ шифрования, зашифрует им сценарий, а затем предложит сохранить ключ в файл:


И на последок попробуем узнать, что получится, если ключ шифрования при операции дешифровки будет введен неверно:


Повторная попытка дешифровки с правильным ключом проходит успешно.

10 комментариев:

  1. так заморишся шифровать по одному сценарию ... а вот что-то функции по шифрованию всего я не вижу

    ОтветитьУдалить
  2. Я спросил об этом у Marco Ragogna, который проводил семинар по ODI. Его ответ таков - к сожалению, ни в 10, ни в 11 версии такой возможности нет.
    Ты уверен, что вам на проекте это может быть вообще нужно?

    ОтветитьУдалить
  3. я уверен, что это нам в ближайшее время не понадобится, но практически от этого польза может быть только когда есть массовая операция. Ну или весь проект - это десяток сценариев ;)

    ОтветитьУдалить
  4. Извините, что не в тему. Denys, Вы проговорились про использование функций... Это случайно не из арсенала ODI Java API (http://download.oracle.com/docs/cd/E14571_01/apirefs.1111/e17060/overview-tree.html)? Может, есть кто-то, кто его использовал?

    ОтветитьУдалить
  5. Собственно, вопрос (раз уже все равно я не той теме) - как после Reverse-а автоматом удалить объекты, которых уже нет в БД? Сам ODI принципиально ничего не удаляет. Очистить всю модель и обновить ее из БД тоже не устаивает: как минимум, ODI не даст удалить объект, если он уже используется.

    ОтветитьУдалить
  6. 2Денис
    Польза от шифрования отдельных сценариев вполне может быть. Например, в случае если сценарий делается так, по техническим причинам, что в открытом виде показывает некий пароль, или там, секретный IP адрес какого-то сервера. То его зашифровка поможет с безопасностью.
    Видимо, разработчики ODI так и решили, и потому не включили массовое шифрование сценариев.

    ОтветитьУдалить
  7. 2gka2001
    Не совсем понимаю, зачем удалять объекты, которых уже нет в БД. Но, удалять их, скорее всего, можно, с помощью модификации модуля знаний реверса, и, при этом, использовать этот RKM для реверса таблиц из СУБД в модели ODI.
    Но даже эта модификация не даст удалить те модели, которые используются в интерфейсах.

    ОтветитьУдалить
  8. Как для меня удалять неиспользуемые сценарии(интерфейсы) - намного веселее. Вот как раз на прошлой неделе написал скрипт дабы проверить какие сценарии не заканчиваются в Staging (т.е. идёт загрузка из исходной системы + возможно потом эти данные ещё обрабатываются во временных таблицах, но в итоге в хранилище не попадают). Как результат - минус 250 сценариев.

    ОтветитьУдалить
  9. А по поводу функции шифрования - ну ведь можно перегенерировать сценарии или для папки или для всего проекта (OdiGenerateAllScen). Так раз уж делали щифрование, то почему бы не сделать такую же функцию и для массового шифрования? Тем более, что это явно не сложно :-)

    ОтветитьУдалить
  10. VS, в БД переименовали PK. Запустили Reverse. Потом ODI заругался,что не может запустить интерфейс, т.к. у таблицы ... 2 первичных ключа - неудаленный старый и новый:)
    RKM не удаляет объекты из модели. Только добавляет новые или изменяет.

    ОтветитьУдалить