Администратор домена oracle information rights management или Кто первый, тот и папа

Администратор домена oracle information rights management или Кто первый, тот и

   В текущем релизе Oracle Information Rights Management есть одна особенность, которая не сразу бросается в глаза, но зато потом в некоторых случаях способна провоцировать неконтролируемые нецензурные выкрики.
   Дело в том, что после установки дистрибутива администратором домена Oracle IRM назначается тот пользователь, который первым выполнил вход в консоль irm_rights.
   На первый взгляд в этом нет ничего трагического, но довольно часто события развиваются следующим образом:

  • инженер-эникейщик выполняет установку веблоджика, после чего устанавливает IRM, настраивает домен, радуется, что все прошло без ошибок, проверяет работу IRM через веб-морду, а потом задумывается об интеграции IRM с внешним каталогом пользователей (например с Active Directory, AD);
  • для интеграции с AD, инженер создает соответствующий провайдер аутентификации пользователей, переключает аутентификацию на внешний каталог и понимает, что не может попасть в консоль irm_rights.

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

Случай первый: переносим админа домена IRM из одного каталога в другой.

   Мануал: Oracle® Fusion Middleware Installation Guide for Oracle Enterprise Content Management Suite 11g Release 1 (11.1.1), Part Number E14495-06 ( http://docs.oracle.com/cd/E21764_01/doc.1111/e14495/config.htm#BABGHICG ).

   Для однозначности будем считать, что сейчас админ есть во внутреннем каталоге веблоджика, а нужно, чтобы он был во внешнем каталоге AD. В качестве админа у нас пользователь weblogic.

  1. Нужно убедиться, что провайдеры для внутреннего и внешнего каталогов установлены как SUFFICIENT.
  2. Затем запустить WLST и экспортировать данные о пользователях:
     cd ECM_ORACLE_HOME/common/bin
     ./wlst.sh
     > connect('weblogic', 'password', 't3://adminServerHost:adminServerPort')
     > setIRMExportFolder('/scratch/irm-data')
  3. После того, как managed server с развернутым на нём приложением irm примет изменения в конфигурации, в директории появятся xml файлы:
     /scratch
      /irm-data
       /accounts
        /batch1
         user1.xml
         user2.xml
         group1.xml

  4. Чтобы irm закончил экспорт данных, нужно выполнить команду
     setIRMExportFolder('')
  5. Нужно создать в AD пользователя с тем же именем, что и в каталоге веблоджика.

  6. Далее нужно зайти в консоль веблоджика и поменять провайдеры аутентификации: на первое место ставим провайдер к AD, на второе - к внутреннему каталогу веблоджика. После этого перезапускаем admin и managed серверы.

  7. Снова запустить WLST и на этот раз выполнить импорт данных о пользователях:
     cd ECM_ORACLE_HOME/common/bin
     ./wlst.sh
     > connect('weblogic', 'password', 't3://adminServerHost:adminServerPort')
     > setIRMImportFolder('/scratch/irm-data')
  8. Когда импорт закончится, в директории не останется файлов:
     /scratch
      /irm-data
  9. Если появятся ошибки, то информация о них будет записана в файл:
     /scratch
      /irm-data
       /accounts
        /batch1
         user1.xml
         user1.xml.fail
    После исправления ошибки необходимо повторно выполнить команду:
     > connect('weblogic', 'password', 'adminServerHost:adminServerPort')
     > setIRMImportFolder('/scratch/irm-data')
  10. Чтобы irm закончил импорт данных, нужно выполнить команду:
     setIRMImportFolder('')
  11. После всех этих действий (плюс-минус исправление ошибок по ходу пьесы) администрировать IRM будет пользователь из внешнего каталога пользователей - AD. Эмоциональное состояние восстановлено.

Случай второй: из домена удалили всех админов

   Мануал: ID 1351438.1 ( https://support.oracle.com/CSP/main/article?cmd=show&type=NOT&doctype=HO... )

   Тяжелый случай, и, даже, если технически ситуацию мы исправим, то административно за такой косяк нужно кого-нибудь уволить. Допустим, что был администратор irm-admin, которого удалили из каталога. Потом одумались, создали заново, но, вот так сюрприз, он больше не имеет административных прав в консоли irm_rights. Так случилось из-за того, что учетная запись вновь созданного пользователя irm-admin имеет другой GUID.

   Если админа удалили в только что установленном IRM, то достаточно выполнить следующие действия:

  1. запустить RCU;
  2. дропнуть схему IRM;
  3. создать новую схему IRM с тем же именем;
  4. залогиниться в irm_rights под учетной записью irm-admin.

   Если в IRM уже полно контекстов, ролей, и все давным давно работает в продакшене, тогда действия менее тривиальные:

  1. сделать бэкап на всякий случай;
  2. поднять новый домен веблоджика с IRM, с отдельной схемой в БД и провайдером к тому же самому каталогу пользователей, что и основной домен;
  3. зайти в irm_rights временного IRM сервера под учетной записью пользователя, которого нужно сделать админом, т.е. irm-admin;
  4. подключиться к схеме нового домена в БД и сделать такой запрос:
     SELECT ACCOUNT_UUID FROM DOMAIN_ROLE WHERE TYPE='ADMINISTRATOR'
  5. скопировать результат себе на память;
  6. подключиться к схеме старого домена в БД и сделать такой запрос:
     UPDATE DOMAIN_ROLE SET ACCOUNT_UUID ='XXX' WHERE TYPE='ADMINISTRATOR'
    вместо XXX нужно подставить то, что скопировали себе на память;
  7. у irm-admin появятся административные права в irm_rights, новый домен с отдельной схемой можно удалять.

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