【问题标题】:Query AWS RDS from Lambda Securely从 Lambda 安全地查询 AWS RDS
【发布时间】:2019-02-28 15:28:37
【问题描述】:

我正在尝试将我的 Lambda 连接到 RDS,这只是一个学习练习。 目前,所有资源都是通过 CloudFormation 创建的,如果可能的话,我想继续这样做。

我的问题是来自https://docs.aws.amazon.com/lambda/latest/dg/vpc-rds.html 的以下声明,其中详细说明了连接方式。

A second file contains connection information for the function.

    Example rds_config.py

    #config file containing credentials for RDS MySQL instance
    db_username = "username"
    db_password = "password"
    db_name = "ExampleDB" 

AWS 所做的声明让我觉得我应该将这些值硬编码到一个看起来不安全的文件中。我可以尝试使用环境变量,但我认为会出现同样的问题。

如果有人对如何安全地将 lambda 连接到 rds 有任何建议,我将不胜感激!!!

【问题讨论】:

    标签: aws-lambda amazon-rds aws-kms


    【解决方案1】:

    如果您出于某种原因不想使用环境变量,可以让您的 Lambda 函数为您查询 AWS Systems Manager Parameter Store

    假设您的函数被触发后,您只需将 SSM 查询到 get 所需的参数,然后将其传递到您的 RDS 连接。

    请记住,如果您的 Lambda 还需要 Internet 访问(在这种情况下确实需要,因为它需要访问 SSM),您需要为其附加 2 个子网:一个私有子网和一个公共子网。私有将流量路由到 RDS,公共将流量路由到其他 AWS 服务/或互联网。

    不过,设置环境变量是最容易让您起步的方法。

    编辑:如果您需要快速入门,请查看this 答案,我将引导 OP 创建具有公共子网和私有子网的 VPC。

    编辑 2:好消息。 AWS 前段时间发布了 SSM 的 VPC 终端节点。因此,您的 Lambda 不再需要通过 Internet,您只需点击该 VPC 终端节点即可。你可以在official docs看到它

    【讨论】:

    • 您说“如果您出于某种原因不想使用环境变量。”这是否意味着这样做是正常的做法?另外,非常感谢您的回答和随后的编辑,我真的很感激!
    • 不客气。是的,这是一种正常的做法。但 SSM 改变了游戏规则,因为您可以加密变量。这在一些公司中是合规的,当然,它确实增加了一些额外的安全性。但是如果你想将它们存储在环境变量中你应该没问题:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-10-16
    • 1970-01-01
    • 2021-04-09
    • 2015-08-01
    • 2021-11-27
    • 2021-06-10
    • 1970-01-01
    相关资源
    最近更新 更多