如何公开访问需要访问本地数据库的 Azure Web API通过 ExpressRoute?

问题描述

enter image description here

大家好!

正如您在图片中看到的,这基本上就是我正在规划的架构,但我有一些疑问。 我需要创建一个可公开访问的 API 层,该层还需要通过 Express Route 访问本地 sql 数据库。 Express Route 连接已建立。

在进行一些挖掘之后,我发现为了使 Web API 访问本地数据库,我需要将托管 Web API 的应用服务集成到使用 VNet 集成与与 Express Route 连接的虚拟网络。不过,我有几个问题。

  1. VNet 集成是否足以在 Web API 和本地数据库之间建立成功的 TCP 1433 通信?如果没有,请告诉我应该配置哪些其他服务?
  2. 我会失去对 Web API 的公开访问权限吗?如果是这样,将 Web API 公开的最佳方式是什么?

感谢您的帮助,感谢您抽出宝贵时间!

解决方法

  1. 您可以使用 VNet 集成,但您可能还想查看简单地对数据库设置防火墙限制。您可以为 Azure 应用服务的 IP 范围打开对 DB 的访问。根据您使用的应用服务计划,有一个 10 - 15 outbound IPs 的列表,您可能希望将其列入白名单。这使您的 API 可以访问数据库,同时仍保护数据库不被公开访问。
  2. 如果您想让您的 API 可公开访问(至少在某些路线上),您需要向所有人开放您的 API。我认为最好的方法是为您要保护的路线设置授权。例如使用令牌/承载身份验证。这样,您可以使您的 API 可访问,但您需要对某些路由进行身份验证。您可以使用 Auth0 或其他 OpenID providers 之类的东西在 Angular JS 应用中处理身份验证。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...