1、2022-12-13数据库的安全管理数据库的安全管理数据库的安全管理数据库的安全管理第第14章章 数据库的安全管理数据库的安全管理 教学目的与要求 了解SQL Server的安全机制与身份验证模式;理解登录账号与数据库用户的区别;了解服务器角色与数据库角色;掌握语句权限与对象权限的管理;数据库的安全管理第第14章章 数据库的安全管理数据库的安全管理 重点 身份验证模式;登录账号、数据库用户;对象权限、语句权限;难点 GRANT、REVOKE、DENY数据库的安全管理1、SQL Server的安全机制的安全机制 SQL Server的安全性是建立在身份验证和访问许可两种安全机制上的;身份验证 用
2、来确定登录SQL Server的用户的登录账号和密码是否正确,以此来验证其是否具有连接SQL Server的权限 通过身份验证并不代表其能够访问SQL Server中的数据库对象访问许可 用来指定登录用户可以使用的数据库对象(如表、视图、存储过程、函数等)以及可以对这些对象执行的操作数据库的安全管理1、SQL Server的安全机制的安全机制 SQL Server 的安全机制主要包括三个等级 服务器级别的安全性 主要通过登录账号进行控制,要想访问一个数据库服务器,必须拥有一个登录账号,登录账号可以是windows账号或组,也可以是SQLServer的登录账号;登录账号可以属于相应的服务器角色;
3、数据库级别的安全性 主要通过数据库用户进行控制,要想访问一个数据库,必须拥有该数据库的一个用户,数据库用户是通过登录账号进行映射的,可以属于固定的数据库角色或自定义的数据库角色;数据对象级别的安全性 通过设置数据对象的访问权限进行控制的;数据库的安全管理1、SQL Server的安全机制的安全机制 SQL Server 的安全机制主要包括三个等级数据库的安全管理1、SQL Server的安全机制的安全机制 两种身份验证模式 两种身份验证模式:Windows身份验证和混合验证(即Windows验证或SQL Server验证)Windows身份验证 使用Windows操作系统的安全机制验证用户身份
4、,只要用户能够通过Windows用户账号验证,即可连接到SQL Server而不再进行身份验证 混合验证n对于可信任连接用户(由Windows验证),系统直接采用Windows的身份验证机制n否则采用SQL Server身份验证模式,用户在连接SQL Server时必须提供登录名和密码,这些登陆信息存储在系统表syslogins中,与Windows的登陆帐号无关数据库的安全管理1、SQL Server的安全机制的安全机制 身份验证模式设置数据库的安全管理2、登录账号管理、登录账号管理 登录账号 是服务器级用户访问数据库系统的标识 为了访问SQL Server系统,用户必须提供正确的登录账号,这
5、些登录账号既可以是Windows登录账号,也可以是SQL Server登录账号,但它必须是符合标识符规则的惟一名字 登录账号的信息是系统信息,存储在master数据库的sysxlogins系统表中,用户如需要有关登录账号的信息可以到该表中查询数据库的安全管理2、登录账号管理、登录账号管理 查看登录账号数据库的安全管理2、登录账号管理、登录账号管理-使用使用SSMS管理登录账号管理登录账号 添加一个Windows NT用户或用户组 例1:增加windows用户“WTQ-PCTest”数据库的安全管理2、登录账号管理、登录账号管理-使用使用SSMS管理登录账号管理登录账号 添加一个Windows
6、NT用户或用户组 例1(续):增加windows用户“WTQ-PCTest”数据库的安全管理2、登录账号管理、登录账号管理-使用使用SSMS管理登录账号管理登录账号 添加一个Windows NT用户或用户组 例1(续):增加windows用户“WTQ-PCTest”数据库的安全管理2、登录账号管理、登录账号管理-使用使用SSMS管理登录账号管理登录账号 添加一个SQL Server用户 例2:增加SQL Server用户,用户名sql,密码pwd数据库的安全管理2、登录账号管理、登录账号管理-使用使用SSMS管理登录账号管理登录账号 添加一个SQL Server用户 例2(续):增加SQL S
7、erver用户,用户名sql,密码pwd数据库的安全管理2、登录账号管理、登录账号管理-使用使用SSMS管理登录账号管理登录账号 修改登录账号 例3:修改登录账号“sql”的属性数据库的安全管理2、登录账号管理、登录账号管理-使用使用SSMS管理登录账号管理登录账号 修改登录账号 例3(续):修改登录账号“sql”的属性数据库的安全管理2、登录账号管理、登录账号管理-使用使用SSMS管理登录账号管理登录账号 修改登录账号 例3(续):修改登录账号“sql”的属性数据库的安全管理2、登录账号管理、登录账号管理-使用使用SSMS管理登录账号管理登录账号 修改登录账号 例3(续):修改登录账号“sq
8、l”的属性数据库的安全管理2、登录账号管理、登录账号管理-使用使用SSMS管理登录账号管理登录账号 修改登录账号 例3(续):修改登录账号“sql”的属性数据库的安全管理2、登录账号管理、登录账号管理-使用使用SSMS管理登录账号管理登录账号 删除登录账号 例4:删除登录账号“WTQ-PCTest”数据库的安全管理2、登录账号管理、登录账号管理-使用使用T-SQL命令管理登录账号命令管理登录账号 添加一个Windows NT用户或用户组 例5:增加windows用户“WTQ-PCTest”,默认数据库为DBS数据库的安全管理2、登录账号管理、登录账号管理-使用使用T-SQL命令管理登录账号命令
9、管理登录账号 添加一个SQL Server用户 例6:增加SQL Server用户,用户名sql,密码pwd,默认数据库为DBS数据库的安全管理2、登录账号管理、登录账号管理-使用使用T-SQL命令管理登录账号命令管理登录账号 修改登录账号 例7:修改登录账号“sql”的属性数据库的安全管理2、登录账号管理、登录账号管理-使用使用T-SQL命令管理登录账号命令管理登录账号 删除登录账号 例8:删除Windows登录账号“WTQ-PCTest”例9:删除SQL Server登录账号“sql”数据库的安全管理3、数据库用户管理、数据库用户管理 数据库用户 登录账号登录成功后,如果想要操作数据库,必
10、须有一个数据库用户账号,然后为这个数据库用户设置某种角色,才能进行相应的操作;数据库用户可以与登录账号相同,也可以不相同;每个登录帐号在一个数据库中只能有一个用户帐号,但每个登录帐号可以在不同的数据库中各有一个用户帐号。如果在新建登录帐号过程中,指定它对某个数据库具有存取权限,则在该数据库中将自动创建一个与该登录帐号同名的用户帐号;数据库的安全管理3、数据库用户管理、数据库用户管理 登录账号与数据库用户的区别 一个合法的登录账号只表明该账号通过了NT认证或SQL Server 认证,但不能表明其可以对数据库数据和数据对象进行某种或某些操作 只有当其同时拥有了数据库用户账号后,才能够访问相应的数
11、据库 一个登录账号总是与一个或多个数据库用户账号(这些账号必须分别存在相异的数据库中)相对应,这样才可以访问数据库 例如,登录账号sa 自动与每一个数据库用户dbo 相关联数据库的安全管理3、数据库用户管理、数据库用户管理 创建数据库用户 例10:在数据库DBS中创建数据库用户数据库的安全管理3、数据库用户管理、数据库用户管理 创建数据库用户 例 10(续):在数据库DBS中创建数据库用户数据库的安全管理3、数据库用户管理、数据库用户管理 创建数据库用户 例10(续):在数据库DBS中创建数据库用户数据库的安全管理3、数据库用户管理、数据库用户管理 修改数据库用户 例11:修改数据库DBS中数
12、据库用户sql数据库的安全管理3、数据库用户管理、数据库用户管理 删除数据库用户 例12:删除数据库DBS中数据库用户sql数据库的安全管理4、角色管理、角色管理 利用角色,SQL Server 管理者可以将某些用户设置为某一角色,这样只对角色进行权限设置便可实现对所有用户权限的设置,大大减少了管理员的工作量;“角色”类似于 Microsoft Windows 操作系统中的“组”SQL Server中有两种角色 固有服务器角色 数据库角色 固有数据库角色 应用程序角色数据库的安全管理4、角色管理、角色管理-固有服务器角色固有服务器角色 服务器级角色也称为“固定服务器角色”,因为用户不能删除,也
13、不能创建新的服务器级角色;服务器级角色的权限作用域为服务器范围。可以向服务器级角色中添加 SQL Server 登录名、Windows 帐户和 Windows 组。固定服务器角色的每个成员都可以向其所属角色添加其他登录名。数据库的安全管理4、角色管理、角色管理-固有服务器角色固有服务器角色数据库的安全管理4、角色管理、角色管理-固有服务器角色固有服务器角色 sysadmin:可以在服务器上执行任何活动;Serveradmin:可以更改服务器范围的配置选项和关闭服务器 securityadmin:可以管理登录名及其属性;processadmin:可以终止在SQL Server 实例中运行的进程
14、setupadmin:可以添加和删除链接服务器;bulkadmin:可以运行 BULK INSERT 语句;diskadmin:用于管理磁盘文件;dbcreator:可以创建、更改、删除和还原任何数据库;每个 SQL Server 登录名都属于 public 服务器角色;数据库的安全管理4、角色管理、角色管理-固有数据库角色固有数据库角色 固定数据库角色是在数据库级别定义的,并且存在于每个数据库中;一个数据库角色只在其所在的数据库中有效,对其他数据库无效;可以向数据库级角色中添加任何数据库帐户和其他 SQL Server 角色;用户不能删除固有的数据库角色;数据库的安全管理4、角色管理、角色管
15、理-固定数据库角色固定数据库角色数据库的安全管理4、角色管理、角色管理-固定数据库角色固定数据库角色db_owner:可以执行数据库的所有配置和维护活动,还可以删除数据库;db_securityadmin:可以修改角色成员身份和管理权限;db_accessadmin:可以为 Windows 登录名、Windows 组和 SQL Server 登录名添加或删除数据库访问权限;db_backupoperator:可以备份数据库;db_ddladmin:可以在数据库中运行任何数据定义语言(DDL)命令db_datawriter:可以在所有用户表中添加、删除或更改数据;db_datareader:可以
16、从所有用户表中读取所有数据;db_denydatawriter:不能添加、修改或删除数据库内用户表中的任何数据;db_denydatareader:不能读取数据库内用户表中的任何数据;每个数据库用户都属于 public 数据库角色;数据库的安全管理4、角色管理、角色管理-应用程序角色应用程序角色 应用程序角色是一种比较特殊的由用户定义的数据库角色 如果想让某些用户只能通过特定的应用程序间接地存取数据库中的数据,而不是直接地存取数据库数据时,就应该考虑使用应用程序角色;应用程序角色默认情况下不包含任何成员,且是非活动的 必须为应用程序角色设计一个密码以激活它;数据库的安全管理5、权限管理、权限管
17、理 许可(权限)用来指定授权用户可以使用的数据库对象和这些授权用户可以对这些数据库对象执行的操作;在SQL Server中包括三种类型的许可:对象许可、语句许可和隐含许可;数据库的安全管理5、权限管理、权限管理-对象许可对象许可 表示对特定的数据库对象,即表、视图、字段和存储过程的操作许可;它决定了能对表、视图、存储过程等执行哪些操作(如UPDATE、DELETE、INSERT、EXECUTE);如果用户想要对某一对象进行操作,其必须具有相应的操作的权限;例如,当用户要成功修改表中数据时,则前提条件是已被授予表的UPDATE 权限;数据库的安全管理5、权限管理、权限管理-对象许可对象许可 例1
18、3:为数据库DBS中的用户sql授予对Student表的select、insert权限,拒绝update、delete权限数据库的安全管理5、权限管理、权限管理-语句许可语句许可 指定用户是否具有权限来执行某一语句,这些语句通常是一些具有管理性的操作,如创建数据库、表、存储过程等;还包括备份数据库和事务日志的权限;数据库的安全管理5、权限管理、权限管理-语句许可语句许可 例14:为数据库DBS中的用户sql授予备份数据库的权限,拒绝创建表的权限数据库的安全管理5、权限管理、权限管理-隐含许可隐含许可 系统自行预定义而不需要授权就有的权限,包括固定服务器角色、固定数据库角色和数据库对象所有者所拥
19、有的权限;例如:服务器角色sysadmin的成员可以在整个服务器范围内从事任何操作,数据库拥有者db_owner被授予了对其所创建的数据库的一切权限;数据库的安全管理5、权限管理、权限管理-使用使用T-SQL语句管理权限语句管理权限 GRANT 授予权限 DENY 拒绝权限 REVOKE 撤销权限数据库的安全管理5、权限管理、权限管理-使用使用T-SQL语句管理权限语句管理权限 例15:将查询Student表的权限授予用户sql 例16:将Student表全部操作权限授予用户sql 例17:将SC表的查询权限授予所有用户 例18:将查询Student表和修改Sname的权限授予用户sql数据库的安全管理5、权限管理、权限管理-使用使用T-SQL语句管理权限语句管理权限 例19:将对SC表的插入权限授予用户sql,允许sql再将此权限授予给其他用户 例20:将数据库DBS中创建表的权限授予用户sql数据库的安全管理5、权限管理、权限管理-使用使用T-SQL语句管理权限语句管理权限 例21:撤销用户sql对Student表中Sname列的修改权限 例22:撤销所有用户对SC表的查询权限 例23:撤销用户sql对SC表的插入权限,同时撤销其授予其他用户的权限2022-12-13数据库的安全管理