вторник, 28 июля 2009 г.

When Weblogic meets EFS

Предположим у тебя есть Java-приложение, которое крутится на веблоджике, который стоит на Power-системе, под управлением AIX. Приложение активно работает с файлами, которые ты бы очень хотел хранить на диске в зашифрованном виде. Согласен ситуация довольно экзотичная, но ведь всякое бывает. Итак, у тебя есть ровно два решения задачи:
  1. Реализовать в своем ПО криптографию.
  2. Положить файлы на зашифрованный средствами ОС диск.
С первым вариантом ты уж как-нибудь сам, а вот со вторым я помогу.
Проблем у тебя ровно две: настроить Encrypted File System и заставить Weblogic с ней работать. Первое я опишу как-нибудь потом, а вот второе сделаем прямо сейчас.

У тебя уже есть ФС /enc_dir с атрибутом EFS: yes, ефс разрешен в системе, юзеру weblogic создано хранилище ключей, и задан пароль отличный от пароля для логина в систему.

Теперь, все что нужно, это заставить сервер приложений при старте спрашивать пароль к хранилищу крипто-ключей, и затем подхватывать контекст в котором ему эти ключи из ядра доступны (только так любое приложение может прозрачно работать с зашифрованными efs дисками). Для этого посмотрим, как же веблоджик запускается.

Есть скрипт, который стартует твой домен:
/weblogic/bea/wlserver_10.3/samples/domains/$domain_name/bin/startWebLogic.sh

этот скрипт экспортирует разные переменные окружения для сервера, а затем стартует его ядро. Само ядро представляет из себя Java программу и стартует так:
"${JAVA_HOME}/bin/java ${JAVA_VM} ${MEM_ARGS} ${JAVA_OPTIONS} -Dweblogic.Name=${SERVER_NAME} -Djava.security.policy=${WL_HOME}/server/lib/weblogic.policy ${PROXY_SETTINGS} ${SERVER_CLASS}"
Все что тебе нужно, это запустить эту команду с привилегиями доступа к криптодиску.
Для этого правим скрипт так:
efskeymgr -o "${JAVA_HOME}/bin/java ${JAVA_VM} ${MEM_ARGS} ${JAVA_OPTIONS} -Dweblogic.Name=${SERVER_NAME} -Djava.security.policy=${WL_HOME}/server/lib/weblogic.policy ${PROXY_SETTINGS} ${SERVER_CLASS}"
Есть один момент, нужно помнить что запущенная таким образом джава может не подхватить часть переменных среды и поэтому возможно нужно будет поиграть с ее параметрами запуска чтобы передать их ей как-то по другому.

Вот и все. Работает на AIX6.1 и Oracle Weblogic 10.3

Как-нибудь потом расскажу, как все-таки настроить EFS.

Комментариев нет:

Отправить комментарий