2016-12-05 164 views
1

我有有密碼,在命令中使用明文shell腳本:shell腳本調用另一個腳本密碼

--username = 'USER' 
--password ='abc100' 

我不希望密碼採用明文形式在這裏shell腳本。有沒有一種方法可以保持這個shell腳本密碼的保護或不以明文形式傳遞密碼並引用另一個受密碼保護的文件?

+0

聽起來像一個愚蠢的命令,希望密碼作爲參數。你指的是什麼命令? – andlrc

+0

您是否允許提示用戶輸入密碼?如果是這樣,您可以使用'read -s'將它存儲在命令和變量中 – Inian

+0

@andlrc - 我有一個雲調用命令,它需要我傳遞我想要登錄的雲實例的密碼。 –

回答

1

要很好地解決這個問題,瞭解這個密碼代表什麼以及妥協會帶來什麼樣的風險是非常重要的。瞭解誰可以訪問存儲該腳本和密碼文件的計算機,設置機器的方式,需要運行此腳本的人等,這一點也很重要。如果不理解完整的需求,很難給出正確的答案和風險。

假設損害此密碼可能會產生嚴重的負面影響,並假設許多不應該有此密碼的人需要運行此腳本,但在我看來,將此密碼存儲在每個需要運行的人的機器。您可能需要考慮讓擁有更多受限訪問權限的機器數量更少,並存儲此密碼,並通過使用OAuthBearer tokens用於自動訪問)等身份驗證機制的Web服務提供腳本的功能。然後,問題就變成了個人用戶如何訪問調用Web服務所需的承載令牌;雖然承載令牌也很敏感,但它們至少對每個用戶都是唯一的(提供一種更好地檢測折中和濫用的方法,儘管這仍然是您需要實現的)。在這個意義上,這個問題與原來的問題類似,但是風險較低。

假設我們現在正在談論存儲持票人令牌,您如何存儲它將取決於有多少不同的用戶可以訪問同一臺機器/文件系統。例如,如果許多不同的人可以在同一臺機器上擁有root訪問權限,那麼您可以做的事情很少。但是,如果每臺計算機只有一個用戶,並且只有該計算機的所有者才能獲得root權限,則可以使用UNIX權限來限制/控制對文件的訪問。例如,您可以創建一個專用於此特定腳本的用戶+組,並讓該腳本始終以該權限運行(例如,通過粘性位),並以不可讀的方式存儲持票人令牌信息用戶/組(作爲防止同一用戶運行的其他程序訪問該憑證的方式)。在許多人使用同一臺計算機的設置中,可以信任可以作爲root用戶運行的人員,您可以將憑證存儲在用戶主目錄中的文件夾中,該文件夾僅供該用戶訪問(並且不可讀/可寫同一組或其他用戶);但是,這確實會冒該用戶讀取數據所運行的其他程序的風險。您可以嘗試讓腳本加密/解密磁盤上文件的內容(例如,將密鑰嵌入到腳本中對數據進行加密/解密),但除非腳本被高度模糊處理並定期通過旋轉該密鑰更新,否則會做的很少。您還可以對不記名令牌施加短暫期滿,以便令牌需要經常刷新,作爲其他程序在其不再使用後濫用令牌的緩解措施。

相關問題