我基本上有一个将与Web应用程序和移动应用程序一起使用的API。我不希望 API 公开可用,那么我应该在哪里部署它?有没有办法不使用 AWS?谢谢,导航:)
有多种方法可以做到这一点。这是一个敏感的话题,因为这是一个基于意见的领域。
但是,我将尝试在下面回答 - 并挑战您处理此问题的方式。
这实际上取决于您的"运营"技能、资金、安全需求、截止日期等。
基本上,您需要在 www 上提供一个端点,而每个人都无法连接。
您可以:
- 在 Azure/AWS/GCP/...并将您需要连接的 IP 列入白名单。
- 从任何提供商处租用VPS,并在此处部署您的应用程序 - 再次,白名单。(编辑:不是电话,因为这个IP不断变化。代理可以在这里实现(潜在的瓶颈(,或者任何身份验证机制,如OAuth,JWT,证书等,都可以在入口控制器(例如NGINX(或应用程序本身上实现。
- 在您的家用PC上部署应用程序,订购一个静态IP到您的家中并制作转发端口并在您的前提下设置安全性(不推荐,并引发和一堆其他头痛(
- 与托管Web应用程序的公司取得联系(可能非常昂贵(
根据您问题中提供的有限信息,在选择适合您需求的设置时,有大量的选择、不错的 2 个条件和因素。
您还应该考虑;VPN 使用、备份/灾难恢复、数据泄漏、冗余、未来部署的需求、如何在六个月内访问您的环境......
我希望这回答了你的问题,但也提出了一些让你自己回答的问题。
最后,我建议您在这里寻找灵感。
编辑:
问题: 将移动 IP 列入白名单。 已选择VPS。
答:
当手机倾向于频繁更改IP时,这将成为一项艰巨的任务。 由于您正在进一步研究VPS设置,因此您可以更好地控制设置,可以选择查看OAuth和JWT。
链接: OAuth - https://oauth.net/getting-started/https://developer.okta.com/blog/2019/01/22/oauth API 密钥在移动应用中不安全
NGINX JWT - https://docs.nginx.com/nginx/admin-guide/security-controls/configuring-jwt-authentication/
所以 - 在一天结束时,你可以让你的应用使用代理(潜在的瓶颈(并将这个IP列入白名单,或者使端点打开(任何->443(并实现如上所述的身份验证机制。
请考虑为来自 Web 的传入流量实施 DMZ 区域。 https://en.wikipedia.org/wiki/DMZ_(计算( 并将应用程序放在此区域后面,确保唯一的 DMZ 区域面向互联网,并且托管应用程序的服务器正在与 DMZ 中的服务器通信。 同样,这是一个相当大的话题,很难简化为堆栈溢出帖子。
如果您在 AWS 上托管应用程序,则有多种选择。
API 网关现在支持专用终结点。这些端点不能通过公共互联网调用。这意味着,如果您的应用程序托管在 AWS 上,则只有应用程序的内部服务可以调用终端节点。即数据库等的前端。我已经将此方法用于内部微服务,例如将内部应用程序数据放入 kinesis 流中。
或者,如果您不想使用 API 网关,您有很多选择。其中大多数将涉及您从计划托管代码的位置创建 rest API。这可能是在它自己的服务器上,也可能是某种容器。
API 网关专用终结点参考: https://aws.amazon.com/blogs/compute/introducing-amazon-api-gateway-private-endpoints/