如何对 IAM 用户隐藏我的 Lambda 函数的环境变量和未加密文本?

上次更新日期:2021 年 7 月 7 日

我想阻止有权访问我的 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 身份。

KMS 密钥策略示例:拒绝特定 IAM 用户查看 Lambda 环境变量的权限

注意:请将 arn:aws:iam::1234567890:User1DeniedAccessarn:aws:iam::1234567890:User2DeniedAccess 替换为您要拒绝其访问的 IAM 身份的 Amazon Resource Names (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"

这篇文章对您有帮助吗?


您是否需要账单或技术支持?