将数据迁移到云是当前讨论的一大焦点。你可以在微软的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实例的防火墙规则。
正如图2所示,此例中只有两项防火墙规则。 最佳实践认为你应使用尽可能少的防火墙规则。如果以后您有活动比如你在开会或度假需要添加规则,当完成后再删除它。这将有助于防止未经授权的人闯入SQL Azure实例,停掉防火墙甚至很短的一段时间也是非常危险的。
图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,应用程序对数据库调用的参数化必须
【编辑推荐】