管理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 协议》,转载必须注明作者和本文链接
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!