среда, 31 мая 2017 г.

Безопасность транзакций между доменами Oracle WebLogic Server

Управляя распределенной (XA) транзакцией, менеджер транзакций должен иметь возможность связываться со всеми участниками транзакции. Т.е. со всеми серверами и ресурсами в ней участвующими. Коммуникационные каналы настраиваются в зависимости от того, куда направляется транзакция:

  • Inter-domain - коммуникация между серверами, участвующими в транзакции и расположенными не в одном и том же домене

  • Intra-domain - коммуникация между серверами, участвующими в транзакции и расположенными в одном и том же домене.

Каналы коммуникации для транзакций должны быть защищенными, чтобы предотвращать от атак вида человек посредине. Сервер приложений Oracle WebLogic предоставляет следующие опции для защиты коммуникационных каналов:

  • Cross Domain Security - используется отображение учетных данных пользователей для настройки совместимого коммуникационного канала между серверами в транзакциях между доменами. Хотя это требует более сложной конфигурации, Cross Domain Security позволяет настроить доверие между отдельными доменами.

  • Security Interoperability Mode - устанавливает доверие между всеми доменами, которые участвуют в транзакции, путем
    установки для учетных данных всех доменов (domain credentials) совпадающих значений, т.е. principal из одного домена разрешен и в других. Этот режим проще для настройки чем Cross Domain Security, однако некоторые настройки Security Interoperability Mode полагаются на доверие домена и менее безопасны.

Рассмотрим преимущества и недостатки данных режимов.


Cross Domain Security

  • Преимущества

    • Должны быть настроены отдельные пользователи для установки попарного соединения между доменами.

    • При использовании SSL защищает от атак вида "человек посредине".

  • Недостатки

    • Более сложная конфигурация.

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

Security Interoperability Mode

  • Преимущества

    • Очень прост для настройки.

    • Не требует понимания логики транзакции при своей настройке.

    • Допускает обратную совместимость с WebLogic 8.1 (судя по ситуации с WebSphere Application Server 7 у крупнейших заказчиков IBM, даже в 2017-м году это может быть актуально).

    • При использовании режима default, включение административного канала защищает от атак вида "человек посредине".


  • Недостатки

    • Доверие транзитивно: если домен А доверяет домену Б и домен Б доверяет домену В, то домен А будет доверять домену В.

    • При установке режима compatibility, доверие между доменами распространяется также и на административные привилегии. Т.е. администратор домена А будет иметь административные права и в домене Б.

    • В некоторых конфигурациях остаются возможности для атак вида "человек посредине".

Включение Cross Domain Security

Важно! Такие подсистемы, как JMS, JTA, MDB и глобальная репликация сессии (WAN) поддерживают Cross-Domain Security, однако контейнер EJB - нет.

В настройках домена необходимо поставить галочку Cross Domain Security Enabled. Здесь же можно задать т.н. список исключений (Excluded Domain Names). О чем идет речь? Если есть транзакция, включающая в себя сервера домена А и домена Б, при этом на домене А настроено Cross Domain Security, а на домене Б - нет, то такую транзакцию можно реализовать, добавив домен Б в список исключений домена А. В таком случае для установки соединения между доменами A и Б будет использоваться механизм Security Interoperability Mode.


Если при этом есть другая транзакция между доменами А, В и Г, но домен Б туда не входит, то его необязательно включать в список исключений для доменов В и Г.

На каждом домене, входящем в доверенную пару (домен А доверяет домену Б, а домен Б - домену А), необходимо создать по пользователю, обладающему ролью CrossDomainConnector, т.е. входящему в группу CrossDomainConnectors.



Крест-накрест, на противоположном домене должен быть настроен т.н. Credential Mapping с использованием протокола cross-domain-protocol на этого созданного пользователя в данном домене.



Включение Security Interoperability Mode

Для настройки Security Interoperability Mode нужно выполнить следующие шаги:

  • настроить доверие между доменами.

  • настроить режим Security Interoperability Mode.

Важно! При использовании режима performance не требуется включать доверие между доменами.

Для включения доверия между доменами необходимо установить учетные записи для всех доменов (domain credentials) в одно и то же значение. По умолчанию значение для domain credential генерируется случайным образом при создании домена, таким образом никакие два домена в системе не будут иметь одинаковые значение учетной записи. Необходимо на вкладке domain -> Security -> General, Advanced каждого домена изменить значения полей Credential и Confirm Credential на выбранное значение.


Каждый участвующий в транзакции домен должен установить значение режим Security Interoperability Mode в одно и то же значение:

  • default. Координатор транзакции осуществляет вызовы, передавая т.н. kernel identity через административный канал, если тот включен. Если административный канал не настроен, то поведение Security Interoperability Mode совпадает с режимом performance.

  • performance. Координатор транзакции всегда осуществляет вызовы анонимно. Это подразумевает наличие риска нарушения безопасности, т.к. злонамеренная третья сторона может попытаться повлиять на результат выполнения транзакции, проведя атаку вида "человек посредине".

  • compatibility. Координатор транзакции осуществляет вызовы, передавая т.н. kernel identity через незащищенный канал. Данный режим требуется при осуществлении взаимодействия с серверами WebLogic, которые не поддерживают Security Interoperability Mode. Существует высокий риск нарушения безопасности, поскольку успешная атака вида "человек посредине" может позволить злоумышленнику получить доступ к административному контролю над обоими доменами. Данный режим должен применяться, только если сеть предприятия надежно защищена.

Установить режим можно так: в дереве выбрать домен и на странице domain -> Security -> General, Advanced выбрать значение свойства Security Interoperability Mode.

После включение Security Interoperability Mode между доменами, в которых присутствуют так же и управляемые сервера, необходимо перезапустить и административные сервера доменов, и все управляемые сервера в этих доменах. Если данный шаг не выполнить, то сервера, которые не были перезапущены, не будут доверять перезапущенным серверам.

Для получения доступа к ресурсам JNDI, требующим административных прав, необходимо, при включенном административном канале - выставить свойство Security Interoperability Mode в значение default и разрешить доверие между доменами. Если административный канал выключен, то выставить свойство Security Interoperability Mode в значение compatibility (т.к. kernel identity должно передаваться) и разрешить доверие между доменами.

Понравилось сообщение - подпишитесь на блог

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

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

Любой Ваш комментарий важен для меня, однако, помните, что действует предмодерация. Давайте уважать друг друга!