原文出处:http://blog.csdn.net/dba_huangzj/article/details/39577861,专题目录:http://blog.csdn.net/dba_huangzj/article/details/37906349

未经作者同意,任何人不得以“原创”形式发布,也不得已用于商业用途,本人不负责任何法律责任。

前一篇:http://blog.csdn.net/dba_huangzj/article/details/39548665

前言:

SQL Server的权限是有层次的,一个用户有架构级别的权限,就有了架构内部所有对象的权限,除非使用了DENY权限单独移除。但是对象并不是层次中的最低级,可以把权限设置到列级别。但是列级权限会覆盖掉表上被GRANT的权限。

实现:

要实现分配列级权限,可以使用GRANT SELECT ON <对象>语句,并且加上所需的列,如:

GRANT SELECT ON OBJECT::dbo.Employee (EmployeeId, LastName, Firstname, email) TO HumanResourceAssistant;

这个语句会仅供HumanResourceAssistant数据库角色成员能读取dbo.Employee 表上的EmployeeId, LastName, Firstname, email这三列,表上的其他列将不能被查询。(该表上还有Birthdate和Salary列),那么下面的查询中,第一个语句可以执行但是第二个语句不能执行,因为它需要使用到Salary列:

--能执行
SELECT FirstName + ' ' + LastName as Employee
FROM dbo.Employee
ORDER BY LastName, FirstName;
--不能执行
SELECT FirstName + ' ' + LastName as Employee
FROM dbo.Employee
ORDER BY Salary DESC;

可以使用下面语句修改,使其可以查询全表的数据,但是仅能更新表上的三列:

GRANT SELECT ON OBJECT::dbo.Employee TO HumanResourceEmployee;
GRANT UPDATE ON OBJECT::dbo.Employee (LastName, Firstname, email) TO HumanResourceEmployee;

原理:

当用户尝试查询未被授权的列是,会收到230错误:

The SELECT permission was denied on the column 'Salary' of the object 'Employee', database 'HumanResource', schema 'dbo'.

但是要注意权限的修改,特别是对DENY的使用,避免过多使用最底层的权限设置而导致权限策略太复杂而无法管理或者权限交叉。

更多:

列级权限会导致权限体系的不一致性,在后续版本可能被移除,建议使用视图来实现这种需求。

下一篇:http://blog.csdn.net/dba_huangzj/article/details/39639365

Chapter 3 Protecting the Data(2):分配列级权限的更多相关文章

  1. Chapter 3 Protecting the Data(3):创建和使用数据库角色

    原版的:http://blog.csdn.net/dba_huangzj/article/details/39639365.专题文件夹:http://blog.csdn.net/dba_huangzj ...

  2. Chapter 3 Protecting the Data(1):理解权限

    原文出处:http://blog.csdn.net/dba_huangzj/article/details/39548665,专题目录:http://blog.csdn.net/dba_huangzj ...

  3. Chapter 3 Protecting the Data(4):创建和使用应用程序角色

    原文出处:http://blog.csdn.net/dba_huangzj/article/details/39927713,专题目录:http://blog.csdn.net/dba_huangzj ...

  4. discuz论坛X3升级时 文件下载出现问题,请查看您的服务器网络以及data目录是否有写权限

    discuz论坛2.5升级X3时候, 在线升级一半提示: 文件 static/image/postbg/3.jpg 下载出现问题,请查看您的服务器网络以及data目录是否有写权限,请确认无误后点击确定 ...

  5. Clean Code – Chapter 6 Objects and Data Structures

    Data Abstraction Hiding implementation Data/Object Anti-Symmetry Objects hide their data behind abst ...

  6. Big Data(六)用户权限实操&HDFS-API实操

    创建用户实操 1.创建用户god useradd god passwd god 2.设置ssh免密 ssh-copy-id -i id_dsa node02 3.修改hdfs-site.xml中的ss ...

  7. Data Lake Analytics账号和权限体系详细介绍

    一.Data Lake Analytics介绍 数据湖(Data Lake)是时下大数据行业热门的概念:https://en.wikipedia.org/wiki/Data_lake.基于数据湖做分析 ...

  8. 电子表格分两级:Excel和WPS是一级,未来5年,75%的人将用二级

    你印象中的电子表格软件是哪些? 估计绝大多数人,都认为电子表格软件不就是Excel和WPS吗?顶多再加上永中office么,难道还有其他的电子表格软件不成? 没有错,excel和WPS,还有永中,确实 ...

  9. SQL Server扫盲系列——安全性专题——SQL Server 2012 Security Cookbook

    由于工作需要,最近研究这本书:<Microsoft SQL Server 2012 Security Cookbook>,为了总结及分享给有需要的人,所以把译文公布.预计每周最少3篇.如有 ...

随机推荐

  1. Head First Java设计模式思维导图总结

    关于Head First Java设计模式的思维导图总结:

  2. LintCode题解之统计数字

    直接硬搜就可以了,只是需要考虑k为0的情况. public class Solution { /* * @param : An integer * @param : An integer * @ret ...

  3. Elasticsearch+Hbase实现海量数据秒回查询

    ---------------------------------------------------------------------------------------------[版权申明:本 ...

  4. linux系统性能监控--I/O利用率

    尽管整体的处理器速度. 内存大小以及 I/O执行速度在不断提高,但 I/O操作的吞吐率和延迟性能仍然要比等价的内存访问操作低多个数量级.另外,由于许多工作负荷都拥有重要的I/O组件,I/O处理很容易成 ...

  5. Markdown语法及SublimeText下使用技巧

    Markdown语法及SublimeText下使用技巧 0.缘起 最近因为一直在学习Sublime Text,所以也就顺便试用了一下ST对Markdown的支持.正好CSDN正在大力宣传新上线的Mar ...

  6. Dynamics CRM2016 Web API之获取查找字段的text及选项集的text

    本篇再来介绍个web api的功能,关于lookup的text这里只是略带,因为有expand,现有的web api就能实现,主要提的是选项集的text,我们通过基本的查询api查出来的字段值只带有v ...

  7. Swift中关于任意类型的数组

    在Objc中你是不可以把一个非对象类型放入数组的,你必须将其"封箱",然后再放入数组. 在Swift中你可将非对象类型轻松放入数组: let ary = [1,2,3] 你可以明确 ...

  8. PGM:基于模板的表示

    http://blog.csdn.net/pipisorry/article/details/52537660 引言 概率图模型(无论贝叶斯网或马尔可夫网)在一个固定的随机变量集X上具体指定了一个联合 ...

  9. socket系列之什么是socket

    1.什么是socket Socket是应用层与TCP/IP协议族通信的中间抽象层,它是一组接口,应用层通过调用这些接口实现发送和接收数据.一般这种抽象层由操作系统提供或者由JVM自己实现.使用sock ...

  10. 有奖试读—Windows PowerShell实战指南(第2版)

    为什么要学PowerShell? Windows用户都已习惯于使用图形化界面去完成工作,因为GUI总能轻易地实现很多功能,并且不需要记住很多命令.使得短时间学会一种工具成为可能. 但是不幸的是,GUI ...