保護 Lambda 環境變數 - AWS Lambda

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

保護 Lambda 環境變數

若要保護您的環境變數,可以使用伺服器端加密來保護您的靜態資料,並使用用戶端加密來保護傳輸中的資料。

注意

若要提高資料庫安全性,建議您使用來儲存資料庫認證, AWS Secrets Manager 而不要使用環境變數。如需詳細資訊,請參閱 AWS Lambda 與 Amazon RDS 一起使用

靜態安全

Lambda 永遠使用 AWS KMS key提供靜態伺服器端加密。預設情況下,Lambda 使用 AWS 受管金鑰。如果此預設行為符合您的工作流程,您便不需要設定其他項目。Lambda 會 AWS 受管金鑰 在您的帳戶中建立,並為您管理該帳戶的許可。 AWS 不會向您收取使用此密鑰的費用。

如果您願意,您可以改為提供 AWS KMS 客戶管理的金鑰。您可以這樣做以控制 KMS 金鑰的輪換或滿足您的組織對管理 KMS 金鑰的請求。當您使用客戶受管的金鑰時,只有您帳戶中具有 KMS 金鑰存取權的使用者才能檢視或管理函數上的環境變數。

客戶受管金鑰會產生標準 AWS KMS 費用。如需詳細資訊,請參閱 AWS Key Management Service 定價

傳輸中安全

為了提高額外的安全性,您可以為傳輸中的加密啟用協助程式,這可以確保您的環境變數在傳輸過程中在用戶端得到加密保護。

若要為環境變數配置加密
  1. 使用 AWS Key Management Service (AWS KMS) 為 Lambda 建立任何客戶受管金鑰,以用於伺服器端和用戶端加密。如需詳細資訊,請參閱AWS Key Management Service 開發人員指南中的建立金鑰

  2. 使用 Lambda 主控台,導覽至 Edit environment variables (編輯環境變數) 頁面。

    1. 開啟 Lambda 主控台中的 函數頁面

    2. 選擇一個函數。

    3. 選擇 Configuration (組態),然後從左側導覽列選擇 Environment variables (環境變數)。

    4. Environment variables (環境變數) 區段中,選擇 Edit (編輯)。

    5. 展開 Encryption configuration (加密組態)。

  3. (選用) 啟用主控台加密協助程式,以使用用戶端加密來保護傳輸中的資料。

    1. Encryption in transit (傳輸中加密)下,選擇 Enable helpers for encryption in transit (啟用傳輸中加密的協助程式)。

    2. 對於要為其啟用主控台加密協助程式的每個環境變數,請選擇環境變數旁邊的 Encrypt (加密)。

    3. 在傳輸過程中加密下 AWS KMS key ,選擇您在此程序開始時建立的客戶管理金鑰。

    4. 選擇 Execution role policy (執行角色政策),然後複製政策。此政策授予函數的執行角色解密環境變數的許可。

      儲存此政策,以便在此程序的最後一個步驟中使用。

    5. 向函數中新增解密環境變數的程式碼。若要查看範例,請選擇解密秘密程式碼片段

  4. (選用) 指定用於靜態加密的客戶受管金鑰。

    1. 選擇 Use a customer master key (使用客戶主金鑰)。

    2. 選擇在此程序開始時建立的客戶受管金鑰。

  5. 選擇 Save (儲存)。

  6. 設定許可。

    如果搭配使用客戶受管金鑰和伺服器端加密,請向您希望其能檢視或管理該函數環境變數的任何使用者或角色授予許可。如需詳細資訊,請參閱 管理伺服器端加密 KMS 金鑰的許可

    如果您要啟用用戶端加密來增強傳輸中安全,您的函數需要許可來呼叫 kms:Decrypt API 操作。將您先前在此程序中儲存的政策新增至函數的執行角色

管理伺服器端加密 KMS 金鑰的許可

您的使用者或函數的執行角色不需要任何 AWS KMS 權限即可使用預設加密金鑰。若要使用客戶受管金鑰,您需要使用金鑰的許可。Lambda 會使用您的許可,在金鑰上建立授權。這麼做可讓 Lambda 使用它來進行加密。

  • kms:ListAliases – 在 Lambda 主控台中檢視金鑰。

  • kms:CreateGrantkms:Encrypt - 在函數上設定客戶受管金鑰。

  • kms:Decrypt - 檢視及管理使用客戶受管金鑰加密的環境變數。

您可以從您的 AWS 帳戶 或從金鑰的資源型權限原則取得這些權限。 ListAliasesLambda 的受管政策提供。金鑰政策會將其餘許可授予 Key users (金鑰使用者) 群組中的使用者。

沒有 Decrypt 許可的使用者仍然可以管理函數,但是無法在 Lambda 主控台中檢視或管理環境變數。如要防止使用者檢視環境變數,請將拒絕存取預設金鑰、客戶受管金鑰,或是所有金鑰的陳述式新增到使用者的許可。

範例 IAM 政策 - 透過金鑰 ARN 拒絕存取
{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Deny", "Action": [ "kms:Decrypt" ], "Resource": "arn:aws:kms:us-east-2:111122223333:key/3be10e2d-xmpl-4be4-bc9d-0405a71945cc" } ] }

如需有關管理金鑰許可的詳細資訊,請參閱《AWS Key Management Service 開發人員指南》中的 AWS KMS中的金鑰政策