概要:SQL Azure数据库是微软的云数据库服务。SQL Azure 数据库是一个微软提供的基于云端的关系型数据库服务。SQL Azure以工具服务的形式来提供面向web的数据库功能。包括SQL Azure在内的基于云端的数据库解决方案有很多优点,包括迅速供应,经济实用的可伸缩性,高可用性以及减少管理开销。本文将从用户连接SQL Azure数据库的安全准则以及在SQL Azure上面建立安全的应用程序方面进行概要介绍。

所有的SQL Server和SQL Azure的工具和客户端库都使用表格式数据流(TDS)协议来连接服务器。只能通过TDS协议默认的TCP/1433端口来访问SQL Azure服务。SQL Azure有两种访问控制:SQL身份验证和服务器端防火墙。此外,你也需要配置你的客户端防火墙。

客户端防火墙

网络防火墙和其他的安全设备可能会阻止客户网络中的计算机连接到SQL Azure。为了使应用程序和工具能够连接到SQL Azure, 客户必须配置环境来允许在TCP/1433端口上的传出连接。有些网络允许所有内部连接的发起者接收通信回传,但是还有一些要求更严格的网络只允许显式访问控制列表中的终端来接收通信回传。根据网络策略的严格程度,客户可能也需要显性的允许接收从SQL Azure返回到他们的网络的通信回传。换句话说,如果一个客户允许了从TCP/1433端口到SQL Azure的传出通信,他也需要允许从SQL Azure (TCP/1433端口)到他所在网络的传入通信。

客户如果允许从TCP/1433到微软公共网络地址段的连接而不是具体的SQL Azure位置,可能会给客户带来很大的便利。因为这么做具有极大的灵活性,随着 SQL Azure不断增加新的位置,这样做可以减少重新访问客户的访问控制列表的需要。

例如,SQL Azure North Central US 数据中心的TDS端点是data.ch1-1.database.windows.net,IP地址是207.46.203.22。对http://ws.arin.net/whois/?queryinput=207.46.203.22 执行一个查询揭示了微软对于这个IP的整体范围是207.46.0.0/16。

下面是一个范例访问控制列表,它 允许到 微软SQL Azure服务的可能的IP地址范围的所有连接。

 

Inbound ACL (outgoing traffic): permit tcp any gt 1023 host <SQL Azure IP> 1433
Outbound ACL (return traffic):   permit tcp host <SQL Azure IP> 1433 any gt 1023 established

在outbound访问控制列表中使用”established”标签的作用是把客户各个站点的网络流量只返回给那些客户站点内已经建立的连接。换句话,对于不是由客户的网站所发起的连接,数据通信是被禁止的。

重点:传入连接是不需要或不推荐的。

为了允许在1433端口上面的TDS传出协议,代理服务器可能需要被调整。客户端代理软件(如Microsoft ISA client)可能需要允许客户端计算机对传出连接使用代理服务器。

可选:如果你的本地的SQL Server实例因为数据同步或其他原因,需要与SQL Azure进行数据通信,你必须保证服务器有一个Internet  IP地址。

服务器端防火墙

为了允许从你的计算机到Windows Azure的连接,请使用Windows Azure Platform Management Portal 或者 SQL Azure Portal来配置SQL Azure防火墙。更多有关配置防火墙的细节,请看How to configure firewallSQL Azure firewall

因为某些工具实现TDS方式的不同,对于登录名,请一直使用loginname@Servername的格式。例如,如果你的服务器名是mv2abek9r7.database.windows.net并且你的管理员登录是testsa, 请使用testsa@mv2abek9r7作为登录名。

SQL身份验证

SQL Azure数据库只支持SQL Server验证。Windows验证是不被支持的。每次连接SQL Azure, 用户都需要提供凭证(登录名和密码)。

请在你的SQL Azure服务器上建立合适的登录。在SQL Azure服务器就绪后,首先在服务器上建立拥有管理员权限的管理员用户,然后通过SQL Server Management Studio R2连接到SQL Azure服务器的master数据库,最后使用CREATE LOGIN语句来建立用户和角色。更多信息,请看Managing databases and logins in SQL Azure

现在,开发人员和数据库用户们可以使用已建立的登录账户来连接SQL Azure了。

其他准则

 

  • 当连接到SQL Azure时,请使用最新的库和工具以获得最佳体验。
  • 配置防火墙以只允许来自特定IP地址的访问。
  • 使用参数化查询来防范SQL注入攻击。
  • SQL Azure服务器只是逻辑意义上的一组数据库,它并不是一个物理的SQL Server。因此创建多台服务器并不会带来性能上的好处。但是如果你想把一些数据库进行逻辑分组,或者针对不同的数据库使用独立的计费方式,你可以创建多台服务器。

 

请参阅

原文链接:http://social.technet.microsoft.com/wiki/contents/articles/security-guidelines-for-sql-azure.aspx