资源简介 (共33张PPT)第11章 安全管理目录◎本章目标■了解:数据库的安全机制和SQL Sever数据库安全的管理内容■理解:数据库安全的概念、角色的概念■掌握:SQL Sever的两种身份验证模式的基本操作◎本章内容■11.1 安全管理结构■11.2 服务器安全管理■11.3 数据库安全管理■11.4 权限管理11.2 服务器安全管理11.2.1 身份验证模式1.Windows 验证模式是指使用Windows操作系统的安全机制验证登录用户的身份,它是SQL Server 2008默认的身份验证模式。2. 混合验证模式此模式允许登录用户可以使用 Windows身份验证或SQL Sever身份验证与SQL Sever实例进行连接。11.2.2 管理登录用户登录用户是访问服务器安全对象的主体。根据身份验证模式的不同,系统允许创建两类登录:Windows登录用户和SQL Sever登录用户。SQL Sever 2008使用SSMS(SQL Sever Management Studio)和T-SQL语句对登录用户进行管理。11.2.2 管理登录用户SQL Sever 2008具有两个默认的登录用户:“计算机名\Administrators”和sa。这两个登录名是默认的系统管理员,具有访问服务器范围安全对象的所有权限。“计算机名\Administrators”是SQL Sever 2008提供给Windows管理员的一个默认的登录用户,凡是属于Windows NT的Administrators组的账户都允许登录SQL Sever 2008服务器。sa是混合身份验证模式下SQL Sever 2008的系统管理员。11.2.2 管理登录用户在SQL Sever 2008的安装过程中,可以设置登录认证模式。在SQL Sever 2008安装以后,可以通过SSMS(SQL Sever Management Studio)更改登录认证模式。11.2.2 管理登录用户1.Windows 认证模式登录账号的建立和删除(1)使用SSMS建立和删除Windows 认证模式登录账户(2)使用T-SQL语句创建和删除Windows验证模式登录账户① 使用CREATE LOGIN创建Windows验证模式登录账号。语法格式为CREATE LOGIN [WINDOWS用户名] FROM WINDOWS11.2.2 管理登录用户②使用DROP LOGIN 语句删除登录名,基本语句格式如下所示:DROP LOGIN 登录名2.SQL Sever认证模式登录账号的建立和删除(1)使用SSMS建立和删除SQL Sever认证模式登录账号11.2.2 管理登录用户(2)使用T-SQL语句建立和删除SQL Sever认证模式登录账号① 创建SQL Sever认证模式的登录名。语法格式如下:CREATE LOGIN 登录名 WITH PASSWORD=’password’② 修改SQL Sever认证模式的登录名。使用ALTER LOGIN 语句可以改变登录名的密码和用户名称,语法格式如下:ALTER LOGIN 登录名 WITH <修改项> [,….n]CREATE LOGIN newlogin WITH PASSWORD='123456'GOALTER LOGIN newlogin WITH PASSWORD='super'GO11.2.2 管理登录用户③ 查询当前服务器所有的登录名语句如下:EXEC sp_helploginsGO④ 删除登录名使用DROP LOGIN。注意删除登录名时该登录名不能是正在使用的账号,而且当前账号必须具有ALTER ANY LOGIN 权限。语法格式如下:DROP LOGIN 登录名11.2.3 管理固定服务器角色固定服务器角色 成员权限说明bulkadmin 可以执行 BULK INSERT(大容量插入)语句dbcreator 可以创建、更改、删除和还原任何数据库diskadmin 可以管理磁盘文件processadmin 可以管理在SQL Sever中运行的进程securityadmin 管理登录名和属性,可以GRANT、DENY和REVOKE设置服务器、数据库权限,也可以重置登录名的密码serveradmin 可以设置服务器范围的配置选项和关闭服务器setupadmin 可以添加和删除连接服务器,并且也可以执行某些系统存储过程sysadmin 可以在服务器中执行任何活动,默认情况下,windows BUILTIN\Administrators组(本地管理员组)所有成员都是sysadmin固定服务器角色的成员服务器角色是一种权限机制,SQL Sever管理员可以将某些用户设置为某角色,该用户就拥有了该服务器角色具有的权限。11.2.3 管理固定服务器角色1.使用SSMS管理设置服务器角色2.使用T-SQL语句管理设置服务器角色(1)使用存储过程sp_addsrvrolemenmber,可以将某一个登录账户添加到数据库服务器角色的成员中,其基本语句格式如下:sp_addsrvrolemember 登录名,服务器角色名(2)使用存储过程sp_dropsrvrolemember,可以将某一个登录账户从数据库服务器角色的成员中删除出去,其基本语句格式如下:sp_dropsrvrolemember 登录名,服务器角色名EXEC sp_addsrvrolemember 'newlogin',' sysadmin 'GOEXEC sp_dropsrvrolemember 'newlogin','sysadmin'GO11.3 数据库安全管理用户登录服务器后,如果想对某一个数据库进行操作,还得成为这个数据库的用户。该用户具体能够对数据库及其对象进行怎么样的操作,将会由数据库安全管理这一层次进行权限设置。数据库安全管理包括数据库用户账户的建立,与登录名的映射,数据库用户账户的修改、删除和权限授予、拒绝等操作,使用SSMS或者T-SQL语句实现对用户账户的进行管理,为了便于管理数据库用户,系统可以为数据库用户分配数据库角色。11.3.1 管理数据库用户数据库用户是定义在数据库层次的安全控制手段,在SQL Server 2008中,登录名和数据库用户是SQL Server进行权限管理的时候两个不同层次的对象,数据库用户在定义时必须与一个登录名相关联,一个登录名可以与SQL Sever数据库服务器上的所建立的所有数据库进行关联。数据库用户是一个登录名在某个数据库用户中的映射。11.3.1 管理数据库用户SQL Server 2008中每建立一个数据库,都会有4个默认的数据库用户名产生,这4个数据库用户名是不能被删除的,它们是:dbo、guest、INFORMATION_SCHEMA和sys。dbo用户是该数据库的拥有者。在系统数据库中,它和默认的系统管理员登录名sa关联。在用户创建的数据库中,它对应于创建该数据库的登录用户。guest是不与任何登录用户关联的数据库用户,当一个登录用户没有映射到任何一个数据库用户,它又想访问数据库的时候,系统将会将该登录用户直接映射到该数据库guest用户。INFORMATION_SCHEMA和sys虽然作为数据库用户,但是他们不是访问数据库对象的主体。11.3.1 管理数据库用户在SQL Server 2008 中可以通过图形界面SSMS和T-SQL两种方式对数据库用户进行管理。1.使用SSMS管理数据库用户2.使用T-SQL语句管理数据库用户SQL Server 2008中使用CREATE USER 、ALTER USER 和 DROP USER语句实现对数据库用户的创建、修改和删除操作。11.3.1 管理数据库用户创建数据库用户。语法格式如下:CREATE USER 数据库用户名 [{FOR | FROM }{LOGIN 登录名}| WITHOUT LOGIN]创建与登录名“new_login”关联的数据库用户new_userUSE 学生选课GOCREATE USER new_user FOR LOGIN new_loginGO创建的数据库用户名与登录名同名USE 学生选课GOCREATE USER new_loginGO将数据库用户“new_user”的用户名修改为“new”USE 学生选课GOALTER USER new_user WITH NAME=newGO(4)使用存储过程sp_helpuser可以查看当前数据库用户信息。EXEC sp_helpuserGO删除数据库用户使用DROP USER命令DROP USER 数据库用户名11.3.2 管理数据库角色在SQL Sever 2008的数据库中,存在数据库角色和应用程序角色两类。数据库用户如果想对数据库拥有权限,则需属于某一个数据库角色。在SQL Sever 2008中,系统一共提供了10个数据库角色。在使用SQL Sever 2008的时候,当将一个有效的用户账户(Windows用户或组,或SQL Sever用户)添加到数据库角色成员中时,这个用户账户将获得该角色定义的所有的权限。数据库角色的每一个成员都有权利将其他用户添加到该角色中。11.3.2 管理数据库角色对十种数据库角色的具体描述如下:db_owner:成员可以执行数据库的所有配置和维护活动,还可以删除数据库。db_securityadmin:成员可以修改角色成员身份和管理权限。向此角色中添加主体可能会导致意外的权限升级。db_accessadmin:成员可以为 Windows 登录名、Windows 组和 SQL Server 登录名添加或删除数据库访问权限。db_backupoperator:成员可以备份数据库。db_ddladmin:成员可以在数据库中运行任何数据定义语言 (DDL) 命令。db_datawriter:成员可以在所有用户表中添加、删除或更改数据。db_datareader:成员可以从所有用户表中读取所有数据。db_denydatawriter:成员不能添加、修改或删除数据库内用户表中的任何数据。db_denydatareader:成员不能读取数据库内用户表中的任何数据。public:最基本的数据库角色,数据库中的成员都自动成为该角色成员。11.3.2 管理数据库角色1.使用SSMS管理数据库角色2.使用T-SQL管理数据库角色(1)创建数据库角色,语法格式如下:CREATE ROLE 角色名 [AUTHORIZATION 所有者名](2)将数据库用户加入到创建的角色中sp_addrolemember 角色名,数据库用户名(3)修改某数据库角色的名称ALTER ROLE 角色名 WITH NAME=新名称(4)要删除该角色,语法格式如下:DROP ROLE 角色名使用T-SQL在数据库“学生选课”中创建用户定义的数据库角色“db_roles”,并将数据库用户“new”添加到该角色中。USE 学生选课CREATE ROLE db_rolesGOEXEC sp_addrolemember 'db_roles' ,'new'GO可以使用存储过程sp_helprole进行查看都有哪些数据库角色。使用存储过程sp_helprolemember查看数据库角色中包含有哪些成员信息sp_helprolemember 数据库角色名11.3.2 管理数据库角色3.应用程序角色应用程序角色可提供对应用程序(而不是数据库角色或用户)分配权限的方法。 用户可以连接到数据库、激活应用程序角色以及使用授予应用程序的权限。 授予应用程序角色的权限在连接期间有效。当客户端应用程序在连接字符串中提供应用程序角色名称和密码时,可激活应用程序角色。 11.3.2 管理数据库角色应用程序角色的使用过程包括以下步骤。用户执行客户端应用程序。客户端应用程序以相应的登录名连接到SQL Server服务器。应用程序用一个只有它才知道的密码执行sp_setapprole存储过程,激活应用程序角色。连接将失去用户权限,而获得应用程序角色权限11.4 权限管理权限用来指定授权用户可以使用的数据库对象及可以对这些数据库对象执行的操作。用户在登录到SQL Server服务器之后,其用户账号所归属的Windows组或角色所被赋予的权限决定了该用户能够对哪些数据库对象执行哪种(查询、修改、插入和删除)操作。在每一个数据库中,用户的权限独立于用户账号和用户所在的数据库角色,每一个数据库都有自己的权限系统。在SQL Server 2008中对数据库权限的管理同样有两种方式,即使用图形界面SSMS和T-SQL语句。11.4 权限管理在SQL Server2008中权限的类型包括三种:默认权限、对象权限和语句权限。1.默认权限默认权限是指SQL Sever安装以后服务器角色、数据库角色和数据库对象所有者具有的权限。服务器角色和数据库角色的所有成员将自动拥有所属角色的权限。在SQL Server 2008中任何一个数据库对象都由用户创建,创建该对象的用户拥有该对象的所有权限。11.4 权限管理2.对象权限对象权限是数据库层次上的访问和操作数据库对象的操作权限。数据库对象包括表、视图、列和存储过程等。对这些对象的操作权限包括插入(INSERT)、删除(DELETE)、修改(UPDATE)、查询(SELECT)以及执行(EXECUTE)等基本操作权限。其中,增、删、改、查4个权限适用于表和视图,而执行权限主要是指存储过程适 用 对 象 权 限表、列和视图 SELECT(查询)表、列和视图 UPDATE(修改)标量函数和聚合函数、表、列和视图 REFERENCES(引用)表、列和视图 INSERT(插入)表、列和视图 DELETE(删除)过程、标量函数和聚合函数 EXECUTE(执行)Service Broker队列 RECEIVE(接受)过程、Service Broker队列、标量函数和聚合函数、表、视图 VIEW DEFINITION(查看定义)过程、标量函数和聚合函数、Service Broker队列、表、视图 ALTER(修改)过程、标量函数和聚合函数、表、视图 TAKE OWNERSHIP(获取所有权)过程、标量函数和聚合函数、Service Broker队列、表、视图 CONTROL(控制)11.4 权限管理2.语句权限语句权限指的是用户在操作数据库和数据库对象时,对某些语句具有权限,而非数据库对象。一旦用户获得了某个语句的权限,则该用户就具有了执行该语句的权力语句权限语 句 含 义create database 允许用户创建数据库create table 允许用户创建表create view 允许用户创建视图create rule 允许用户创建规则create default 允许用户创建默认create procedure 允许用户创建存储过程create function 允许用户创建用户定义函数backup database 允许用户备份数据库backup log 允许用户备份事务日志11.4 权限管理1.使用SSMS管理权限2.使用T-SQL语句管理权限授予权限GRANT语句将安全对象的权限授予主体,授予权限的基本语句格式如下所示:GRANT ALL | permission [ (column[,...n ])][,...n ][ON [ class ::] securable ] TO principal[ ,...n ]参数含义如下。ALL:表示授予所有可用的权限。对于语句权限,只有 sysadmin 角色成员可以使用 ALL。对于对象权限,sysadmin 和 db_owner 角色成员和数据库对象所有者都可以使用 ALL。permission:是当前授予的对象权限的名称。column:是当前数据库中授予权限的列名。class:表示指定将授予其权限的安全对象的类,需要范围限定符“::”principal:表示主体的名称。在数据库“学生选课”中,授予数据库用户“new”对“选课”表的查询和删除权限。代码如下:USE 学生选课GOGRANT SELECT,DELETEON 选课TO newGO11.4 权限管理2.拒绝权限DENY用于拒绝授予主体权限DENY ALL | permission [ (column[,...n ])][,...n ][ON [ class ::] securable ] TO principal[ ,...n ]参数含义同GRANT语句。在数据库“学生选课”中,禁止用户“new”对“选课表”的插入和修改权限。代码如下:USE 学生选课GODENY INSERT,UPDATEON 选课TO newGO11.4 权限管理3.取消权限REVOKE语句用于取消以前授予的或拒绝的权限REVOKE ALL | permission [ (column[,...n ])][,...n ][ON [ class ::] securable ] TO principal[ ,...n ]参数含义同GRANT语句。在数据库“学生选课”中,使用T-SQL语句取消用户“new”对“选课表”的删除权限。USE 学生选课GOREVOKE DELETEON 选课FROM newGO本章小结SQL Server的安全模型采用为主体分配安全对象的访问权限机制。根据安全对象的级别不同,SQL Server 2008将安全管理结构分为两个层次:服务器安全管理和数据库安全管理。在服务器安全管理阶段,SQL Server 2008为登录账户提供两种身份验证模式:Windows身份验证和混合模式身份验证。用户登录服务器后,可以通过将用户加入到某个服务器角色中,使该用户对服务器具有该角色所具有的权限。要使登录用户对某个数据库具有权限,首先要使该登录账户成为数据库的用户,然后将该用户加入到某个数据库角色中。权限是指用户对数据库中对象的使用及操作权利。有3种权限类型:默认权限、对象权限和语句权限。通过对对象设置权限或对用户设定权限,都可以使用户具有对某个数据库对象的相应权限。本章结束,谢谢! 展开更多...... 收起↑ 资源预览