如何對 IAM 使用者隱藏 Lambda 函數的環境變數和未加密的文字?

1 分的閱讀內容
0

我希望阻止有權存取我的 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:User1DeniedAccessarn: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 許可

AWS 官方
AWS 官方已更新 3 年前