问题描述
大家好!
正如您在图片中看到的,这基本上就是我正在规划的架构,但我有一些疑问。 我需要创建一个可公开访问的 API 层,该层还需要通过 Express Route 访问本地 sql 数据库。 Express Route 连接已建立。
在进行一些挖掘之后,我发现为了使 Web API 访问本地数据库,我需要将托管 Web API 的应用服务集成到使用 VNet 集成与与 Express Route 连接的虚拟网络。不过,我有几个问题。
- VNet 集成是否足以在 Web API 和本地数据库之间建立成功的 TCP 1433 通信?如果没有,请告诉我应该配置哪些其他服务?
- 我会失去对 Web API 的公开访问权限吗?如果是这样,将 Web API 公开的最佳方式是什么?
感谢您的帮助,感谢您抽出宝贵时间!
解决方法
- 您可以使用 VNet 集成,但您可能还想查看简单地对数据库设置防火墙限制。您可以为 Azure 应用服务的 IP 范围打开对 DB 的访问。根据您使用的应用服务计划,有一个 10 - 15 outbound IPs 的列表,您可能希望将其列入白名单。这使您的 API 可以访问数据库,同时仍保护数据库不被公开访问。
- 如果您想让您的 API 可公开访问(至少在某些路线上),您需要向所有人开放您的 API。我认为最好的方法是为您要保护的路线设置授权。例如使用令牌/承载身份验证。这样,您可以使您的 API 可访问,但您需要对某些路由进行身份验证。您可以使用 Auth0 或其他 OpenID providers 之类的东西在 Angular JS 应用中处理身份验证。