本章知识点
9.1 数据库安全性
9.1.1 数据库安全概述
-
数据库安全保护目标是确保只有
授权用户
才能访问数据库,未被授权的人员则无法接近数据。 -
安全措施是指计算机系统中用户直接或通过应用程序访问数据库所要经过的安全认证过程。
-
数据库安全认证过程如下图所示
9.1.2 SQL Server安全机制
-
自主存取控制:用户可自由地决定将数据的存取权限授予何人,决定是否将“授权”的权限授予别人。(这种授权机制仍可能存在数据的“无意泄露”)
-
授权等级:分为
数据库级
、表级
和列级
权限。- 在SQL Server中权限只能由担任不同角色的用户来分配;
- 不同类型的用户有不同的等级;
-
权限语句:
GRANT
和REVOKE
,授予权限或收回权限。数据库模式授权由DBA在创建用户时实现。 -
SQL Server安全管理机制架构:
认证
和权限
两大机制:- 认证机制:用户必须通过登录账号和密码登录SQL Server,只有登录后才有访问SQL Server的入门资格,也只能处理SQL Server特定的管理工作;
- 权限机制:数据库内所有对象的访问权限必须通过权限设置来决定登录者是否拥有某一对象的访问权限。
具体做法:在数据库内创建多个用户,将具体对象的创建、读取、修改、插入、删除等权限授予特定用户。
-
角色:SQL Server管理者可以将某类用户设置为某一角色,通过对角色进行权限设置,实现对该类所有用户权限的设置,减少管理员的工作量。
-
安全控制模型—四级安全体系
1、SQL Server登录账户来源和认证模式
(1)登录账户来源
- Windows授权用户
- SQL授权用户
(2)安全认证模式
-
Windows身份验证模式
- 允许Windows操作系统用户连接到SQL Server。
- 当使用Windows身份验证模式时,用户必须先登录到Windows操作系统中,然后再登录到SQL Server。
- 一般推荐使用Windows验证模式,这种安全模式能够与Windows操作系统的安全系统集成,以提供更多的安全功能。
-
混合身份验证模式
-
允许Windows授权用户和SQL授权用户登录到SQL Server数据库服务器。
- 若允许非Windows操作系统用户也能登录到SQL Server数据库服务器上,则应选择混合身份验证模式。
- 在混合身份验证模式下选择使用SQL授权用户登录,必须提供登录名和密码两部分内容。
2、设置身份验证模式
3、登录帐户管理
(1)直接操作
(2)SQL语言
创建登录账号
[EXECUTE] sp_addlogin [@loginame=] 'login'
[, [@passwd=] 'password' ] [, [@defdb=] 'database' ]
@loginame='login':login指定登录名称。
@passwd='password':password指定登录密码,若不指定则默认为NULL。
@defdb='database':database指定登录后用户访问的数据库,若不指定则默认为master数据库。
说明:执行系统存储过程sp_addlogin
,除了指定登陆名称之外,其余选项均为可选项。执行sp_addlogin
时,必须具有相应的权限。只有syssdmin
和securityasmin
固定服务器角色的成员才能执行该命令。
[例9.1] 创建登录账号为login1、密码为p666666的登录账号;创建登录账号为login2、密码为p888888的登录账号。
sp_addlogin 'login1', 'p666666'
sp_addlogin 'login2', 'p888888'
[例9.2] 创建登录账号login3,密码为p123456,默认的数据库为ScoreDB。
sp_addlogin login3, 'p123456', 'ScoreDB'
修改登录账号属性
sp_password [ [@old=] 'old_password', ]
[@new=] 'new_password' [, [@loginame=] 'login' ]
[例9.3] 将login3的密码修改为p654321。
sp_password 'p123456', 'p654321', 'login3'
修改默认的数据库
sp_defaultdb [@loginame=] 'login', [@defdb=] 'database'
[例9.4] 将login3访问的数据库修改为BookDB。
sp_defaultdb 'login3', 'BookDB'
删除登录账号
sp_droplogin [@loginame=] 'login'
[例9.5] 删除登录账号login3。
sp_droplogin 'login3'
4、用户管理
系统超级用户
:在数据库服务器上具有全部的权限。数据库管理员
:管理和维护数据库服务器,全面管理和控制数据库系统。对象拥有者
:创建数据库对象,对其所拥有的对象具有全部的权限。普通用户
:只具有对数据库数据的查询、插入、删除和修改的权限
(1)直接操作
(2)SQL语言
添加用户
sp_adduser [@loginame=] 'login'
[, [@name_in_db=] 'user' ]
[例9.6] 将登录账号login1添加到当前数据库OrderDB中,且用户名为u1。
sp_adduser login1, u1
删除用户
sp_dropuser [@name_in_db=] 'user'
[例9.8] 从当前数据库中删除用户u1。
sp_dropuser u1