白名单列出Azure数据库上的程序

时间:2014-07-02 14:14:09

标签: visual-studio azure

我正在开发一个使用Azure的程序数据库。它工作得很好,除了我必须授权我访问它的每个IP地址。所以,如果我去朋友家,我必须授权IP,如果我去咖啡馆,我必须授权IP ......

我希望有一种方法可以从程序中授权连接,无论它来自哪个IP。或者,更糟糕的情况是,关闭那个安全措施。

4 个答案:

答案 0 :(得分:6)

<强> DON&#39;:T

防火墙数据库背后的想法是保护您的数据免受任何可能具有SQL Server凭据的数据泄露。这是为了您自己的安全。

相反,尝试使用ASP.Net WS / Jax RS / Rails / ...编写一个快速的Web服务,以一种安全,周到的方式公开数据库数据。这并不难,有很多关于此事的教程和书籍。

答案 1 :(得分:2)

虽然不推荐,但如果要关闭此安全措施,则可以通过在Azure中将IP地址范围设置为0.0.0.0 - 255.255.255.255来允许从所有IP地址连接到SQL数据库门户。

另一种替代方法是使用Azure Service Management API动态管理允许的IP地址。您可以使用此API管理防火墙规则。您可以在此处详细了解:http://msdn.microsoft.com/en-us/library/azure/dn505717.aspx

所以你可以做的是在Azure中运行一个小服务。当您的应用程序启动时,它会将当前IP地址发送到您的服务,您的服务会在防火墙规则中设置IP地址。当应用程序终止时,它会向您的服务发送另一个请求,然后您的服务会从防火墙规则中删除该IP地址。

答案 2 :(得分:2)

正如@Machinarius如此雄辩地说不要。 .NET已经有一种通过OData服务公开数据的方法。即使是实体或操作级别,您也可以获得SOAP或Json,LINQ查询,缓存,安全性。

将EF模型公开为OData服务非常。您可以使用“{API} 2 OData Controller with actions,using Entity Framework”模板创建ASP.NET Web API OData端点,如“Creating an OData Endpoint”教程中所述。

要从客户端调用服务,请向其添加服务引用,然后使用代理执行LINQ查询。它可能很简单:

Uri uri = new Uri("http://localhost:1234/odata/");
var container = new ProductService.Container(uri);
var myProducts=container.Products.Where(....);

查看“Calling an OData Service From a .NET Client”以获取详细教程。

答案 3 :(得分:0)

作为替代方案,如果您需要从随机位置访问应用程序,为什么不在安装了应用程序的Azure中配置VM。无论什么时候需要你的应用程序,启动那个VM,RDP并通过RDP工作。不需要更新连接和更安全,而不必允许随机IP访问您的数据库。

我意识到这不是你问题的答案,但其他stackoverflowers已经为你的问题提供了重要的输入。我同意他们的意见。不要禁用防火墙。这是为了你自己的利益!