【发布时间】:2019-06-29 15:13:12
【问题描述】:
我有一个在 EC2 实例上运行的应用程序,该实例将数据存储在 RDS 实例中。所有这些实例都位于 AWS VPC 中,并配置了安全组以允许它们相互连接。
出于报告目的,我想从我的笔记本电脑(例如使用 SQLAlchemy)连接到 RDS 实例以运行简单查询。每次我尝试使用 EC2 应用程序使用的连接字符串进行连接时,连接都会超时。
对于 Google,可以为此使用 Cloud SQL 代理,但我找不到适用于 AWS 的类似产品。相反,似乎我应该做的是将 Internet 网关附加到 VPC 并配置安全组以允许从我的机器进行连接。但是,除了允许所有入站连接或允许静态 IP 之外,文档还不清楚如何执行此操作。不幸的是,我的笔记本电脑没有静态 IP,允许所有入站连接让我感到不舒服,因为它看起来不安全并且容易受到攻击。我也无法找到一种方法来配置安全组以允许基于 IAM 凭证的连接,例如使用 AWS CLI。由于我将定期生成报告,因此每次我想连接时都更新安全组(即允许我当前的 IP)的解决方案似乎不是最佳的。
我已尝试遵循以下文档,但到目前为止未能成功找到不允许所有连接的解决方案:
Allow users to connect to RDS using IAM*
Connecting to RDS instance from command line
Connecting to RDS on VPC from internet
*我的 RDS 实例配置不允许我启用 IAM 身份验证,我不知道为什么
IAM Database Authentication is not supported for the configuration in the DB Instance db.
Modify your Db Instance to another instance class and try again.
(Service: AmazonRDS; Status Code: 400; Error Code: InvalidParameterCombination;
Request ID: a6194fb8-2ab9-4a6a-a2be-63835e6e0184)
有什么我不理解或忽略的吗?由于数据库实例仍受数据库用户凭据保护,因此允许来自所有 IP 的连接不是什么大问题吗?
【问题讨论】:
-
VPC 内是否有任何机器既具有公共 IP 又可以访问您的 RDS?如果是这样,我通常使用 ssh 隧道来完成这类工作。
-
我没有想到这个主意。我当然可以添加一个,看看它是否符合我的需要。
-
您能说明一下您当前的设置吗? RDS 实例是在公有子网还是私有子网中?
-
我相信它在一个公共子网中(这不是我所期望的,但据我所知是这样)。我对 AWS 云堆栈以及我们正在运行的系统有些陌生,该系统在很大程度上是自动配置 VPC、EKS 集群并设置各种策略等。但是,诚然,RDS 实例是手动创建的由我,一个新手。
标签: mysql amazon-web-services amazon-rds amazon-vpc aws-security-group