您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 数据结构与算法 > 数据库原理与应用第八章(另有章节可供下载)
第八章安全性安全性措施的层次•物理层,重要的计算机系统必须在物理上受到保护,以防止入侵者强行进入或暗中潜入。•人员层,对用户的授权要严格掌握,以减少授权用户渎职、受贿,从而为入侵者提供访问的机会。•操作系统层,要进入数据库系统,首先要经过操作系统,所以如果操作系统的安全性能差,也会对数据库造成威胁。•网络层,由于几乎所有网络上的数据库系统都允许通过终端或网络进行远程访问,所以网络的安全和操作系统的安全一样重要,网络安全了,无疑会对数据库的安全提供一个保障。•数据库系统层,数据库系统应该有完善的访问控制机制,允许查询和允许修改有严格的界限,尽量保证不出现越权的操作。数据库管理系统的安全功能•安全性控制是数据库管理员(或系统管理员)的一个重要任务,他要充分利用数据库管理系统的安全功能,保证数据库和数据库中数据的安全。•安全系统的核心问题是身份识别。•几个概念–用户–权限–用户组–角色自主存取控制•自主存取控制就是由用户(如数据库管理员)自主控制对数据库对象的操作权限,哪些用户可以对哪些对象、进行哪些操作,完全取决于用户之间的授权。任何用户只要需要,就有可能获得对任何对象的操作权限。这种存取控制方式非常灵活,但有时也容易失控。目前大多数数据库管理系统都支持的是自主存取控制方式。强制存取控制•强制存取控制的思路是,为每一个数据库对象标以一定的密级(Classificationlevel),对每一个用户都确定一个许可级别(Clearancelevel)。如密级可以分为绝密、机密、保密、秘密、公开等若干级别;而用户可以划分为一级用户(可以操作所有数据)、二级用户(可以操作除绝密以外的所有数据)、三级用户等。•强制存取控制本质上具有分层的特点,通常具有静态的、严格的分层结构,与现实世界的层次管理也相吻合。这种强制存取控制特别适合层次严明的军方和政府等数据管理。SQLServer的身份验证模式•SQLServer提供了三种身份验证模式或安全管理模式,即标准模式、集成模式和混合模式。在WindowsNT或Windows2000上使用集成模式或混合模式,在Windows98(或Millennium)上使用标准模式。标准身份验证模式•实际上,一般的数据库管理系统都只提供标准身份验证模式,在这种模式下,由数据库管理系统独立来管理自己的数据库安全。数据库管理系统把用户登录的ID号和口令存储在特定的系统表中,当用户试图登录到数据库系统时,数据库管理系统查询有效的登录ID和口令,以决定是否允许用户登录。•一般的数据库管理系统只有标准登录模式,所以很多SQLServer的用户也习惯使用标准身份验证模式,因为他们熟悉登录和密码功能。对于连接到Windows客户端以外的其它客户端,可能也必须使用标准身份验证。集成身份验证模式•集成身份验证模式也称为Windows身份验证模式,用户通过WindowsNT或Windows2000(以下简称Windows)的身份验证后则自动进行SQLServer身份验证。即当用户通过Windows用户账户进行连接时,SQLServer通过回叫Windows以获得信息,重新验证账户名和密码。SQLServer的安全体系图7-1SQLServer安全体系混合身份验证模式•混合模式使用户得以使用Windows身份验证或SQLServer身份验证与SQLServer实例连接。混合身份验证模式的登录决策过程用户管理和角色管理•用户的分类•登录用户和数据库用户•用户管理•角色管理•SQLServer的预定义角色用户的分类•系统管理员用户•数据库管理员用户•数据库对象用户•数据库访问用户图7-1SQLServer安全体系登录用户和数据库用户登录用户(loginuser)数据库用户(databaseuser)用户管理•登录用户的管理–系统管理员的工作•建立新的登录用户•修改登录密码•删除登录用户…•数据库用户的管理–数据库管理员的工作•授权其他登录用户为数据库的用户•取消某个登录用户为数据库的用户建立新的登录用户sp_addlogin[@loginname=]login_id[,[@passwd=]passwd][,[@defdb=]defdb][,[@deflanguage=]deflanguage][,[@sid=]sid][,[@encryptopt=]encryption_option]修改登录密码sp_password[[@old=]old_password,]{[@new=]new_password}[,[@loginame=]login]删除登录用户sp_droplogin[@loginame=]login授权登录用户为当前数据库用户sp_grantdbaccess[@loginame=]login[,[@name_in_db=]name_in_db]从当前数据库中删除用户sp_revokedbaccess[@name_in_db=]name角色管理•用户组和角色•定义角色•为用户指定角色•取消用户的角色•删除角色定义角色sp_addrole[@rolename=]role[,[@ownername=]owner]为用户指定角色sp_addrolemember[@rolename=]role,[@membername=]user_account取消用户的角色sp_droprolemember[@rolename=]role,[@membername=]user_account删除角色sp_droprole[@rolename=]roleSQLServer的预定义角色•public角色•系统预定义角色–使用sp_helpsrvrole获得各种系统管理员角色的描述–使用sp_srvrolepermission得到每种系统管理员角色的特定权限(可以执行的命令、系统存储过程或说明)•数据库预定义角色–使用sp_helpdbfixedrole获得数据库上各种预定义角色的描述–使用sp_dbfixedrolepermission得到每种数据库预定义角色的特定权限(可以执行的命令、系统存储过程或说明)public角色•public角色是一个特殊的数据库角色,每个数据库用户都是该角色的成员。public角色具有如下特点:–public角色自动获得数据库中用户的所有默认权限;–不需要、也无法将用户指派给public角色,因为默认情况下所有用户都属于该角色;–每个数据库(包括所有系统数据库和所有用户数据库)都有public角色;–不可以删除public角色。系统预定义角色•sysadmin:具有系统管理员全部权限的角色。•serveradmin:负责配置数据库服务器的设置。•setupadmin:负责添加和删除链接的服务器。•securityadmin:负责管理服务器的登录。•processadmin:负责管理在SQLServer实例中运行的进程。•dbcreator:负责创建和改变数据库。•bulkadmin:可以执行BULKINSERT语句(数据库数据的装载)。数据库预定义角色•db_owner:在数据库中有全部权限,即具有数据库管理员全部权限的角色。•db_accessadmin:负责数据库用户的管理。•db_securityadmin:负责数据库的安全管理,如负责权限管理、角色和角色成员资格管理等。•db_ddladmin:主要负责数据库的完整性和一致性检查及管理。•db_backupoperator:主要负责数据库的备份。•db_datareader:可以查询数据库中任何用户表中的所有数据。•db_datawriter:可以更改数据库中任何用户表中的所有数据。•db_denydatareader:不能查询数据库中任何用户表中的任何数据。•db_denydatawriter:不能更改数据库中任何用户表中的任何数据。权限管理•授予权限–授予语句权限–授予对象权限–查询授权•收回权限•禁止权限•角色与存取控制授予语句权限GRANT{ALL|statement_list}TOname_liststatement_list给出授权的语句列表,可以是:–BACKUPDATABASE–BACKUPLOG–CREATEDATABASE–CREATEDEFAULT–CREATEFUNCTION–CREATEPROCEDURE–CREATERULE–CREATETABLE–CREATEVIEW授予对象权限•处理数据或执行存储过程时需要有相应对象的操作或执行权限,这些权限可以划分为:–SELECT、INSERT、UPDATE和DELETE语句权限,它们可以应用到整个表或视图上。–SELECT和UPDATE语句权限,它们可以有选择性地应用到表或视图中的单个列上。–SELECT权限,它们可以应用到用户定义函数。–INSERT和DELETE语句权限,它们会影响整行,因此只可以应用到表或视图中,而不能应用到单个列上。–EXECUTE语句权限,即执行存储过程和函数的权限。授予对象权限GRANT{ALL[PRIVILEGES]|permission_list}{[(column_list)]ON{table|view}|ON{table|view}[(column_list)]|ONstored_procedure|ONuser_defined_function}TOname_list[WITHGRANTOPTION][AS{group|role}]查询授权•使用系统存储过程sp_helprotect查询授权的情况收回权限•收回语句授权REVOKE{ALL|statement_list}FROMname_list•收回对象授权REVOKE[GRANTOPTIONFOR]{ALL[PRIVILEGES]|permission_list}{[(column_list)]ON{table|view}|ON{table|view}[(column_list)]|ONstored_procedure|ONuser_defined_function}FROMname_list[CASCADE][AS{group|role}]禁止权限•禁止语句权限DENY{ALL|statement_list}TOname_list•禁止对象权限DENY{ALL[PRIVILEGES]|permission_list}{[(column_list)]ON{table|view}|ON{table|view}[(column_list)]|ONstored_procedure|ONuser_defined_function}TOname_list[CASCADE]角色与存取控制•系统管理员或数据库管理员可以按层次定义角色,并为角色定义权限,例如定义角色A、B、C、D和E,角色之间的权限关系是ABCDE;然后为不同级别的用户指定不同的角色;从而达到按层次管理数据的目的。其他安全问题•数据加密•审计•统计数据库•用户定义的安全性措施数据加密•数据加密标准DES•公开密钥加密体制RSA审计•用户管理和权限控制解决了非法用户不能通过合法途径接触数据的问题,但是对合法用户的使用没有任何监督能力。任何时候都不能排除有失职和渎职现象的发生,为此需要有一种方式可以记录下对数据库的所有操作活动和轨迹,这种功能称为审计(Audit)。•系统管理员(或数据库管理员)可以通过审计日志审计、跟踪所有用户对数据库的操作活动,可以确定哪些客户、什么时间、进行了哪些操作等,从而为“合法”的“意外”安全问题提供保障。统计数据库•在有些数据库应用中只允许查询统计信息而不允许查询明细信息,提供这类服务的数据库称为统计数据库。在统计数据库中存在着特殊的安全问题,即可能存在着隐蔽的信息通道,使得可以从合法的查询中推导出不合法的信息。•综合信息总是带有原始信息的痕迹,利用足够的综合信息总能推导出原始信息。也就是说,统计数据库不管采取什么样的安全手段,总可以从综合信息得到原始信息,但是好的技术可以使恶意用户付出足够高的代价,从
本文标题:数据库原理与应用第八章(另有章节可供下载)
链接地址:https://www.777doc.com/doc-7032646 .html