如何对某个 IAM 用户隐藏我的 Lambda 环境变量?

上次更新时间:2020 年 2 月 20 日

我想阻止有权访问我的 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) 客户主密钥 (CMK) 来加密环境变量。有关更多信息,请参阅保护环境变量

对于不需要访问权限的 IAM 身份,可以编辑 CMK 的密钥策略来拒绝其访问。例如,您可以使用以下密钥策略。

注意:请将 arn:aws:iam::1234567890:User1DeniedAccessarn:aws:iam::1234567890:User2DeniedAccess 替换为您要拒绝其访问的 IAM 身份的 Amazon 资源名称 (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 控制台中查看您的 Lambda 函数的环境变量时,将会出现以下错误消息:

"Lambda was unable to decrypt your environment variables because the KMS access was denied. Please check your KMS permissions. KMS Exception: AccessDeniedException KMS Message: The ciphertext refers to a customer master key that does not exist, does not exist in this region, or you are not allowed to access."

这篇文章对您有帮助吗?

我们可以改进什么?


需要更多帮助?