管理SQL Server数据库安全
数据库里的数据读取是可以进行权限设置的,前面一直在用超级管理员(sa)的权限访问数据库。事实上,在SQL Server数据库里,一个用户要访问数据库中的对象,必须经过三道认证,而这里的对象则包括前文中讲到的表、视图、存储过程等等。
安全管理
SQL Server数据库中的权限认证,类似于现实生活中的小区管理,能否进入小区是第一道身份确认,初步判断为小区业主;进入小区后,到底入住哪一栋楼就是第二道身份确认,需要刷门禁卡才能进入;进入楼道门后,每栋楼都有很多住户,到底是第几层的第几户,就是第三道身份确认了。
只有拿钥匙真正开启住户门的那个人,才是真正的业主,是这个家里的主人。这里的小区入口、大楼单元门和住户门就好比数据库服务器、数据库和数据对象。
1、连接服务器
第一重认证为登陆权限,确定用户是否具有访问数据库服务器的连接权;作为身份认证,完成这一步,就相当于获取进入小区的权限。
2、访问数据库
第二重认证主要确定用户是否有访问数据库的权限,即是否为合法的数据库用户。在一个小区里有很多个楼盘,同样的在一个服务器上也有很多个数据库。这一步就是确定用户能够进入哪一栋楼,也就是可以操作哪一个数据库。
3、数据对象的操作权限
第三重认证是确定用户对该数据对象的访问权限,是否具有访问数据对象的权限。也就是能否进入住户门了,能够进入住户门即确认为真正的业主。这里的访问权限包括增、删、改、查、等操作。
实际操作
1、创建登录账号(create login)
这一步就是获取连接权。包括:创建、修改、启用、禁用、删除登录账号等操作。
图示:创建了一个“xiaoming”的登录账户,密码为“xiaoming123”。随后可以使用此账户登录数据库服务器,其他功能读者可以自行尝试操作。
禁用账户是指该账户存在,但不能使用;删除则意味着该账户彻底从服务器中消失。一个登录账号能连接到数据库服务器,但并不能登录数据库。就好比能够进入小区的人,未必能进入大楼的单元门。
2、创建数据库用户(create user)
这一步就是获取数据库的访问权限。包括:创建、修改、删除等。需要强调的是:
第一:数据库用户必须定位到指定的数据库;
第二:一个登录账户对于一个数据库只能允许有一个数据库用户;即数据库用户与登陆账户是一对一的关系。
有了数据库用户,但还是没有访问该数据库数据对象的权限。就像进入了大楼单元门,如果没有住户门钥匙,依然进不来家门。
3、授权 (grant)
权限的种类三种,分别为数据对象权限、语句权限和隐含权限。数据对象权限,主要指数据操作的语句权限,即增、删、改、查等操作。
操作上分为授权、收回和禁用三种方式:
授权(grant):对用户授予某种权限
收回(revoke):对用户收回已授予的权限
禁用(deny):禁止用户拥有某种权限
图示中第34行代码,针对cardinfo表,授予用户zuxia_netbar查询、添加、修改、删除等四中权限。关键词on后为表名,to后为用户名。
第37行代码,针对cardinfo表中的cardnumber、cardbalance两个字段,授予用户zuxia_netbar查询的权限。也就是只能对特定表的特定字段进行查询。
第40行代码,授予用户zuxia_netbar对数据库所有表格的查询权限。
回收和禁用类同上面授权的语法,此处不再赘述。
本作品采用《CC 协议》,转载必须注明作者和本文链接
推荐文章: