我有本地AWS Lambda環境變量,想用特定的KMS密鑰加密並分配給Lambda函數。如何使用AWS CLI設置加密的Lambda環境變量?
我倒是覺得像
aws lambda update-function-configuration --function-name functionName --cli-input-json file://config.json
與config.json
爲
{
"Environment": {
"Variables": {
"var01": "Variable one",
"var02": "Variable two"
}
},
"KMSKeyArn": "arn:aws:kms:us-west-1:09238573743:key/...."
}
會做到這一點。但變量最終未加密。 「KMSKeyArn」似乎只用於解密(例如,在boto3.client('kms').decrypt
的函數處理程序中)。
如何使用AWS CLI獲取理想的JSON指定的本地(未加密)值,並使用特定的KMS密鑰將它們分配爲Lambda函數環境變量的加密值(並確保將相同的密鑰分配給功能通過boto3.client('kms').decrypt
用?
我也想以確保如果可能的話我的變量從未以純文本(也就是加密局部出現)傳輸。
謝謝。如何確保我的Lambda函數中的代碼可以解密這些變量;只需在控制檯的「配置>高級設置> KMS密鑰」下分配與****相匹配的密鑰?或者是爲了某種其他目的而設置的? – orome
這是一個很好的問題,應該在我的回答中: 該設置與AWS CLI中的設置相同:它爲您的lambda中的數據的靜態加密設置密鑰。所以它不用於解密你的環境變量。 爲了確保您的lambda函數能夠解密您的加密變量(即它可以使用您的密鑰),您必須進入AWS IAM,將您的lambda的角色設置爲密鑰的用戶。 – DaMaill
這就是讓我感到困惑的問題:我不清楚「休息時」是什麼意思,與「boto3」執行的加密不同。客戶端('kms'),「解密」或在控制檯中使用CLI或「加密助手」執行的加密。 (例如,如果變量被加密爲「靜止」 - 並且顯然自動解密而無需在函數中使用KMS API - 爲什麼還要使用其他加密?) – orome