Разрешение имен Net8 с использованием Oracle Internet Directory

8 мая 2001 г.

Net8 Name Resolution Using Oracle Internet Directory, By Jonathan Gennick and John-Paul Navarro

Джонатан Генник и Джон-Поль Наварро

Источник: журнал Oracle Magazine, no.1,2001(http://www.oracle.com/oramag/oracle/01-jan/index.html?o11o8i.html)

Oracle Internet Directory (OID) – это сравнительно новый продукт Oracle. OID – это сервер каталогов облегченного протокола службы каталогов (Lightweight Directory Access Protocol - LDAP). LDAP является ведущей технологией каталогов, основанной на стандартах, которую Oracle включил в свою линию продуктов. В этой статье рассматривается конкретное применение LDAP – для разрешения имен сетевых служб. Однако LDAP может использоваться не только для этого. Oracle8i теперь поддерживает отдельный LDAP с использованием пароля. Пользователями базы данных, а также ролями и выдачей ролей можно теперь управлять через LDAP. LDAP даже превосходит Oracle, и может быть использован для каталогов электронной почты и других подобных приложений. В этой статье, мы подробно расскажем, как мы устанавливали OID для разрешения имен сетевых служб (net service name resolution).

Службы каталогов, LDAP и OID

Перед тем как мы подробно рассмотрим OID для разрешения имен, имеет смысл разобраться, для чего существуют службы каталогов в целом, в чем заключается особая роль LDAP – стандарта, на котором основан OID, и скажем несколько слов о самом OID.

Сегодняшний высокомобильный сотрудник должен иметь доступ к различным ресурсам корпорации (системам, приложениям), когда он находится вне границ брэндмауэра (firewall). Электронному бизнесу необходима централизованная, корпоративная методология, чтобы определять, кто имеет доступ, к чему и когда. Все осложняется тем, что, обычные корпоративные системы и приложения являются гетерогенными, требующими различной политики управления. Обеспечение доступа пользователя превращается из простого задания пароля в создание четко выраженной политики для управления связями между пользователями, службами и приложениями.

Основанием централизовано управляемой, автоматически подготавливаемой к работе методологии является центральный репозиторий – каталог – для управления привилегиями пользовательского доступа. Служба каталогов – это просто база данных, в которой хранится разнообразная информация о людях, сетевых устройствах, ресурсах, и объектах, а также об ответах на запросы клиентов, таких как Web-браузеры, программное обеспечение руководства и клиенты электронной почты. Каталог похож на телефонную книгу, состоящую из записей (имен), которые имеют атрибуты (номера телефонов и адреса). В этой статье записями будут являться имена сетевых служб, а атрибутами будут описания этих имен.

РИСУНОК 1: Записи каталога LDAP являются иерархическими; ниже каждой записи могут находиться несколько вложенных записей.

LDAP, открытый стандарт служб каталогов, впервые был представлен в 1995, в настоящее время существует его третья версия (LDAPv3). LDAP не совсем соответствует приведенной выше аналогии с телефонной книгой, поскольку каталоги LDAP являются иерархическими по своей природе. Одна запись может иметь другие вложенные записи, и результат похож на инвертированное дерево. На Рис.1 показана иерархия каталогов, содержащих имена двух сетевых служб: luke и nick. Обе они находятся в домене gennick.org.

Для идентификации записи указывается имя этой записи и имена всех записей, находящихся выше нее, до самого корня. Такая идентификация использует ссылку на отличительное имя (DN). Для luke, DN выглядит следующим образом: (dn: cn=luke, cn=OracleContext, dc=gennick, dc=org). Под именем записи сетевого сервиса, вы увидите еще несколько записей, названных в честь некоторых знакомых конструкций Net8. Описания, список описаний, список адресов и адреса все они находятся иерархически ниже записей, соответствующих именам сетевой службы. Иерархия Net8 очень точно отображается в LDAP.

Oracle Internet Directory (OID) является реализацией сервера каталогов LDAP, созданной корпорацией Oracle. OID хранит объекты каталогов в базе данных Oracle8i, и тесно интегрирован со средствами управления Oracle. Поскольку объекты хранятся в базе данных, OID может поддерживать терабайты информации каталогов.

Подготовка к использованию OID

Нам повезло, что у нас уже был инсталлированный и работающий OID. У нас также была установлена схема LDAP для Net8, как часть установки OID по умолчанию. Если у вас OID не инсталлирован, то выполните установку по умолчанию. Для начала этого достаточно.

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

*   Создайте записи LDAP для обращения к домену, который вы хотите использовать для разрешения имен. Это подготовка для создания записей, определяющих имена сетевых служб.

*   Создайте запись OracleContext в этом домене.

*   Создайте пользователя LDAP для работы с Net8 Assistant.

*   Сконфигурируйте клиента для использования LDAP.

*   Создайте имя сетевой службы и проверьте возможность соединения со стороны клиента.

Для выполнения большинства шагов мы использовали Oracle Directory Manager (ODM) – программу с графическим интерфейсом, которая позволяет создавать записи в OID. Ее можно запустить из Start->Programs->Oracle-> OraHome81->Oracle Internet Directory->Oracle Directory Manager.

Создание записей LDAP

Рассмотрим следующий пример: допустим, что мы хотим работать с доменом gennick.org. Это означает, что нам необходимо создать следующую LDAP запись: (dn: dc=gennick, dc=org). Ниже записи для этого домена должна находиться другая запись, называемая OracleContext, под которой Net8 будет искать все имена сетевых служб. Ее также необходимо создать.

Для объявления имен сетевых служб в каталоге, можно использовать Net8 Assistant.

Создание контекста gennick.org

Далее мы будем создавать домен gennick.org в LDAP, создав две записи: одну для org и другую для gennick, используя Oracle Directory Manager (ODM). Для создания записи org, на экране, который появляется при вызове ODM, щелкните по папке Entry Management (Управление записями), затем щелкните по иконке New Entry (Новая запись) палитры инструментов. Иконка New Entry представляет собой зеленую коробку со звездой. Появится окно Super Class Selector.

После создания записи, ее необходимо связать с классом. Поскольку мы создаем домен, выберем класс, именуемый domain. Появится окно New Entry. Здесь нужно в качестве значения обязательного свойства dc указать имя домена org. Необходимо также щелкнуть по кнопке Add (Добавить) и добавить Top в список классов объектов. После выполнения этих действий щелкните по кнопке OK, чтобы сохранить новую запись.

Далее, создайте запись для gennick под записью для org. Здесь приходит на помощь возможность создания по подобию, доступная в ODM. Эта функция позволяет вам использовать существующую запись в качестве шаблона для новой записи, минимизируя количество информации, которую необходимо вводить повторно. Для создания записи для gennick, мы выбираем запись для org, и нажимаем кнопку Create Like (Создать по подобию) панели инструментов. Отличительным именем (DN) новой записи будет "dc=org,", поскольку таково было имя исходной записи. Отредактируйте это имя таким образом, чтобы оно выглядело так "dc=gennick,dc=org". Затем нажмите кнопку OK для создания новой записи.

Заключительным шагом является создание записи OracleContext, расположенной иерархически ниже (dn: dc=gennick, dc=org). Имя OracleContext имеет особое значение для Net8, все имена сетевых служб располагаются ниже него. Эта запись отделяет записи под доменом, связанные с Oracle, от записей, которые не связаны с Oracle. При создании записи OracleContext, убедитесь, что она основана на классе orclContext. Эта запись имеет один обязательный атрибут – cn, значением которого должно быть "OracleContext".

На Рис. 2 показан результат. В левой панели видна иерархическая структура трех сущностей, которые мы создали. В правой панели, расположено полное описание OracleContext—последней записи, под которой мы будем создавать имена сетевых сервисов.

Рисунок 2: Мы используем Oracle Directory Manager (ODM) для создания записей LDAP, которые содержит домен gennick.org. Левая панель показывает три новых записи, а в правой расположено описание записи OracleContext.

Создание пользователя LDAP

До этого момента мы выполняли все действия от имени пользователя, являющегося администратором. Теперь нужно создать пользователя каталога LDAP с соответствующим правом создания имен сетевых сервисов. Этот пользователь должен иметь возможность обращаться к каталогу из Net8 Assistant.

Мы будем создавать нашего пользователя под записью OracleContext, созданной ранее, и внутри группы OracleNetAdmins. На Рис. 3 показано описание этого пользователя каталогов, который, в конце концов, должен иметь следующее отличительное имя (dn: cn=Jonathan, cn=OracleNetAdmins,cn=OracleContext, dc=gennick,dc=org). Обратите внимание, что при создании по подобию были унаследованы классы объектов top и orclContext, а также, что мы добавили в список персону. Объектный класс person имеет два атрибута: cn и sn, которые мы заполнили соответственно именем пользователя и полным именем. Важно также заполнить необязательное поле пароля.

Рисунок 3: Мы создали пользователя LDAP, который имеет право создавать имена сетевых сервисов.

После создания пользователя, нужно дать ему некоторые права доступа. Мы выдадим пользователю права на все дерево gennick.org, позволив пользователю создавать имена сетевых сервисов в этом домене. Для этого нажмите на запись gennick в левой панели. Затем перейдите в правую панель и нажмите на закладку, озаглавленную Subtree Access (доступ к поддеревьям). Отсюда мы сможем дать права доступа новому пользователю jonathan.

Конфигурирование клиента

Конфигурирование клиента для использования LDAP – это очень простая задача. Фактически нужно выполнить две задачи. Во-первых, необходимо сконфигурировать Net8 для использования каталога LDAP для разрешения имен сетевых служб. Затем, нужно указать, как Net8 будет обращаться к каталогу LDAP, и где внутри него надо искать имена сетевых сервисов.

Чтобы сконфигурировать Net8 для использования LDAP для разрешения имен, установите следующее значение для NAMES.DIRECTORY_PATH в файле sqlnet.ora:

NAMES.DIRECTORY_PATH= (LDAP) Затем, создайте файл ldap.ora и поместите в этот файл записи, которые определяют тип и расположение используемого сервера LDAP. Необходимо также определить контекст по умолчанию для имен сетевых сервисов. Можно создать ldap.ora вручную, используя текстовый редактор, либо сгенерировать его, используя Net8 Configuration Assistant. В рассматриваемом примере файл ldap.ora должен выглядеть следующим образом:

DEFAULT_ADMIN_CONTEXT = "dc=gennick,dc=org"
DIRECTORY_SERVERS= (fire.gennick.org:389:636)
DIRECTORY_SERVER_TYPE = OID

Запись DIRECTORY_SERVER_TYPE сообщает Net8, что каталог LDAP является экземпляром OID. Запись DIRECTORY _SERVERS определяет адрес хоста сервера каталогов, номер порта для незащищенных соединений, и номер порта для SSL защищенных соединений. Номера портов, указанные здесь, являются значениями по умолчанию для OID.

Запись DEFAULT_ADMIN_CONTEXT в файле ldap.ora определяет контекст по умолчанию, в котором Net8 будет искать имя сервиса. Она аналогична записи NAMES.DEFAULT_DOMAIN, расположенной в файле sqlnet.ora. Net8 дополняет контекст по умолчанию тем именем сетевого сервиса, которое вы укажете. Также всегда добавляется cn=OracleContext. Таким образом, при попытке соединения с сервисом базы данных, используя system/manager@luke, Net8 будет стартовать со значением административного контекста, существующим по умолчанию, добавив к нему "cn=OracleContext", и затем добавив "cn=luke". Результатом будет следующее отличительное имя (dn:cn=luke, cn=OracleContext, dc=gennick, dc=org).

Запись NAMES.DEFAULT_DOMAIN в файле sqlnet.ora, которая используется для других методов именования, не оказывает никакого влияния при использовании LDAP. Нужно использовать запись DEFAULT _ADMIN_CONTEXT в файле ldap.ora.

Создание имени сетевого сервиса

Наконец, мы должны создать новое имя сетевого сервиса в каталоге LDAP, и проверить, что мы можем присоединиться, используя это имя. Создание имени сетевого сервиса вручную в каталоге LDAP это гораздо более сложная задача, чем редактирование файла tnsnames.ora, поэтому лучше сделать это, используя Net8 Assistant.

Для создания имени, выберите папку Service Naming (наименования сервисов) в окне Net8 Assistant, и затем щелкните по иконе “плюс” (+) панели инструментов. Net8 Assistant отобразит приглашение: имя пользователя/пароль для директории LDAP. Для входа в систему, нужно указать полное отличительное имя пользователя каталогов. Если вы забыли, я напомню, вот оно: cn=Jonathan,cn=OracleNetAdmins, cn=OracleContext,dc=gennick,dc=org. Нужно ввести всю эту строку целиком в качестве имени пользователя.

После того как вы войдете в каталог, остальная часть процесса определения имени сетевого сервиса аналогична использованию методов наименования tnsnames или Oracle Names. После определения имени, можно присоединиться, используя следующую команду:

sqlplus system/manager@luke

Если хотите, вы можете вернуться в Oracle Directory Manager, и просмотреть сырые записи для имени вновь созданной сетевой службы. Эти записи будут подчиняться записи OracleContext, созданной ранее. Имеет смысл посмотреть на сырые данные хотя бы один раз, чтобы понять, как хранится информация в каталоге LDAP.

Заключение

LDAP и Oracle Internet Directory можно использовать и для разрешения имен сетевых служб, и как централизованный репозиторий имен сетевых служб. Если вы являетесь пользователем Oracle Names, необходимо уже планировать переход на решения OID/LDAP. Для уменьшения количества проблем, возникающих при переходе, Oracle разработал Oracle Names LDAP Proxy. Это позволяет клиентам обращаться к серверу каталогов LDAP так, как будто это сервер Oracle Names. Прокси предоставляет два преимущества: он позволяет перенести ваш репозиторий независимо от ваших клиентов, и он позволяет поддерживать клиентов, работающих с версиями более старыми, чем Oracle8i. Oracle Names LDAP Proxy сейчас находится в бета версии, и будет доступен в версии Oracle9i в начале 2001.

Джонатан Генник (jonathan@gennick.com)является сертифицированным специалистом по Oracle (Oracle Certified Professional) и независимым консультантом. Вместе с Хьюго Толедо он является автором книги “Net8 Configuration and Troubleshooting” (“Конфигурация и устранение неисправностей в Net8”) (O'Reilly & Associates; ISBN: 1565927532; 2000). Джон –Поль Наварро (navarro@mcs.anl.gov) является системным администратором и администратором базы данных Oracle в Аргоннской Национальной Лаборатории, в Аргонне, штат Иллинойс.