限制外部访问 AWS SQL Server 实例

6

我在AWS上有一个SQL Server实例,通过修改我的安全组允许从“任何地方”访问,使其可以对外开放。

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

我想限制对这个数据库的访问,但不通过 IP 地址,因为我将使用的服务没有静态 IP。如何加强入站访问以供外部服务使用(例如 Firebase 函数或 NodeJS 应用程序)?† AWS 安全组规则,在安全组入站规则部分选择“每个地方”和“MSSQL”时生成。

云函数没有专用的外部IP范围。您应该考虑使用附加加密或通过代码之间进行身份验证的共享秘密。 - Doug Stevenson
@DougStevenson,你能重新打开这个吗?我知道IP限制的问题;我正在寻找另一个解决方案。谢谢。 - 1252748
2
我建议重新表述问题,不要涉及到Cloud Functions或IP地址,因为你面临的问题是如何控制对仅授权客户端的访问。你需要的是一种执行授权的方法,无论其起始点在哪里。 - Doug Stevenson
@Doug Stevenson 感谢您重新开放并提出建议;我已经编辑过了,以利用您的建议。干杯。 - 1252748
我对这个问题感到困惑。您使用的访问数据库的服务难道不需要提供有效的凭据才能完成连接吗?只要您保持这些连接凭据安全,就没有其他人可以连接。您希望“加强入站访问”的程度是多少? - JohnRC
@JohnRC 的意图是减少部署的表面。 - 1252748
3个回答

8
据我所知,如果不知道需要访问您的 EC2 实例(托管 SQL Server 的位置)的静态 IP 或 IP 范围,没有直接的方法可以实现此目的。
但是...
您可以将您的实例放在 API Gateway 后面,然后在 API Gateway 中为 API 方法启用 IAM 认证。然后使用 IAM 策略(以及资源策略)为 API 的用户指定权限。
更多信息:https://aws.amazon.com/premiumsupport/knowledge-center/iam-authentication-api-gateway/

我需要仔细研究所有这些。说实话,这似乎很多。我的问题是否不太常见? - 1252748
1
不,这是一个非常常见的用例,但似乎AWS团队决定通过API Gateway支持它,因为在大多数情况下应用程序都在API Gateway下运行。@1252748 - Mouneer
@1252748 你需要解决方案的任何帮助吗? - Mouneer
我不明白这是如何可能的,一个客户端应用程序(例如nodejs)想要通过端口1433连接到mssql。你如何通过API网关代理该请求?客户端应用程序如何使用数据库驱动程序访问数据库并通过API网关访问数据库?能否请你帮助我理解一下? - Arun Kamalanathan
不,谢谢你的回答,但我认为最好的解决方案是将我的数据移动到GCP。这也很麻烦,但那是另一回事了。干杯。 - 1252748
@ArunK,API网关现在支持端口80、443和[1024, 65535]的终端点。因此,只需将自定义端口附加到终端点URL上即可。例如,http://x.y.z.x:1433。我的尊敬 :) - Mouneer

3

没有直接的限制方式。

AWS云 - 解决方案(AWS中的所有服务/实例)

如果您的NodeJS应用程序在AWS上运行或者您正在使用AWS Lambda服务,您可以仅在同一VPC内的安全组之间允许访问。(如果使用多个帐户 - 可以进行VPC对等连接)


2

对于你想限制公共可访问数据库的情况,就像其他人说的那样,我想不出除了普通的VPN解决方案之外还有什么其他方法。您的客户端通过VPN连接到数据库,并将数据库实例移动到私有子网中。但我不确定您是否能够实施这个方案。


我认为你没有理解问题的重点。这个问题是关于从外部服务访问数据库的,这个服务肯定不能添加到VPC中,因为它不是AWS资源。所以你的答案在这种情况下是无效的。 - Mouneer
很高兴听到您找到了前进的方式,只是为了我的知识,您能澄清一下谷歌云函数如何解决这个问题吗? - Arun Kamalanathan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接