Sql Server 2016新功能之Row-Level Security(值得关注)

yizhihongxing

Sql Server 2016新功能之Row-Level Security

什么是Row-Level Security?

在传统的数据库访问安全控制中,只能根据用户的身份和权限来进行安全控制,但是无法对每行数据进行细粒度的控制,也就是无法针对不同用户对同一张表的不同行数据进行控制,这就是传统数据库安全控制所无法解决的问题。而Row-Level Security (RLS),就是在数据库中实现了对每行数据进行细粒度的访问控制的功能。

如何使用Row-Level Security?

1. 创建安全谓词

创建安全谓词需要使用到Sql Server 2016提供的内置函数,例如User_Name()、Session_User()等,语法如下:

CREATE FUNCTION securitypredicate(@SalespersonID AS int)
RETURNS TABLE
WITH SCHEMABINDING
AS
RETURN SELECT 1 AS [SecurityFilter]
WHERE @SalespersonID = CONVERT(int, Session_User);

以上安全谓词的意思是只有当Session_User的值等于SalespersonID时,才可以查询到相关数据。在创建安全谓词的时候需要注意以下几点:首先,返回的表只有一列,列名必须为SecurityFilter,并且数据类型必须为bit类型,返回值只能为1或0;其次,安全谓词必须绑定到表上,也就是需要使用WITH SCHEMABINDING选项创建函数;最后,安全谓词必须是不可计算的,也就是不能包含类似SUM()或AVG()等可计算的函数。

2. 创建安全策略

创建安全策略需要使用到Sql Server 2016提供的内置系统存储过程,语法如下:

CREATE SECURITY POLICY SalesForceFilterPolicy  
ADD FILTER PREDICATE dbo.securitypredicate(SalesPersonID)  
ON dbo.Sales  
WITH (STATE=ON);

以上安全策略的意思是针对Sales表创建一个安全策略SalesForceFilterPolicy,在Sales表上添加一个过滤器,此过滤器调用前面创建好的安全谓词dbo.securitypredicate(SalesPersonID),表示只有当该谓词返回值为1时,才可以查询表Sales的数据,适用于所有的DML操作(INSERT、SELECT、UPDATE、DELETE)。上面的Security Policy中,STATE=ON代表启用策略。

3. 测试安全策略

测试安全策略的方法非常简单,只需要在不同的用户下,执行相关的DML操作,就可以验证是否生效,方法如下:

EXECUTE AS USER = 'Alex';  
SELECT * FROM Sales;

在用户Alex下执行查看Sales表的操作,如果该用户的Session_User等于SalesPersonID,且SalesForceFilterPolicy策略启用,则可以看到该用户的数据,否则不能看到数据。

EXECUTE AS USER = 'Betty';  
SELECT * FROM Sales;

在用户Betty下执行查看Sales表的操作,同样必须满足Session_User等于SalesPersonID,并且SalesForceFilterPolicy策略启用,才能看到数据,否则不能看到数据。

通过以上的操作流程,可以实现Row-Level Security的数据访问控制,提高了数据库安全性,可以更好地满足企业的安全需求。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Sql Server 2016新功能之Row-Level Security(值得关注) - Python技术站

(0)
上一篇 2023年5月25日
下一篇 2023年5月25日

相关文章

  • 微软发布Windows Sever 2022:能用10年 不再每年更新

    微软发布Windows Sever 2022:能用10年 不再每年更新 微软官方已经发布了Windows Server 2022,下面是该系统的完整攻略。 什么是Windows Server 2022? Windows Server 2022是微软推出的最新一代服务器操作系统,它将提供常见的服务器功能,包括文件共享、虚拟化、网络管理等,同时也优化了性能、可靠…

    Azure 2023年5月25日
    00
  • Android 颜色大全color.xml文件使用方法

    下面我将详细讲解”Android 颜色大全color.xml文件使用方法”的完整攻略。 1. 什么是color.xml文件? color.xml文件是Android工程中用来进行颜色资源管理的文件。在这个文件中,我们可以定义和管理所有应用中需要用到的颜色资源,包括不限于文本颜色、背景颜色、进度条颜色等等。 2. color.xml文件的使用方法 2.1 定义…

    Azure 2023年5月25日
    00
  • 微软How-Old.net官方中文版上线了 幕后黑科技揭秘

    微软How-Old.net官方中文版上线了 幕后黑科技揭秘 微软的How-Old.net是一个非常有趣的在线工具,其通过上传照片来自动判断人的年龄和性别,而最近,微软宣布其官方中文版已经上线了,带来了更好的本地化体验。在这里,我将详细讲解微软How-Old.net官方中文版的使用攻略,并揭秘其背后的黑科技。 如何使用微软How-Old.net官方中文版? 使…

    Azure 2023年5月27日
    00
  • win10专业版永久激活秘钥/激活码/序列号推荐 附激活工具

    “win10专业版永久激活秘钥/激活码/序列号推荐 附激活工具”攻略 如果你想在Win10专业版上永久激活,这里提供了一些有效的方法。 方法1:使用正版的序列号 如果你有正版的Win10专业版序列号,那么激活过程非常简单,只需按照以下步骤操作: 首先,打开“设置”菜单,点击“更新和安全”选项; 在“更新和安全”页面中,选择“激活”选项; 输入Win 10专业…

    Azure 2023年5月26日
    00
  • 魔兽世界珠宝加工技能怎么学_生活技能详情介绍

    魔兽世界珠宝加工技能怎么学 珠宝加工是《魔兽世界》中的生活技能之一,它可以让玩家制作各种珠宝装备,如戒指、项链等。下面是学习珠宝加工技能的攻略。 步骤 1. 找到珠宝加工训练师 首先,需要找到珠宝加工训练师,他们可以在各个主城市的贸易区内找到。一般来说,珠宝加工训练师的位置比较固定,可以在城市地图中查找。 2. 与珠宝加工训练师对话 和珠宝加工训练师对话,选…

    Azure 2023年5月25日
    00
  • 最新2021win10专业版/企业版/教育版激活秘钥推荐 附激活工具

    最新2021win10专业版/企业版/教育版激活秘钥推荐 附激活工具 如果你需要激活最新的Windows 10操作系统的专业版、企业版、教育版,本攻略将为你提供详细的步骤和推荐的激活秘钥和工具。 推荐的激活秘钥 以下是最新的Windows 10激活秘钥: Windows 10专业版激活秘钥:VK7JG-NPHTM-C97JM-9MPGT-3V66T Wind…

    Azure 2023年5月25日
    00
  • Win11 23H2 Dev 预览版 25145.1011更新补丁KB5016159推送(附更新修复内容汇总)

    Win11 23H2 Dev 预览版 25145.1011更新补丁KB5016159推送(附更新修复内容汇总) 本文介绍了Win11 23H2 Dev预览版的更新补丁KB5016159,并附带了更新修复内容的汇总。通过本文的攻略,用户可以了解到如何下载和安装这个更新补丁,并了解到这个补丁更新了哪些内容。 什么是Win11 23H2 Dev预览版的更新补丁KB…

    Azure 2023年5月25日
    00
  • Win11 Build22000.346 Beta/Release预览版发布 KB5007262更新汇总

    Win11 Build22000.346 Beta/Release预览版发布 KB5007262更新汇总攻略 前言 Win11 Build22000.346 Beta/Release预览版发布了KB5007262的更新,此次更新主要包括安全性和质量改进。本篇攻略将详细讲解Win11 Build22000.346 Beta/Release预览版发布及KB500…

    Azure 2023年5月25日
    00
合作推广
合作推广
分享本页
返回顶部