Linux

如何在不洩露敏感密碼的情況下從腳本呼叫 nzsql 或 nzload?

  • October 11, 2014

我在 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 腳本中的任何技巧?

提前致謝….

三個選項:

  • 將其導出到環境中。
  • 把它放在腳本中
  • 使用 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

任何可以讀取為您的 shell 設置的環境變數的人仍然可以檢索密碼,但它不會顯示在系統上每個人都可見的程序列表中

把它放在一個腳本中:

將查詢放在一個 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

引用自:https://dba.stackexchange.com/questions/74711