Как аутентифицировать вход в Oracle с помощью зашифрованного пароля

Мы подключаемся к Oracle с помощью сценариев KornShell (ksh), которые используют SQL*Plus для подключения к Oracle. База данных Oracle находится в том же ящике Solaris. В настоящее время мы храним идентификатор пользователя и пароль Oracle (обычный текст) в файле в папке .ssh подключающегося пользователя с 400 битами разрешений.

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

Теперь я хочу понять это-

  1. Я читал, что Oracle шифрует/хэширует строку пароля перед ее передачей. Я не могу найти ссылку прямо сейчас, однако я все еще хочу подтвердить свое понимание. Это действительно так? У нас 11g r2, это что-то изменит?

  2. Смогу ли я войти в SQL*Plus без расшифровки хэша пароля? например, администраторы баз данных устанавливают пароль, передают мне хэш. Я помещаю это в файл и передаю в SQL*Plus в качестве параметра. Есть ли какой-то способ, которым работает такая аутентификация? Я знаю, что некоторые инструменты позволяют это, если вы кодируете с помощью их инструмента, они могут расшифровать значение и использовать его для аутентификации. Оракл?

Помогите мне ребята.


person Raghav    schedule 23.07.2013    source источник


Ответы (3)


Прошло некоторое время с тех пор, как я это сделал (и у меня нет удобного банкомата для Linux), но вы можете попробовать это, чтобы скрыть подробности от ps:

echo password | sqlplus -s username@database @myscript.sql

Обратите внимание, что -s — это беззвучный режим для sqlplus. Я полагаю, что вы также можете поместить пароль в «защищенный» файл (я использую этот термин вольно, но установить биты равными 400) и выполнить проверку файла, перенаправив его в sqlplus, как указано выше.

Редактировать: если администраторы баз данных действительно озабочены паролями, то как насчет использования НИКАКИХ паролей. Вы можете попробовать аутентификацию ОС, но сначала вам потребуется некоторая настройка. Например:

--в Oracle создать нового пользователя

create user ops$batch_user IDENTIFIED EXTERNALLY;
grant connect to ops$batch_user;

-- в Unix (войдите как batch_user или используйте команду su)

export ORACLE_HOME=/app/oracle/product/11.2
export PATH=$PATH:$ORACLE_HOME/bin
export ORACLE_SID=DEV
sqlplus /

Обратите внимание, что пароли не используются, поскольку пользователь аутентифицируется ОС. Это менее сложно, чем кошелек Oracle imo, но и не идеально.

person tbone    schedule 23.07.2013

Как именно вы подключаетесь к БД? Если вы используете sqlplus user/password@database из своей командной строки/скрипта, у вас действительно есть проблема. Причина в том, что вы можете легко увидеть пароль с помощью команды ps.

Обфускация с помощью Base64 на самом деле не является шифрованием, потому что Base64 — это известный алгоритм передачи двоичных данных по сети. Некоторых это может сбить с толку, но, безусловно, это небезопасный способ отправки пароля.

Что я делаю в этом случае, чтобы избежать отображения пароля в списке процессов, так это то, что я записываю пароль в текстовый файл с разрешением только на чтение для локального пользователя. Потом запускаю sqlplus с nohup или в фоновом режиме sqlplus user@db < pwdfile и сразу снова удаляю файл.

person Devolus    schedule 23.07.2013

Вы можете использовать кошельки Oracle для аутентификации БД.

Пример настройки можно найти здесь.

person ThinkJet    schedule 23.07.2013