У нас есть веб-приложение Java, работающее на JBoss и Linux. Параметры подключения к базе данных производственной среды берутся из файла конфигурации, который существует только на серверах приложений производственной среды. Этот файл конфигурации доступен для чтения только идентификатору пользователя, который также запускает приложение (назовем этого пользователя appuser), и единственные люди, которые могут войти на серверы производственной среды и sudo to appuser, являются членами нашей группы эксплуатации. Сама производственная среда изолирована от всех остальных сред.
Мы хотели бы сделать это более безопасным. В частности, мы хотели бы, чтобы операционная группа не могла прочитать пароль подключения к базе данных и другие ключи, которые в настоящее время находятся в файле конфигурации.
Еще один фактор, о котором следует помнить, - это то, что группа эксплуатации отвечает за создание и развертывание приложения.
Какие у нас есть варианты? Решение должно поддерживать ручной перезапуск приложения, а также автоматический запуск приложения при перезагрузке ОС.
Обновление
Решение, которое я сейчас исследую (совет Адамски за его предложение, которое примерно переводится в шаг 1):
Напишите исполняемый файл оболочки с setuid
для пользователя, который запускает / останавливает приложения и владеет файлами конфигурации и всем в дереве каталогов JBoss.
Используйте jarsigner
, чтобы подписать WAR после его создания. Строительство WAR будет производиться путем разработки. Обертка setuid
проверит подпись, подтверждая, что WAR не был подделан.
Измените процесс развертывания, чтобы развернуть только подписанный WAR. Оболочка setuid
также может перемещать WAR в каталог развертывания JBoss.