Три механизма аутентификации на выбор

Популярность базы данных Oracle во многом обусловлена ее гибкостью, которая заключается в большом количестве поддерживаемых типов интерфейсов с другими приложениями. А одним из факторов, влияющих на выбор базы данных, является ее интегрируемость с используемой средой. Например, если в компании развернут домен Windows 2000, то логично было бы требовать от базы данных наличия механизмов, позволяющих максимально задействовать возможности, предоставляемые службой каталога Active Directory. В качестве примера интеграции можно привести возможность аутентификации пользователей при доступе к ресурсам, хранящимся в базе данных. Эта возможность реализуется механизмами аутентификации посредством протоколов Kerberos, RADIUS и NTS.

АУТЕНТИФИКАЦИЯ KERBEROS

Протокол Kerberos был разработан в MIT (Massachusetts Institute of Technology, Массачусетский технологический институт) и используется для обеспечения прозрачного, то есть не требующего дополнительного ввода данных аутентификации, доступа пользователей к ресурсам, поддерживающим протокол аутентификации Kerberos. Механизм работы протокола Kerberos следующий.

  • Пользователь обращается к серверу Kerberos (Key Distribution Center, KDC), предоставляя данные аутентификации (имя пользователя и пароль).
  • Сервер KDC генерирует билет (ticket), в котором хранится сеансовый ключ пользователя, снабженный меткой времени, когда был сгенерирован сеансовый ключ, и передает его пользователю.
  • При дальнейшем обращении к ресурсам пользователь предъявляет ресурсу билет, данные билета проверяются на сервере KDC, и, если все в порядке, пользователю предоставляется доступ к ресурсу.

На уровне Oracle настройка поддержки протокола аутентификации Kerberos реализуется достаточно просто. Средствами Windows 2000 на сервере, который является контроллером домена Windows 2000, требуется создать учетную запись пользователя домена, соответствующую серверу СУБД (к примеру, если имя сервера ora.company.org, то имя пользователя также должно быть ora.company.org). Далее с помощью утилиты ktpass.exe, входящей в состав Support Tools для Windows 2000, создается файл v5srvtab.dat:

ktpass -princ oracle/server_bd@domain -mapuser user -pass password -out c:v5srvtab.dat

Где:

server_bd — полное доменное имя компьютера (FQDN), на котором располагается сервер базы данных (например, ora.company.org);

domain — имя домена, к которому относится служба Microsoft Kerberos (оно должно состоять только из заглавных букв), например COMPANY.ORG;

user — имя пользователя, совпадающее с именем сервера базы данных (например, ora.company.org).

password — пароль пользователя.

После выполнения описанной команды следует ожидать примерно такого результата, как показано на рис. 1.

Successfully mapped oracle/ora.company.org to ora.company.org
Key created.
Output keytab to c:v5srvtab.dat:
Keytab version: 0x502
keysize 64 oracle/ora.company.org@ora.company.org ptype 1 
(KRB5_NT_PRINCIPAL) vno
 1 etype 0x1 (DES-CBC-CRC) keylength 8 (0xa8833b519dda9152)
Account has been set for DES-only encryption.
Рисунок 1. Результат работы ktpass

Полученный файл необходимо перенести на сервер базы данных в каталог /etc/krb5. Следует учесть, что время между серверами KDC, сервером базы данных и рабочими станциями пользователей не должно различаться более, чем на величину, определенную в файле $ORACLE_HOME/network/admin/sqlnet.ora параметром SQLNET.KERBEROS5_CLOCKSKEW

Если сервер имен DNS недоступен, необходимо в файле /etc/hosts задать имя сервера и поставить ему в соответствие IP-адрес. Также требуется проверить правильность разрешения имени для сетевого IP-адреса сервера базы данных.

Экран 1. Создание объекта сервера базы данных при настройке службы IAS

Далее следует создать учетную запись соответствующего пользователя в базе данных (например, user):

create user «USER@сompany.org» identified externally;

Имя пользователя должно содержать только заглавные буквы. Предоставим данному пользователю право инициировать сессию:

grant create session to «USER@company.org»

и произведем изменение конфигурационных файлов $ORACLE_HOME/network/admin/sqlnet.ora, как показано в листинге 1.

Для настройки клиента Oracle следует создать конфигурационный файл для службы Kerberos, например с:oraclekrb5krb5.conf, содержащий следующую информацию:

[libdefaults]
default_realm = COMPANY.ORG
[realms]
COMPANY.ORG = {
kdc = company.org:88
}
[domain_realm]
.company.org = company.org

Затем добавляем в файл $ORACLE_HOME/network/ admin/sqlnet.ora код, показанный в листинге 2.

На следующем шаге следует проверить соединение с базой данных путем выполнения команды okinit user на клиентской рабочей станции с установленным клиентом ORACLE. При этом вывод команды должен быть приблизительно таким, как показано на рис. 2.

C:>okinit user
 
Kerberos Utilities for 32-bit Windows: Version 8.1.7.4.0 — 
Production on 11-SEP-2003 20:05:56
 
(c) Copyright 1996 Oracle Corporation. All rights reserved.
 
Password for user@company.org:
 
C:>oklist
 
Kerberos Utilities for 32-bit Windows: Version 8.1.7.4.0 — 
Production on 11-SEP-2003 20:06:21
 
(c) Copyright 1996 Oracle Corporation. All rights reserved.
 
Ticket cache: c:krb5_cc_userid
Default principal: user@company.org
 
 Valid Starting Expires Principal
11-Sep-2003 20:06:01 12-Sep-2003 04:05:56 
krbtgt/company.org@company.org
 
C:>sqlplus /@ora817
 
SQL*Plus: Release 8.1.7.0.0 — 
Production on Thu Sep 11 20:07:23 2003
 
(c) Copyright 2000 Oracle Corporation. All rights reserved.
 
Connected to:
Oracle8i Enterprise Edition Release 8.1.7.4.0 — Production
With the Partitioning option
JServer Release 8.1.7.4.0 — Production
 
SQL> exit
Disconnected from Oracle8i Enterprise Edition 
Release 8.1.7.4.0 — Production
With the Partitioning option
JServer Release 8.1.7.4.0 — Production
 
C:>oklist
 
Kerberos Utilities for 32-bit Windows: 
Version 8.1.7.4.0 — Production on 11-SEP-2003 20:08:06
(c) Copyright 1996 Oracle Corporation. All rights reserved.
Ticket cache: c:krb5_cc_userid
Default principal: user@company.org
 
 Valid Starting Expires Principal
11-Sep-2003 20:06:01 12-Sep-2003 04:05:56 
krbtgt/company.org@company.org
11-Sep-2003 20:07:26 12-Sep-2003 04:05:56 
oracle/company.org@company.org
Рисунок 2. Результат работы команды okinit user

АУТЕНТИФИКАЦИЯ RADIUS

При реализации данного метода на рабочей станции, намеченной для использования в качестве клиента базы данных, был установлен клиент Oracle 9.0.2 с дополнительным набором ASO (Advanced Security Option). На сервере базы данных в качестве операционной системы использовалась Windows Server 2000 SP3 и работал сервер Oracle 9.0.2 Enterprise Edition с ASO. На контроллере домена Windows 2000 помимо службы Active Directory была установлена служба Internet Authentication Services. Служба Internet Authentication Services является реализацией протокола RADIUS компании Microsoft. Таким образом, описанные ниже установки могут быть спроецированы на любую реализацию протокола RADIUS.

На стороне клиента ORACLE файл $ORACLE_HOMENetworkadminsqlnet.ora выглядит так, как показано в листинге 3.

На стороне сервера Oracle были также внесены изменения в файл $ORACLE_HOMENetworkadminsqlnet.ora, отраженные в листинге 4.

В листинге 4 параметр RADIUS_SERVER — это доменное имя (FQDN) сервера, на котором установлена служба Internet Authentication Services

Экран 2. Создание политики доступа для пользователя в IAS

В файл $ORACLE_HOME etworksecurity adius.key был помещен «разделяемый секрет» (shared secret), представляющий собой симметричный пароль на серверном и клиентском компонентах службы RADIUS.

Теперь произведем установку параметров инициализации REMOTE_OS_AUTHENT = FALSE и OS_AUTHENT_PREFIX = ?? путем выполнения следующих команд с консоли SQLPLUS:

Conn / as sysdba;
Show parameters %AUTH%
SQL> alter system set 
os_authent_prefix=?? scope=spfile;
SQL> alter system set 
remote_os_authentЯLSE scope=spfile;
SQL> shutdown;

Также можно использовать прямое редактирование этих параметров в файле настройки Oracle, в ora.ini. Правильность заданных параметров проверяется путем выполнения команды sqlplus и в консоли SQL следующих команд:

Conn / as sysdba;

Show parameters %AUTH%

При этом вывод выполняемых команд должен совпадать с приведенным ниже:

NAME TYPE VALUE

——————————————

os_authent_prefix string

remote_os_authent boolean FALSE

Настройка службы Internet Authentication Services проводится с консоли управления Microsoft Management Console (MMC). В оснастке Internet Authentication Services создадим новую конфигурацию клиента, как показано на экране 1. Следует отметить, что значение параметра Shared secret и содержимое файла D:oracleora92 etworksecurity adius.key должны совпадать.

Средствами настройки службы Internet Authentication Services создается новая политика доступа для удаленных клиентов, этот процесс отражен на экране 2. В частности, добавляется параметр Client-IP-Address matches со значением, равным IP-адресу сервера базы данных.

В свойствах соединения устанавливается флажок для включения параметра аутентификации Unencrypted Authentication (PAP, SPAP), см. экран 3, причем следует отметить, что без установления данного параметра аутентификация с использованием протокола RADIUS работать не будет. Пользователю домена, для которого предполагается задействовать аутентификацию в базе по протоколу RADIUS, нужно не забыть разрешить удаленную аутентификацию.

Экран 3. Назначение протоколов доступа для пользователя в IAS

Учетная запись пользователя базы данных Oracle создается путем выполнения команд в оболочке Oracle SQLPlus, см. рис. 3.

C:Sqlplus
Connected to:
Oracle9i Enterprise Edition 
Release 9.2.0.3.0 — Production
With the Partitioning, Oracle Label 
Security, OLAP and Oracle Data Mining options
JServer Release 9.2.0.3.0 — Production
SQL>Create user oratest identified externally;
User created.
SQL>Grant create session to oratest;
Grant succeeded.
Рисунок 3. Создание учетной записи пользователя Oracle

АУТЕНТИФИКАЦИЯ ПО NTS ORACLE

Метод NTS (Network Security) представляет собой метод аутентификации для базы данных ORACLE, основанный на получении статуса аутентификации пользователя в домене Windows 2000 или Windows NT 4.0. Данный метод может применяться, только если в качестве серверной платформы для базы данных Oracle используется операционная система Microsoft Windows NT 4.0, Windows 2000, Windows XP или Windows 2003. Сервер, на котором установлена база данных Oracle, должен иметь учетную запись в домене (должен быть зарегистрирован). Таким образом, данный метод не подходит для реализации на UNIX или других не совместимых с Windows платформах.

При реализации метода NTS аутентификация пользователя в базе данных производится незаметно для пользователя, без необходимости дополнительного ввода данных аутентификации. Для реализации этого метода следует установить параметры инициализации

REMOTE_OS_AUTHENT = FALSE

и

OS_AUTHENT_PREFIX = — (пустая строка)

путем выполнения команд в оболочке SQLPlus:

SQL> alter system set os_authent_prefix=— scope=spfile;

SQL> alter system set remote_os_authentЯLSE scope=spfile;

Опять же сделать это можно и путем прямого редактирования данных параметров в файле настройки Oracle, в ora.ini. Проверяем правильность заданных параметров:

Conn / as sysdba;

Show parameters %AUTH%

При этом вывод выполняемых команд должен совпадать с приведенным ниже:

NAME TYPE VALUE

—————————————————— —————-

os_authent_prefix string

remote_os_authent boolean FALSE

В системный реестр операционной системы сервера требуется добавить параметр HKEY_LOCAL_MACHINE SOFTWAREORACLEHOMEnOSAUTH_PREFIX_DOMAIN со значением TRUE.

В данном случае установка значения в TRUE предполагает, что аутентификация будет производиться только для пользователей, зарегистрированных в домене. В противном случае (если установлено значение FALSE) возникает интересный эффект: если пользователь успешно прошел аутентификацию локально на рабочей станции, ему все равно будет предоставлен доступ к ресурсам базы данных, независимо от статуса аутентификации в домене. Дополнительно требуется изменить на сервере и клиентской рабочей станции файл $ORACLE_HOME/Network/admin/sqlnet.ora путем добавления в него строки SQLNET.AUTHENTICATION_SERVICES= (NTS)

Экран 4. Один из этапов создания учетной записи пользователя в базе данных Oracle

Учетная запись пользователя Oracle может быть создана с помощью графической утилиты Oracle Administration Assistant for Oracle. Затем ему назначаются привилегии для доступа к данным, хранящимся в базе данных. Один из шагов процесса создания учетной записи пользователя приведен на экране 4. Обращаем внимание читателей на заголовок окна Create External OS User Wizard. Таким образом уточняется, что учетная запись создается для пользователя только с внешним методом аутентификации NTS.

ЗАКЛЮЧЕНИЕ

Описанные в статье методы могут применяться для аутентификации пользователя в Oracle в гетерогенных сетевых средах. При этом база данных Oracle позволяет не ограничиваться использованием только одного метода, а задействовать набор методов в различных комбинациях. К примеру, при аутентификации пользователя в среде домена Windows 2000 в первую очередь должен применяться метод NTS. Если аутентификация по методу NTS не была успешной, должен быть применен метод RADIUS. Если же и аутентификация по методу RADIUS выполнена не была, необходимо задействовать встроенные механизмы аутентификации пользователей в базе данных Oracle с сохранением данных аутентификации в таблице DBA_USERS.

В целом же не существует метода, который можно было бы охарактеризовать как «лучший» или «худший». Например, метод NTS может использоваться исключительно в окружении Windows, тогда как RADIUS может применяться в гетерогенных средах, зато использование RADIUS влечет за собой некоторые проблемы, связанные с безопасностью (например, требование использования разделяемого секрета). Из недостатков KERBEROS можно упомянуть сложность настройки и невозможность задействовать единую с операционной системой учетную запись. Однако при этом KERBEROS может применяться в гетерогенных средах (Windows, UNIX) и допускает использование единой учетной записи с другими базами данных Oracle.

Павел Покровский (underling@yandex.ru) — специалист по информационной безопасности

Илья Четвертнев (fuchunic@yandex.ru) — специалист по безопасности баз данных