sqlserver2016标准分区(Sql Server 2016新功能之Row-Level Security值得关注)
sqlserver2016标准分区
Sql Server 2016新功能之Row-Level Security值得关注Sql Server 2016 有一个新功能叫 Row-Level Security ,大概意思是行版本的安全策略(原来我是个英语渣_(:з」∠)_)
直接上例子。这个功能相当通过对表添加一个函数作为过滤规则,使得拥有不同条件的用户(或者登录名) 之类的,只能获取到符合条件的数据。相对来说是提供了那么一点的便捷性,当然也增加了数据的安全性,相当于每个用户连接进来只能看到
符合规则的数据(当然,这里的用户只是一个举例。其实是可以通过编写过滤函数来实现的)
举个例子
有三个用户 Sales1 ,Sales 2 ,Manager 3个数据库用户,然后用一个Sales的表来寄存他们的订单记录
CREATE TABLE Sales ( OrderID int, SalesRep sysname, Product varchar(10), Qty int ); INSERT Sales VALUES (1, 'Sales1', 'Valve', 5), (2, 'Sales1', 'Wheel', 2), (3, 'Sales1', 'Valve', 4), (4, 'Sales2', 'Bracket', 2), (5, 'Sales2', 'Wheel', 5), (6, 'Sales2', 'Seat', 5); -- View the 6 rows in the table SELECT * FROM Sales; go
这是全部表的数据的截图
然后添加3个用户,分别就是Sales1 Sales2 Manager 3个用户,分别对他们的赋予Sales表的查询和删除(用于测试删除功能) 的权限。
CREATE USER Manager WITHOUT LOGIN; CREATE USER Sales1 WITHOUT LOGIN; CREATE USER Sales2 WITHOUT LOGIN; GRANT SELECT,delete ON Sales TO Manager; GRANT SELECT,delete ON Sales TO Sales1; GRANT SELECT,delete ON Sales TO Sales2;
然后以下是这个功能的核心部分。首先我们创建一个过滤函数,然后将这个过滤函数添加到这个表的安全策略里面,就可以看到效果了。
函数逻辑很简单,传入一个@SalesRep 的名称,用于匹配当前的 User_Name。匹配了才返回数据
然后下面一行是创建了一个安全策略,并且在Sales 的表里面使用函数 fn_securitypredicate 作为表的筛选器。传入函数的参数选定为 SalesRep 字段(也就是我们建表的那个销售代表字段了)
CREATE FUNCTION fn_securitypredicate(@SalesRep AS sysname) RETURNS TABLE WITH SCHEMABINDING AS RETURN SELECT 1 AS fn_securitypredicate_result WHERE @SalesRep = USER_NAME() OR USER_NAME() = 'Manager'; CREATE SECURITY POLICY SalesFilter ADD FILTER PREDICATE dbo.fn_securitypredicate(SalesRep) ON dbo.Sales WITH (STATE = ON);
然后我们看下查询的结果
EXECUTE AS USER = 'Sales1'; SELECT * FROM Sales; REVERT; EXECUTE AS USER = 'Sales2'; SELECT * FROM Sales; REVERT; EXECUTE AS USER = 'Manager'; SELECT * FROM Sales; REVERT;
效果就是这样,当然如果是要设置不同的过滤条件,设置不同的字段的时候,是可以通过上文的函数里面的代码和安全策略进行设置的。按照这个过滤情况,如果登录用户非Sales1 Sales2 Manager 3个其中之一,是什么都查询不了的。
另外,用户无法删除被过滤的数据。比方说 Sales1 不能删除或修改OrderID = 3 的数据。
RLS的出现也是能帮助我们减轻一定功能上面的实现的~
PS:下面看下SQL Server 2016新功能特性
1、PolyBase:更简单高效的管理关系型和非关系型的T-SQL数据;
2、AlwaysOn增强功能:实现高可用和性能次之,包括高达3个同步复制、DTC支持和次级的Round-Robin负载均衡;
3、Row Level Security(层级安全性控管):让客户基于用户特征控制数据访问,功能已内置至数据中,无须再修改应用;
4、Dynamic Data Masking(动态数据屏蔽):有助于保护未被加密的数据;
5、原生JSON支持:实现轻松解析和存储,以及输出关系型数据;
6、Temporal数据库支持:可跟踪历史数据变化;
7、数据历史记录查询,以便DBA可精确定位;
8、MDS增强功:提供主数据服务器的服务器管理能力;
9、增强的Azure混合备份功能:在Azure虚拟机中可实现更快的备份和恢复。
重要改进:
1、始终加密(Always Encrypted)
数据的存储和使用都将采用由微软研究院所开发的技术进行加密;
2、弹性数据库(Stretch Database)
SQL Server用户将能够把数据动态延伸至Microsoft Azure,以便增强其性能;
3、实时业务分析与内存中联机事务处理(Real-time Operational Analytics & In-Memory OLTP)
该分析技术于2014年首次引入,现在已变得更加先进(更高的实时性能);
4、内置高级分析(Built-in Advanced Analytics)、PolyBase和Mobile BI
在SQL Server 2016上,数据分析和PolyBase等技术会更易使用。此外,Mobile BI将被用于移动设备上的图形展示。
以上所述是小编给大家介绍的Sql Server 2016新功能之Row-Level Security(值得关注),希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对开心学习网网站的支持!
- sqlserver存储过程使用变量(浅析SQL Server的嵌套存储过程中使用同名的临时表怪像)
- SQL Server中查询CPU占用高的SQL语句
- sql server中随机函数(SQL SERVER 2012新增函数之逻辑函数IIF)
- mysql怎么使用null(MySQL null与not null和null与空值''''的区别详解)
- sqlserver备份还原数据(通过Windows批处理命令执行SQL Server数据库备份)
- SQL语句中的乘号处理
- phpmysql完全学习手册教程(Windows下搭建PHP开发环境Apache+PHP+MySQL)
- mysql怎么做教材信息管理系统(python+mysql实现学生信息查询系统)
- navicat for mysql连接测试失败(Navicat连接虚拟机mysql常见错误问题及解决方法)
- mysql中修改表的字段名(MySQL 使用SQL语句修改表名的实现)
- Sql Server锁的粒度
- mysql各种备份方式(MySQL 逻辑备份与恢复测试的相关总结)
- mysqlexplain的用法(MySQL SHOW STATUS语句的使用)
- dedecms怎么设置栏目(DEDECMS实现在标签中嵌套调用SQL的方法)
- mysql 双主双备(MySQL配置了双主,是如何避免出现数据回环冲突的)
- mysql给字段加默认值(MySQL 如何处理隐式默认值)
- 哪版孙悟空最萌 黄渤躺萌了(哪版孙悟空最萌)
- 融入小人物的喜怒哀乐,黄渤饰演的角色为什么让人观看时欲罢不能(融入小人物的喜怒哀乐)
- 《极限挑战》深访都市夜归人,夜间打工者体验,黄磊录完憔悴了(极限挑战深访都市夜归人)
- Google 推出了一个游戏生成器,让不会编程的你也能自己设计游戏(推出了一个游戏生成器)
- 二胎家庭老大爱闹情绪,用这招很有效(二胎家庭老大爱闹情绪)
- 一个30岁男人外遇失败的全过程(一个30岁男人外遇失败的全过程)
热门推荐
- php优势和缺点(PHP的介绍以及优势详细分析)
- margin负值的作用
- html判断canvas已经绘制过了(html2canvas截图空白问题的解决)
- docker快速入门和安装(docker安装tomcat8的实现方法)
- mysql的事务隔离级别怎么实现(mysql、oracle默认事务隔离级别的说明)
- python函数大全详细(详解Python函数式编程—高阶函数)
- dedecms的简单说明(dedecms中英文网站之中英文搜索结果实现方法)
- tomcat在windows下内存配置(浅谈Tomcat内存配置的正确姿势)
- mysql索引应该注意的地方(关于MySQL索引知识的小妙招)
- cookie政策及设置(详解操作cookie的原生方法cookieStore)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9