毫无疑问,将数据迁移到云是当前讨论的一大焦点。你能够在微软的SQL Azure云数据库中快速运行一个SQL Server实例,并为一个新的事务性应用程序或报表等数据分析应用迅速加载数据。数据库
可是,将数据迁移到SQL Azure或Amazon的EC2须要很是当心。保护SQL Server云中数据是很是重要的,由于你不但愿向不相干的人暴露客户数据。浏览器
SQL Azure数据保护安全
Azure防火墙。首先要记得开始使用SQL Azure并非向外界打开数据库。默认状况下,SQL Azure的数据库只能由微软的内部Azure服务器访问。为直接链接到SQL Azure的实例,配置你的SQL Azure防火墙以容许家中或办公室的IP地址能够链接。在 Windows Azure的管理门户进行登陆,在订阅标签下你应该能够看到你的SQL Azure订阅,如1图所示。服务器
图1显示了Windows Azure的订阅和防火墙规则。框架
选择服务器 “fz9fnjspok”,从订阅菜单中能够看到防火墙规则按钮如图1中的右侧。点击它,你能够查看和编辑SQL Azure实例的防火墙规则。jsp
正如图2所示,此例中只有两项防火墙规则。 最佳实践认为你应使用尽量少的防火墙规则。若是之后您有活动好比你在开会或度假须要添加规则,当完成后再删除它。这将有助于防止未经受权的人闯入SQL Azure实例,停掉防火墙甚至很短的一段时间也是很是危险的。ide
图2 SQL Azure这个实例上的防火墙规则。工具
对象级权限。除了?保护您的SQL Azure实例的防火墙,你也会但愿他们遵循最佳实践,即授予用户或者登陆者最少的权限以足够完成他们的工做。目前的客户端工具不容易作到这一点,当链接到 SQL Azure的数据库,SQL Server Management Studio中没有修改权限的用户界面。SQL Azure不支持数据库角色以及对象级权限,所以配置账户即应用程序使用者以尽量少的最低权限来链接SQL Azure数据库。这使用户没法访问他们并不须要的对象,而这正是你在一个传统的SQL Server数据库实例中所作的。对象
SQL注入和Azure。由Azure托管的应用程序正如一个传统的Web应用程序容易受到SQL注入***。这样被返回到最终用户浏览器的这些数据是不该该获得信任的,且全部数据库调用应是设置成参数化的(而不是在应用程序内作字符串链接)。若是您使用一个相似对象关系映射(ORM)的实体框架(EF)来编写应用程序代码,ORM 将会为你参数化数据库调用。不过,若是你不是使用ORM,应用程序对数据库调用的参数化必须是安全的。而使用一个单一的非参数化应用程序调用将容许***者进入你的数据库。事务