您的位置: 网界网 > 软件 > 正文

详解Azure SQL数据库行级安全

2015年08月16日 15:28:57 | 作者:Rick Heiges | 来源:TechTarget中国

摘要:微软已经在Azure SQL数据库推出了预览版行级安全性(RLS)。行级安全性使客户能够根据执行查询的用户特征(用户组成员属性或执行环境)对数据库表启用访问控制。

标签
微软数据库
行级安全性
Azure SQL

微软已经在Azure SQL数据库推出了预览版行级安全性(RLS)。行级安全性使客户能够根据执行查询的用户特征(用户组成员属性或执行环境)对数据库表启用访问控制。

本文将介绍如何实现RLS。这个简单的示例扩展了微软RLS在线文档。这个例子可以帮助用户理解它的基本概念。更详细信息请参见微软开发者网络网站中关于创建安全策略的文档。

首先,我们将在Azure SQL数据库中创建一些表,并且添加一些数据。我们将创建一个“Order”(订单)表和“Mapper”(映射器)表(如图1所示)。Mapper表的作用是将特定类型的订单与特定的用户相关联。

图1:Order(订单)与Mapper(映射器)表

接下来,我们将创建几个用户,然后给他们分配读取这些表的访问权限(如图2所示)。

图2:给用户分配表的访问权限

我们将在一个单独的模式中创建一个内联表赋值函数(如图3所示)。如果表中附加的安全字段(这里是“User”)与规定的USER_NAME相同,或者USER_NAME为特定的用户名“Manager”,那么这个函数将返回“True”。注意,我们定义了一个泛型条件,它没有引用一个具体的表。

图3:内联表赋值函数

接下来,我们将新建一条安全策略,它使用前面创建的函数,并且将这个过滤器添加到Mapper表上(如图4所示)。命令中的“STATE = ON”的作用就是启用这个安全策略。在这段代码中,这个策略将应用于一个指定的表上。如果有多个表(这里使用了“User”字段)使用了相同的过滤条件,那么它们都会受到同一个策略影响。最好的做法是将函数和策略保存在不同的模式中,一是为了组织方便的考虑,二是限制用户在安全环境中所能看到的数据。

图4:创建一条安全策略

我们来测试一下。(如图5所示)。

图5:运行这个安全策略

12
[责任编辑:软件频道 yu_xiang@cnw.com.cn]

我也说几句