我已經從 AWS Secrets 檢索了我的 ssh 私鑰,并將在 paramiko 中將其傳遞給 ssh。但是由于庫只接受檔案名,我無法傳遞我從機密管理器中檢索到的私鑰字串。所以我想將字串寫入/tmp.
但我想知道/tmp在 lambda中寫入敏感資料是否存在任何安全隱患。
uj5u.com熱心網友回復:
每個 Lambda 執行環境都包含一個可寫檔案系統,位于/tmp. 其他執行環境無法訪問此存盤。
與行程狀態一樣,寫入的檔案將/tmp在執行環境的生命周期內保留。
該/tmp存盤與任何亞馬遜彈性塊存盤(EBS亞馬遜)或拉姆達工人實體本地存盤來實作。
這種方式/tmp在 Lambda 中使用有些安全,這意味著您的/tmp檔案夾不會與其他 AWS 客戶端共享。
此外,如果您想確保資料被擦除并且不在同一帳戶和不同客戶帳戶中的功能之間共享,您可以將資料保存在記憶體中。
根據 AWS 檔案:
Lambda 在將記憶體分配給執行環境之前對其進行清理,這有效地防止了屬于同一帳戶和不同客戶帳戶的函式之間的記憶體共享。為了便于執行環境重用,Lambda 不會在同一執行環境上為同一函式進行的后續呼叫之間清理記憶體。您可以在功能終止之前實作自己的記憶體加密和擦除程序。
有關 AWS Lambda安全性的概述,您可以查看AWS Lambda 的安全性概述,在第 7 頁中,我們對存盤和狀態進行了概述。
uj5u.com熱心網友回復:
但是由于庫只接受檔案名,我無法傳遞私鑰字串......
這并不完全正確,paramiko.RSAKey.from_private_key也可以從字串緩沖區讀取:
import io
import paramiko
# Read private key from AWS secrets
private_key = ...
private_key_buffer = io.StringIO()
private_key_buffer.write(private_key)
private_key_buffer.seek(0)
private_key = paramiko.RSAKey.from_private_key(private_key_buffer)
ssh = paramiko.SSHClient()
ssh.connect(pkey = private_key, ...)
這意味著您不必將其寫入臨時位置以便庫讀取它。
如果您仍然喜歡使用/tmp,請記住該位置可能會在相同函式的呼叫之間保持不變。除此之外,該/tmp位置將在分配給另一個功能執行時被清理。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/334355.html
上一篇:持續部署到服務器
