web-dev-qa-db-ja.com

機密のパスワードを開示せずにスクリプトからnzsqlまたはnzloadを呼び出すにはどうすればよいですか?

これはNetezzaのドキュメントには記載されていません。

これを行うLinuxスクリプトはたくさんあります。

NZ_PASSWD_ENCRYPTED=29TY20T98=
NZ_PASSWD_CLEAR=`DecryptFunc $NZ_PASSWD_ENCRYPTED`
NzResult=$(nzsql -db ${NZ_DATABASE}  -u ${NZ_USER}  -pw $NZ_PASSWD_CLEAR -h $NZ_Host \
              -qc "select 'hi there folks;'")

パスワードがハッキングされる可能性のあるコマンド環境にそのままにしておくのは好きではありません。

Nzsqlスクリプトでパスワードを別の方法で処理する関数はありますか?ドキュメントに何か見逃しましたか?または、私が使用できるLinuxスクリプトのトリックを教えてください。

前もって感謝します....

1
Andrew Wolfe

3つのオプション:

  • 環境にエクスポートします。
  • スクリプトに入れます
  • nzpasswordを使用する

例は頭の中にあります。今すぐテストするインスタンスがありません。少し調整する必要があるかもしれません。

環境にエクスポートする:

NZ_PASSWD_ENCRYPTED=29TY20T98=
export NZ_PASSWORD=`DecryptFunc $NZ_PASSWD_ENCRYPTED`
NzResult=$(nzsql -db ${NZ_DATABASE}  -u ${NZ_USER} -h $NZ_Host \
              -qc "select 'hi there folks;'")
unset NZ_PASSWORD

シェルに設定された環境変数を読み取ることができるユーザーは、引き続きパスワードを取得できますが、システムのすべてのユーザーに表示されるプロセスリストには表示されません。

スクリプトに入れます:

クエリをsqlファイルに入れ、その先頭に次のようなものを追加します。

\set STOP_ON_ERROR TRUE
\echo *** connecting to MY_DATABASE ***
\connect MY_DATABASE MY_USER MY_PASSWORD
select 'hi there folks;'

次に、nzsqlを使用してこのファイルを実行します。 nzsqlへのログインユーザーも指定する必要がある場合がありますが、すべてのユーザーが指定する必要があります(ログイン以外に他の権限を一切持つことができないユーザーも含む)
sqlファイルを読み取ることができる人は誰でもパスワードを見ることができますが、他の場所には表示されないと思います

nzpasswordの使用

後で使用するために、暗号化されたパスワードを非表示の〜/ .nzpasswordファイルに保存するツールがあります。

nzpassword add -u user -pw password -Host hostname

参照: http://www-01.ibm.com/support/knowledgecenter/SSULQD_7.1.0/com.ibm.nz.adm.doc/c_sysadm_encrypted_pa​​sswords.html

1
r.m