限制对 AWS SQL 服务器实例的外部访问

Limiting External Access to AWS SQL Server Instance

我在 AWS 上有一个 SQL 服务器实例,我已通过更改我的安全组以允许从“任何地方”访问来开放外部访问。

+-------------+----------+------------+--------------------------+
|    Type     | Protocol | Port Range |         Source           |   
+-------------+----------+------------+--------------------------+
|    MSSQL    | TCP      |    1433    | Custom  0.0.0.0/0        |
|    MSSQL    | TCP      |    1433    | Custom  ::/0             | †
+-------------+----------+------------+--------------------------+

我想限制对此数据库的访问,但不是通过 IP 地址,因为我将用来访问它的服务没有静态 IP。

如何加强对该数据库的入站访问以用于外部服务(例如 Firebase 函数或 NodeJS 应用程序)?

† 在安全组入站规则部分选择 "Everywhere" 和 "MSSQL" 时生成的 AWS 安全组规则

AFAIK,如果不知道静态 IP 或您需要访问 EC2 实例的 IP 范围(托管 SQL 服务器的位置),则没有直接的方法可以实现此目的。

但是...

您可以在 API 网关后面包含您的实例,然后在 API 网关中为 API 方法启用 IAM 身份验证。然后使用 IAM 策略(连同资源策略)为您的 API 的用户指定权限。

更多:https://aws.amazon.com/premiumsupport/knowledge-center/iam-authentication-api-gateway/

没有直接的限制方法。

A​​WS Cloud - 解决方案(AWS 中的所有服务/实例)

如果您的 NodeJS 应用程序在 AWS 上 运行 或者您正在使用 AWS Lambda 服务,您可以允许在同一 VPC 中单独跨安全组进行访问。 (如果使用多个帐户 - 可以完成 VPC 对等)

对于您想要限制对可公开访问的数据库的访问的场景,就像其他人所说的那样,除了普通的旧 VPN 解决方案之外,我想不出其他方法。您的客户端通过 VPN 连接到数据库并将数据库实例移动到私有子网。但我不确定你实施它的可行性如何。