管理SQL Server表级权限管理实践(sqlserver表权限)
多数情况下,SQL Server数据库服务器管理员会授予数据库用户一个对所有对象的某种类型的访问权限,但在实际的业务应用程序中,我们通常需要进行更复杂的权限管控,比如针对表的某些列,某些行以及某些存储过程、视图,开发者需要得到更多细粒度的权限控制,本文将介绍如何在SQL Server中实现表级权限管理。
一般来说,表级权限管理是指,把对表及表中字段的访问权限由整体控制改为表字段的控制,比如可以按权限给某个用户访问表字段A和B,禁止访问字段C。
SQL Server提供的权限控制语句可以显示的控制用户访问某个表的资源,比如使用grant语句来授予用户对某个表的访问权限,代码如下所示:
GRANT SELECT, insert, UPDATE, DELETE on table_name to user_name
此外,还可以通过deny语句来禁止某个用户访问表,代码如下所示:
deny select, insert, UPDATE, DELETE on table_name to user_name
为了实现更加细粒度的表级权限管理,可以使用SQL Server提供的可以把特定用户限定为只能对指定字段执行某些操作的数据库角色,比如使用以下语句创建特定用户只能够查看表中某些字段:
CREATE ROLE reader_role
Authorize user1 to reader_role
GRANT SELECT ON table_name (column1,column2) to reader_role
无论使用哪一种方法,都要明确的是,在SQL Server中,只有拥有访问表的权限的用户,才有资格使用其他的访问权限,比如新增行等操作,此外,如果需要更进一步的控制特定用户对表资源的访问,则可以开发一个安全存储过程,用来控制特定用户是否具有访问表资源的权限。
从上面的介绍可知,有了sql server的支持,我们可以更细粒度的控制表级权限,以分配的更加精细的权限,进而提升系统的安全性。