【问题标题】:Hide environment variables from AWS Lambda Console从 AWS Lambda 控制台隐藏环境变量
【发布时间】:2020-05-19 14:32:38
【问题描述】:

我有一些使用一些环境变量的 lambda 函数。我知道我们可以使用 AWS KMS 对它们进行加密,然后从 AWS 控制台中它们将不可见。

在我的情况下,使用 KMS 是不可能的,所以我想知道是否有其他方法,可能是在 IAM 级别进行限制,以便用户看不到环境变量。

我已经尝试从策略中删除 GetFunctionGetFunctionConfiguration。它可以工作,但问题是,用户无法看到其他内容,因为现在不允许使用 GetFunctionConfiguration

是否有任何细粒度的权限设置只能从 AWS Lambda 控制台隐藏环境变量?

提前致谢。

【问题讨论】:

  • 更改环境变量,以便它们不是值,而是进入 Parameter Store 或 Secrets Manager 的键。然后授予 Lambda 函数的 IAM 角色读取底层密钥的权限,但不要将权限授予您的用户,这样他们就无法检索这些密钥。

标签: amazon-web-services aws-lambda permissions environment-variables amazon-iam


【解决方案1】:

在 Lambda 级别,恐怕没有办法在控制台中实现某种 RBAC 以实现环境变量的可见性。

如果您可以访问SSM Parameter Store,这将有助于解决您的问题。

通过将环境变量存储在 SSM 中,您可以通过放置参数的路径对每个参数实施基于 IAM 的访问控制。这将为您提供一个集中位置来管理您的 lambda 参数,并有助于最大限度地减少代码更改。

How To Store Your AWS Lambda Secrets - Medium 概述了类似的场景以及如何通过 Lambda 有效地利用 SSM。

【讨论】:

    【解决方案2】:

    简短的回答是否定的。正如您所指出的,对此的解决方案是使用 KMS 加密变量,然后在您的代码中解密它。

    【讨论】:

      【解决方案3】:

      作为更新的答案,现在有一种方法可以实现它:

      https://aws.amazon.com/premiumsupport/knowledge-center/lambda-environment-variables-iam-access/

      这个想法是将 KMS 与客户主密钥和拒绝 KMS 操作的策略一起使用

      {
          "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 用户看到环境变量。

      【讨论】:

        猜你喜欢
        • 2017-12-17
        • 2017-08-01
        • 2018-07-15
        • 2022-11-03
        • 2021-05-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-09-20
        相关资源
        最近更新 更多