ORACLE, аутентификация пользователей с административными правами. REMOTE_LOGIN_PASSWORDFILE

dbstalker, 14 мая

Oracle рекомендует защищать словарь данных от доступа пользователей с системными привилегиями типа ANY. Подробнее здесь. Для этого параметр инициализации O7_DICTIONARY_ACCESSIBILITY в Oracle 9i и выше установлен по умолчанию в значение FALSE. А это означает, что к словарю базы данных можно добраться лишь, подключившись к базе как AS SYSDBA.

Как уже упоминалось ранее ORACLE использует как внутреннюю аутентификацию, так и внешнюю.При внутренней аутентификации пользователь с административными правами подключается следующим образом:

Connect sys/пароль@строка_коннекта as sysdba

А теперь рассмотрим внешнюю Windows-аутентификацию, когда можно подключиться к базе данных без указания пароля.

Windows-аутентификация группы на сервере базы данных

При установке Oracle на сервере Windows создается группа Windows ORA_DBA и в эту группу включается учетная запись Windows, под которой проходит установка Oracle. В эту группу можно включать других пользователей, которым нужно предоставить оракловские администраторские привилегии. Все члены Windows-группы ORA_DBA владеют ролью Oracle SYSDBA !!

Так вот, члены группы ORA_DBA подключаются к базе данных Oracle с правами администраторов базы данных без предъявления паролей:

SQL> connect / as sysdba или SQL> connect /@SERVICE_NAME as sysdba

Но для этого еще нужно выполнить несколько телодвижений.В файле sqlnet.ora нужно обратить внимание на следующие параметры.

Параметром NAMES.DIRECTORY_PATH устанавливается метод, который будет использован клиентами Oracle для определения строки соединения. Если NAMES.DIRECTORY_PATH= (TNSNAMES), то в этом случае клиент разрешает строку конекта с помощью текстового файла tnsnames.ora, который чаще всего находится локально. Например, conn юзер/пароль@my_base as sysdba - строка коннекта «my_base» будет искаться в файле tnsnames.ora, который находится в папке, например, - C:\oracle\ora92\network\ADMIN\tnsnames.ora.

Параметр SQLNET.AUTHENTICATION_SERVICES файла sqlnet.ora указывает, какую службу аутентификации должна применять база данных Oracle в случае, если пользователь пытается установить соединение с сервером Oracle. По умолчанию системы Oracle9i и Oracle8i активизируют службу аутентификации Windows при наличии следующей настройки: SQLNET.AUTHENTICATION_SERVICES=(NTS)

В системе Windows NT аутентификация всегда осуществляется с помощью диспетчера NT LAN Manager (NTLM). Что же касается систем Windows Server 2003, Windows XP и Windows 2000, то в тех случаях, когда клиентская машина Oracle находится в домене Windows 2003 или Windows 2000, применяется механизм аутентификации Kerberos; в других случаях используется аутентификация NTLM.

Чтобы иметь возможность пользоваться средствами аутентификации как Oracle, так и Windows, нужно внести в указанный ниже параметр службы аутентификации серверного файла sqlnet.ora следующие изменения:

SQLNET.AUTHENTICATION_SERVICES= (NONE,NTS)

Windows-аутентификация на сервере без группы возможна с помощью внешней оракловской аутентификации.

Аутентификация удаленных администраторов Windows

Процедура аутентификации удаленных пользователей выполняется операционными системами клиентов. Чтобы активизировать средства дистанционной аутентификации, нужно в файл init.ora для данного экземпляра базы данных добавить REMOTE_OS_AUTHENT=TRUE, после чего остановить и вновь запустить базу данных.

В Oracle не рекомендуется прибегать к дистанционной аутентификации, поскольку механизм Windows аутентификации не подходит для удаленных пользователей, ибо он не исключает возможности несанкционированного доступа к данным.

Подключение к базе с административными правами с использование файла паролей

На вопрос: «Зачем к базе данных подключаться с помощью файла паролей, разве недостаточно внешней и внутренней аутентификации?» ответ очень прост: «А если база не открыта, не смонтирована и даже не стартована? Как тогда пользователя допускать к работе с базой? как проверить его привилегии?». Надеюсь, что теперь понятна задача файла паролей.

Важно помнить, что аутентификация операционной системой имеет приоритет над аутентификацией с помощью файла паролей.

Если ваша учетная запись находится в группе ORA_DBA вашей операционной системы, и вы подключаетесь к базе как SYSDBA, то вам будут предоставлены административные привилегии вне зависимости от имени и пароля, с которыми вы подключались к базе данных. Если же вы не в группе ORA_DBA и вас нет в файле паролей, то при попытке подключиться, как SYSDBA потерпите неудачу. Но! Если вам дать привилегии SYSDBA, то вы попадете в файл паролей и сможете подключиться к базе как SYSDBA. Посмотрите на этот пример.

Смотрим, кто у нас есть в файле паролей:

select USERNAME from v$pwfile_users;

USERNAME                      
------------------------------
SYS                            

Пробуем подключиться юзером et к базе :


SQL*Plus: Release 9.2.0.1.0 - Production on ¦Є. TЁт 14 15:17:06 2010

Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.

SQL> conn et/eta@my_db as sysdba
ERROR:
ORA-01031: insufficient privileges

Попытка не удалась. Дадим юзеру et привилегии SYSDBA и посмотрим как изменился файл паролей:

grant sysdba to et;

select USERNAME from v$pwfile_users;


USERNAME                      
------------------------------
SYS                            
ET                         

Пробуем подключиться к базе :


SQL>  conn et/eta@my_db as sysdba
Connected.
SQL>

Ура! Все вышло.

Вывод:

  1. Огромные полномочия получает владелец учетной записи, которая находится в группе ORA_DBA. Поэтому нужно быть предельно осторожным с включением пользователей в эту группу.
  2. если ваша учетная запись находится в группе ORA_DBA на вашем сервере баз данных, то вы можете с любого рабочего места вашего домена и любым юзером подключиться к вашей базе данных с привилегиями SYSDBA.
  3. Если ваша учетная запись не включена в ORA_DBA вашего сервера, то достаточно получить привилегии SYSDBA вашему оракловскому пользователю и вы под этим пользователем и с помощью файла паролей подключитесь к базе как SYSDBA.

Для получения возможности подключения к базе через файл паролей достаточно:

  • Создать файл паролей ORAPWD FILE=filename PASSWORD=password ENTRIES=max_users
  • Установить параметр инициализации REMOTE_LOGIN_PASSWORDFILE в значение EXCLUSIVE. Это значение по умолчанию.
  • И иметь для пользователя привилегии SYSDBA.

Если не все понятно изложено, то почитайте документацию.

 

Новый комментарий

Я не спамер: введите суму 5+4



 

От авторов блога

О Блоге - прочитай перед началом.

Задать вопрос и получить ответ - уже решено 94 вопросов

Глоссарий - список терминов и сокращений


 
 

Бизнес форум

Последние темы:

Нужна гадалка
20 июля, 1 ответа
Бутель для воды
20 июля, 1 ответа