我希望阻止有權存取我的 AWS Lambda 函數的 AWS Identity and Access Management (IAM) 使用者查看環境變數和未加密的文字。我該怎麼做?
解決方法
**注意:**下列解決方案會阻止 IAM 身分僅在 Lambda 主控台和 Lambda API 中查看 Lambda 函數的環境變數。它不會阻止 IAM 身分使用函數程式碼存取解密的環境變數,或將環境變數值輸出至 Amazon CloudWatch Logs。
若要阻止 IAM 身分存取 Lambda 環境變數中的密碼、金鑰或其他敏感資訊,請執行下列操作:
使用 AWS Key Management Service (AWS KMS) 客戶受管金鑰來加密環境變數。若要設定 KMS 金鑰,請遵循保護環境變數中的指示進行操作。
**重要:**請確保編輯 KMS 金鑰的金鑰政策,以便此政策拒絕存取不需要存取權的 IAM 身分。
拒絕特定 IAM 使用者查看 Lambda 環境變數的許可的 KMS 金鑰政策範例
**注意:**將 arn:aws:iam::1234567890:User1DeniedAccess 和 arn:aws:iam::1234567890:User2DeniedAccess 取代為您要拒絕存取的 IAM 身分的 Amazon Resource Name (ARN)。您可以視需要將更多 IAM ARN 新增至金鑰政策。
{
"Id": "MyCustomKey",
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Deny IAM users permission to see Lambda environment variables",
"Effect": "Deny",
"Principal": {
"AWS": [
"arn:aws:iam::1234567890:User1DeniedAccess",
"arn:aws:iam::1234567890:User2DeniedAccess"
]
},
"Action": [
"kms:Encrypt",
"kms:Decrypt",
"kms:ReEncrypt*",
"kms:GenerateDataKey*",
"kms:DescribeKey"
],
"Resource": "*"
}
]
}
如果遭拒絕的 IAM 使用者嘗試檢視函數的環境變數,您會收到類似下列內容的錯誤訊息:
"Lambda was unable to decrypt your environment variables because the KMS access was denied. Please check your KMS permissions. KMS Exception: AccessDeniedException"
相關資訊
建立金鑰
AWS Lambda 許可