如何限制对RDS实例的访问,即使分配了RDS公共地址

时间:2018-12-26 00:50:04

标签: amazon-web-services aws-lambda amazon-rds amazon-vpc

我有一个RDS实例,它是mysql(VPC中的默认实例,并分配了公共IP地址)。 RDS的公共地址用于我的lambda函数,也可以通过mysql工作台直接访问。

我知道在通过mysql工作台直接访问时,使用安全组来阻止我的自定义IP地址并将其列入白名单。但是,由于IP地址有限,这不允许我的lambda访问RDS。

我之前尝试过将lambda放在一个安全组中,并允许RDS安全组的入站用于lambda安全组。这适用于允许RDS用于lambda功能和直接访问。问题是我的lambda函数由于使用aws-sdk调用其他人的aws资源而失去了Internet连接。也许需要使用NAT网关?

关于以下方面的任何建议: 如何通过仅允许自定义IP地址和lambda函数来保护我的RDS资源?我的lambda函数允许通过API调用其他人的aws资源。

谢谢。

2 个答案:

答案 0 :(得分:1)

AWS最近为RDS connect引入了IAM策略。这可以用来授予Lambda的访问权限。

注意:您需要enable IAM authentication来访问数据库。

答案 1 :(得分:1)

您的最佳配置将是:

  • VPC中的RDS实例
  • 同一VPC的专用子网中的Lambda函数
  • VPC公用子网中的NAT网关
  • Lambda函数(Lambda-SG)上的安全组
  • RDS实例上的安全组,该安全组允许来自Lambda-SG的入站连接(按名称,而不是IP地址)

仅当配置为使用VPC或VPC具有可将请求转发到Internet的NAT网关时,Lambda函数才能访问Internet。

为了获得最佳安全性,通常建议您将数据库放在专用子网中。如果希望从Internet连接到它,则可以通过公共子网中的堡垒服务器使用SSH端口转发。但是,我怀疑您很高兴将RDS实例保留在公共子网中。