AWS-对于对外部服务的传出请求,我应该使用 AWS API Gateway 还是 NAT Gateway 从私有子网调用外部 Web 服务

问题描述 投票:0回答:2

使用AWS API网关的场景?这是否也仅适用于传入或传出服务? NAT 网关是通过 Internet 网关调用外部服务的首选方式吗?可以用AWS API Gateway代替吗?后者会提供更多安全性吗?

调用外部服务的两种方式- 选项 1- a) 通过路由表将私有子网组件配置到 NAT 网关。 b) 请求将从私有子网 -> NAT 网关 -> Internet 网关 -> 外部服务路由?

选项2- a) 配置私有子网以通过路由表调用公有子网中的 AWS API Gateway b) 请求将通过私有子网 -> AWS API 网关 -> 外部服务路由?

请告诉我哪个选项更好?

amazon-web-services
2个回答
7
投票

你把事情搞混了。

如果实例/服务位于私有子网中,并且您需要该实例具有对 Internet 的出站访问权限,那么您需要一些 NATing/PATing 服务。对于 AWS,您可以将 NAT 网关附加到您的 VPC,也可以在同一 VPC 的公有子网中启动 NAT 实例并相应地配置路由表。 API网关与此无关。

API Gateway 可帮助您构建无服务器、安全且高度可用的 REST API,您可以向其发送 HTTP/HTTPS 请求。您可以配置一些API网关资源/方法来指向外部服务吗?当然可以。但 API Gateway 无法在您的路由表中定位。为什么?很简单,因为路由表在 ISO OSI 模型的第 3 层(通过 IP 地址进行路由)运行,而 API 网关在 ISO OSI 模型的第 7 层(应用程序层)运行。

所以您可以做以下事情。

  1. 实例(私有子网)-> NAT 实例-> Internet 网关-> 外部服务
  2. 实例(私有子网)-> NAT 网关-> Internet 网关-> 外部服务
  3. 实例(私有子网)-> NAT 实例/网关-> Internet 网关-> API 网关-> 外部服务

或者您甚至可以启动一个私有 API 网关,该网关仅在您的 VPC 内部运行,但同样,它与授予互联网访问权限无关。

关于安全性,我们在这里讨论的不是某人试图访问您的资源(入站访问),而是您/您的资源试图访问某些外部服务。您可以而且应该通过防火墙(例如 NACL、安全组,甚至操作系统级防火墙)来控制这一点。 API 网关的安全性以相反的方式工作,它可以保护您免受恶意传入请求/DDOS 攻击以及未经授权使用您的资源。

简而言之,如果您知道您想要从私有子网内部访问已经存在的外部服务,那么 API 网关对您来说完全没有用处。


0
投票

API Gateway 不是为出站流量或第 3 层路由而设计的;为了增强第 7 层安全性和控制,请在后端和 AWS 网关之间使用反向 API 网关(例如 Lunar.dev)来有效管理和保护出站 API 请求。

© www.soinside.com 2019 - 2024. All rights reserved.