理解SQLSERVER2005的安全管理机制

2022-09-12

1 登录管理

SQL SERVE 2005的登录账户有两种类型:WINDOWS用户账户和SQL SERVER账户。相应的SQL SERVER的身份验证分为WINDOWS身份验证和SQL SERVER身份验证, 因此SQL SERVER的验证模式分为两种WINDOWS验证模式和混合验证模式。当用户想连接到SQL SERVER服务器的时候, 必须先选择一种身份验证模式。WINDOWS身份验证模式安全性相对要高, 应该尽量使用WINDOWS身份验证模式。混合身份验证模式下, 验证分为WINDOWS身份验证和SQL SERVER身份验证, 允许用户使用WINDOWS登录账户或使用SQL SERVER登录账户连接SQL SERVER实例。

2 用户管理与角色管理

首先, 必须明确的是当一个登录名必须至少和一个数据库用户关联才能访问数据库对象, 若该登录没有显式的和数据库用户相关联, 那么它将自动和数据库用户GUEST相关联, 如果数据库没有GUEST用户则该登录不能访问该数据库。

其次, 登录名和数据库用户的关联关系是一对多联系。在SQL SERVER中把关联称为映射。登录账户名与数据库用户账户名可以相同, 也可以不同。一个数据库里至少有一个数据库用户DBO, 且该数据库用户不可删除, 具有在该数据库范围里的最高权力, 它自动关联创建该数据库的登录账户, 而且还自动关联固定服务器角色SYSADMIN里的所有登录账户。另外还有一个GUEST的数据库用户, 默认情况下新建的数据库里都有GUEST用户, 除非使用ALTER AUTHORIZATION语句否则该数据库用户也不能删除。

SQ L SE RVE R把具有相同权限的登录账户集中起来加入到一个服务器角色里统一管理。在固定服务器角色里SYSADMIN系统管理员这个服务器角色在服务器范围里可以执行任何活动, 该角色的默认成员是WINDOWSBUILTINADMINISTRATORS这个内建的登录账户。而SA登录账户在SQL S ER VE R 20 05中的初如状态是禁用的, 它也属于SYSADMIN角色。

最初可由系统管理员角色的成员 (WINDOWSBUILTINADMINISTRATORS) 将其它登录账户添加到任一固定服务器角色中, 然后可由各固定服务器角色的成员向自己所属的服务器角色中添加其它登录账户。同样的SQL SERVER 2005也提供了10个固定数据库角色, 从而实现对拥有相同权限的数据库用户的统一管理。

3 安全对象、架构

在SQL SERVER 2005中引入了安全对象和架构这样的新概念, 这是SQL SERVER2005对权限设置的一个重大改进。安全对象是可以通过权限进行保护的实体的分层集合, 这些实体称为安全对象, 具体讲安全对象有服务器、数据库和数据库包含的对象。而引入架构可以提高权限的设置力度, 这使得访问安全对象的格式为:服务器名;数据库名;架构名;对象名。架构是形成单个命名空间的数据库实体的集合。命名空间是一个集合, 其中每个元素的名称都是唯一的。可以把架构理解为文件夹, 且这种文件夹不允许嵌套, 也就是说架构是一种容器, 可以在其中放入数据库对象。数据库用户与所有者隐式绑定的方式会带来一些问题, 如一个用户创建了某个数据库对象 (如表) , 则在SQL SERVER 2000中该用户自动绑定到该数据库对象 (如表) 的所有者 (DBO) , 如果要删除该用户则提示该用户有一个数据库对象 (如表对象) , 也就是说要删除用户, 就必须先删除它所拥有的表, 这显然是缺乏灵活性。因此在SQL SERVER 2005中就引入架构的概念, 使用户和数据库对象分离。SQL SERVER 2005中的所有安全对象都必须指定存放的具体架构。任何用户都必须指定存放它的拥有对象的架构, 如果不指定, 默认存放的架构是DBO。但是并没有授予数据库用户在DBO架构创建对象的权限, 即用户只能使用 (如查询) 默认的DBO架构, 用户并不是DBO架构的所有者。默认架构是服务器解析DML或DDL语句中指定的未限定的对象名称时搜索的架构。因此, 当引用的对象包含在默认架构中时, 不需要指定架构名。例如, 如果TABLE_NAME包含在默认架构中, 则语句“SE L E CT*FR OM TABLE_NAME”可以成功执行。但当用户 (具有创建表的权限, 默认架构是DBO, 但没有拥有的架构, 也不属于任何数据库角色) 创建一个安全对象时如表, 时则不能创建成功, 原因是DBO架构是公有的, 具体的一用户并不是这个架构的所有者。也就是说架构不隐式等效于数据库用户, 而是将用户与架构的分离。同时架构本身也是安全对象, 可以针对架构进行授权。因此在SQL SERVER 2005中引入的架构使得访问安全对象的格式为:服务器名;数据库名;架构名;对象名。

4 权限管理

在SQL SERVER 2005中权限管理分为:对象权限、语句权限和暗示权限。权限管理有三个方面, 一是权限的拥有者, 有登录账户、角色中的成员和数据库用户, 二是权限涉及的资源。对象权限是基于数据库层次上的访问和操作权限。语句权限表示用户能否对数据库及其对象执行如下语句:创建类的语句包括CREATE DATABASE、CREATE TABLE、CREATE PROCEDURE等;备份类语句包括BACKUP DATABASE和BACKUP LOG语句。语句权限仅限于语句本身, 而不是数据库对象。暗示性权限是指固定服务器角色、固定数据库角色和数据库对象所有者具有的默认权限。固定服务器角色和固定数据库角色的成员自动继承角色的默认权限, 而数据库对象的所有者在其创建的数据对象上拥有全部权限, 这就是数据库对象所有者的默认权限。

摘要:SQL SERVER 2005的安全管理机制是一个难点, 对于大部分人来讲理解起来有一定的困难, 因此需针对安全管理涉及的几个重要方面展开论述。

关键词:登录管理,身份验证,用户管理,架构,角色,权限

参考文献

[1] 郑阿奇.SQL SERVER实用教程 (第2版) [M].北京:电子工业出版社, 2005.

[2] 刘志成.SQL.SERVER 2005实例教程[M].北京:电子工业出版社, 2008.

[3] 钱雪忠.数据库与SQL SERVER 2005教程[M].北京:清华大学出版社, 2007.

[4] 詹英.数据库技术与应用——SQL SERVER 2005教程[M].清华大学出版社, 2008.

[5] 孙全党.SQL SERVER 2005数据库开发应用教程[M].电子工业出版社, 2008.

上一篇:浅谈秘书的办文职能下一篇:实施“卓越课堂”四化法---黔江区沙坝乡中心学校“课堂大开放、教学大练兵”活动

本站热搜