部署内部 API

Deploying an Internal API

我基本上有一个 API 将与网络应用程序和移动应用程序一起使用。我不希望 API 公开可用,那么我应该在哪里部署它?有没有不使用 AWS 的方法?谢谢,导航 :)

如果您在 AWS 上托管应用程序,您有几个选择。

API 网关现在支持专用终结点。无法通过 public 互联网调用这些端点。这意味着如果您的应用程序托管在 AWS 上,则只有应用程序的内部服务可以调用端点。即数据库的前端等。我已经将这种方法用于内部微服务,例如将内部应用程序数据放置到运动流中。

或者,如果您不想使用 API 网关,您有很多选择。其中大部分涉及您从计划托管代码的地方创建 rest APIs。这可能在它自己的服务器上或某种容器上。

API 网关专用端点参考: https://aws.amazon.com/blogs/compute/introducing-amazon-api-gateway-private-endpoints/

有多种方法可以做到这一点。这是一个敏感话题,因为这是一个基于意见的领域。

但是,我会尝试在下面回答 - 并挑战你处理这个问题的方式。

这实际上取决于您的 'operational' 技能、资金、安全需求、截止日期等。

基本上你需要在 www 上提供一个端点,而不是每个人都可以连接。

您可以:

  • 部署虚拟机或网络应用程序。在 Azure/AWS/GCP/... 并将您需要连接的 IP 列入白名单。
  • 从任何供应商处租用 VPS,并在此处部署您的应用程序 - 再次强调白名单。 (编辑:不是电话,因为这个 IP 不断变化。代理可以在这里实现(潜在的瓶颈),或者任何身份验证机制,如 OAuth、JWT、证书等可以在入口控制器(例如 NGINX)或应用程序上实现本身。)
  • 在您的家庭 PC 上部署应用程序,为您的家庭订购一个静态 IP 并制作一个转发端口并在您的前提下设置安全性 (不推荐,并且会引发许多其他令人头疼的问题)
  • 与托管 Web 应用程序的公司联系(可能非常昂贵)

根据您问题中提供的有限信息,在选择适合您需要的设置时,有大量的选项、二选一和可发挥作用的因素。

你也应该考虑; VPN 使用、Backup/disaster 恢复、数据泄漏、冗余、未来部署的需要、您将如何在六个月内访问您的环境....

我希望这回答了你的问题,同时也提出了一些供你自己回答的问题。

最后,我建议你寻找灵感here

编辑:

问题: 将移动 IP 列入白名单。 VPS 已选择。

答案:

当手机经常更换 IP 时,这将成为一项艰巨的任务。 由于您正在进一步研究 VPS 设置,因此您可以更好地控制设置并可以选择研究 OAuth 和 JWT。

链接: OAuth - https://oauth.net/getting-started/ https://developer.okta.com/blog/2019/01/22/oauth-api-keys-arent-safe-in-mobile-apps

NGINX 智威汤逊 - https://docs.nginx.com/nginx/admin-guide/security-controls/configuring-jwt-authentication/

所以 - 在一天结束时,您可以让您的应用程序使用代理(潜在瓶颈)并将此 IP 列入白名单,或者打开端点(任何 -> 443)并实施类似的身份验证机制上面提到了。

考虑为来自 Web 的传入流量实施 DMZ 区域。 https://en.wikipedia.org/wiki/DMZ_(computing) 并将您的应用程序放在该区域后面,确保只有 DMZ 区域面向 Internet,并且托管您的应用程序的服务器正在与 DMZ 中的服务器通信。 同样,这是一个很大的话题,很难简化为 Whosebug post.