Есть ли простой способ вывести windows переменных среды пользователя в Oracle SQL, чтобы использовать их для ввода пароля? - PullRequest
0 голосов
/ 19 июня 2020

Я рассматриваю идею использования переменной среды моей ОС для использования в качестве источника Oracle для получения пароля в запросе SQL.

ACCEPT TeamPassword PROMPT 'Enter your team password: ';

Я хочу заменить этот код с чем-то, что сможет определить TeamPassword = {переменную поиска из windows пользовательских переменных в меню переменных среды}. Этот код в том виде, в котором он написан, требует приглашения, от которого я пытаюсь избавиться, и его можно легко использовать с помощью & TeamPassword. Я хочу иметь возможность использовать новую версию этого кода аналогичным образом.

Ответы [ 2 ]

2 голосов
/ 19 июня 2020

Это хороший пример того, что «только потому, что вы можете , не означает, что вы должны ». Использование переменной среды для хранения пароля - это ОЧЕНЬ ПЛОХО идея с точки зрения безопасности. Переменные среды можно проверять, регистрировать и просматривать с помощью инструментов системного мониторинга, открывая пароль для всеобщего обозрения. По той же причине вы не хотите, чтобы пароль отображался в командной строке для sqlplus или любого другого приложения, которое вы запускаете. Скорее всего, именно поэтому в вашем коде теперь есть подсказка - чтобы пароль можно было ввести без входа в систему кем-либо / кем-либо еще.

Лучше использовать кошелек Oracle (он же Secure Password Store) для хранения ваших учетных данных. Я написал сообщение в блоге об этом здесь: https://pmdba.wordpress.com/2014/10/16/database-account-password-storage/, и есть много других ресурсов, доступных с помощью быстрого поиска в Google.

Используя кошелек, вы можете войти в систему без имени пользователя и пароля (они оба хранятся в кошельке) и без запроса. Поместите кошелек в индивидуальный профиль пользователя и в вашем файле sq lnet .ora используйте переменную среды, чтобы указать кошелек, например:

WALLET_LOCATION=
  (SOURCE=
    (METHOD=file)
    (METHOD_DATA=
       (DIRECTORY="%USERPROFILE%\oracle\wallet")
    )
  )
0 голосов
/ 19 июня 2020

Вы можете попробовать сценарий оболочки следующим образом:

set TeamPassword = %1
echo %TeamPassword%
REM and then continue your script for connecting to database using the above variable

или

set TeamPassword = %env.variable%
echo %TeamPassword%
REM and then continue your script for connecting to database using the above variable
...