我想阻止有权访问我的 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:User1DeniedAccess 和 arn: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"
相关信息
创建密钥
AWS Lambda 权限