Linux
如何在不洩露敏感密碼的情況下從腳本呼叫 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 腳本中的任何技巧?
提前致謝….
三個選項:
- 將其導出到環境中。
- 把它放在腳本中
- 使用 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