2

SQL*Plus を使用して Oracle に接続する KornShell (ksh) スクリプトを使用して、Oracle に接続しています。Oracle データベースは、同じ Solaris ボックス上にあります。現在、Oracle のユーザー ID とパスワード (プレーン テキスト) を接続ユーザーの .ssh フォルダー内のファイルに 400 パーミッション ビットで保存しています。

DBA は、認証に平文のパスワードを使用しているという事実を理由に、この作業方法に反対しています。base64 を使用してパスワードをエンコードすることを提案したとき、シェル スクリプトでパスワードを復号化し、ネットワーク経由でパスワードを送信することを理由に、彼らはまだその考えを好まなかった.

今、私はこれを理解したい-

  1. Oracleがパスワード文字列を送信する前に暗号化/ハッシュすることを読んでいます。現在、参照が見つかりませんが、理解を確認したいと思います。本当にこんな感じですか?11g r2 を使用していますが、違いはありますか?

  2. パスワードハッシュを復号化せずに SQL*Plus にログインできますか? たとえば、DBA がパスワードを設定し、ハッシュを私に渡します。それをファイルに入れ、パラメータとして SQL*Plus に渡します。この種の認証が機能する方法はありますか? 一部のツールでは、そのツールを使用してエンコードすると、値を復号化して認証に使用できることを知っています。オラクルは?

助けてください。

4

3 に答える 3

4

これを行ってからしばらく経ちましたが (Linux ボックスの便利な atm を持っていません)、ps から詳細を隠すためにこれを試すことができます:

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

-s は sqlplus のサイレント モードであることに注意してください。パスワードを「保護された」ファイルに入れ(私はこの用語を大まかに使用しますが、ビットを400に設定します)、ファイルをcatして、上記のようにsqlplusにパイプすることもできると思います。

編集:DBAが本当にパスワードに関心がある場合は、パスワードを使用しないのはどうですか。OS 認証を試すこともできますが、最初にセットアップが必要です。例えば:

-- 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 /

ユーザーは OS によって認証されるため、パスワードは使用されないことに注意してください。これは Oracle ウォレットよりも複雑ではありませんが、完璧でもありません。

于 2013-07-23T14:19:00.057 に答える