资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,SQL SERVER教程,*,SQL SERVER,数据库管理系统,1,SQL SERVER教程,第六章 安全管理,SQL Server 2005安全架构,身份验证模式,登录管理,用户管理,角色管理,权限管理,2,SQL SERVER教程,6.1 SQL Server,安全架构,两个安全阶段:身份验证和权限验证,视图安全机制,加密方法:,加密机制:证书、对称密钥、非对称密钥,用户架构分离,安全与加密函数,with encryption,子句,审核,SQL Server Profiler(,事件跟踪,),3,SQL SERVER教程,6.2,SQL Server,的验证模式,Windows身份验证模式,混合身份验证模式(即SQL Server身份验证模式),设置验证模式,4,SQL SERVER教程,1 Windows,身份验证模式,WINDOWS,身份验证模式是指通过,Windows,用户帐户连接到,SQL Server,,用户身份由,Windows,系统验证,优点:,高级安全特性,访问速度快,5,SQL SERVER教程,2 SQL Server,身份验证模式,混合身份验证模式允许用户使用,Windows,和,SQL Server,身份进行连接,由,SQL Server,检验登录和密码的正确性,优点:,非,Windows,客户、,Internet,客户能够通过混合模式建立连接,增加了安全性的选择,6,SQL SERVER教程,6.3,登录管理,系统管理员登录账号,使用Management Studio管理登录帐户,用T-SQL管理登录帐户,9,SQL SERVER教程,1,系统管理员登录账号,两个默认的系统管理员登录帐号,可以在服务器中执行任何活动,sa,BUILTINAdministrators(,本地管理员组,),注:应给,sa,账号指定口令,10,SQL SERVER教程,2,用,Management Studio,管理登录账户,创建登录账户,查看、修改或删除登录帐户,11,SQL SERVER教程,2,用,Management Studio,管理登录账户,创建登录账户:,1),选择服务器,展开“安全性”、“登录名”,并选择“新建登录名”,进入对话框。,2),选择验证模式,根据需要输入帐户名称、密码,3),单击“服务器角色”,查看固定服务器角色中的成员,4),单击“用户映射”,查看登录到数据库用户的映射,5),最后按“确定”按钮。,12,SQL SERVER教程,2,用,Management Studio,管理登录账户,查看、修改登录账户:,1),选择服务器,展开“安全性”、“登录名。,2),单击“登录名”下某一登录帐户,在弹出菜单上单击“属性”项,可查看该帐户信息,3),单击“删除”,能删除该登录帐户。,13,SQL SERVER教程,3,用,T-SQL,管理登录账户,新建登录账户:,Create LOGIN login_name WITH,sp_addlogin,修改登录帐户:,ALTER LOGIN;,删除帐户:,DROP LOGIN;sp_droplogin;sp_revokelogin,14,SQL SERVER教程,3,用,T-SQL,管理登录账户,新建登录账户:,Create LOGIN login_name WITH|FROM,sp_addlogin,修改登录帐户:,ALTER LOGIN;,删除帐户:,DROP LOGIN;sp_droplogin;sp_revokelogin,15,SQL SERVER教程,6.4,用户管理,登录名与数据库用户名的关系,使用Management Studio管理用户,用T-SQL管理用户,16,SQL SERVER教程,1,登录名与数据库用户名的关系,登录名是访问,SQL Server,的通行证,要访问具体的数据库,还要有该数据库的用户名,默认情况下,用户名和登录名使用相同的名称,一个登录帐户可以映射到不同的数据库,一个数据库用户只能映射到一个登录帐户,一个登录名在一个数据库中只能有一个用户,17,SQL SERVER教程,2,使用,Management Studio,管理用户,在创建登录帐户时,可指定该帐户允许访问的数据库,同时生成该登录帐户在数据库中的用户,步骤:,1),选择服务器和要设置的数据库,展开“安全性”、“用户”,2),选择“新建数据库用户”,在弹出的对话框输入用户名字及对应的登录名,按“确定”完成。,18,SQL SERVER教程,3,用,T-SQL,管理用户,CREATE USER语句;sp_adduser,ALTER USER,DROP USER;sp_revokeaccess,19,SQL SERVER教程,3,用,T-SQL,管理用户,例,1,:创建名为,AborHam,且密码为,340$Uxwp7Mcxo7Khy,的服务器登录名,然后在,Sales,中创建对应的数据库用户,AborHam,。,CREATE LOGIN AborHam WITH,PASSWORD=340$Uxwp7Mcxo7Khy,USE Sales,CREATE USER AborHam,20,SQL SERVER教程,dbo,和,guest,用户,dbo,用户,dbo,是特殊的数据库用户,它是数据库所有者,可在数据库中执行所有的操作。服务器角色,sysadmin,的任何成员都会对应到每个数据库内的一个,dbo,用户,且服务器角色,sysadmin,任何成员创建的任何对象自动属于,dbo,。,dbo,无法删除。,guest,用户,由系统创建数据库后自动生成,它的作用是让未经授权的或未明确定义的用户具有一定的权限,,guest,也无法删除。,21,SQL SERVER教程,6.5,角色管理,public角色,固定服务器角色:在服务器级别定义,数据库角色:在数据库级别定义,用户定义的角色,应用程序角色,22,SQL SERVER教程,1 public,角色,public角色在每个数据库中都存在,是系统预定义的角色。每个数据库用户都自动是此角色的成员,无法在此角色中添加或删除用户。,public角色提供数据库中用户的默认权限,不能删除。用户将继承授予public角色的权限。,23,SQL SERVER教程,2,固定服务器角色,Role,Permission,系统管理员,sysadmin,可以执行任何活动,数据库创建者,Dbcreator,创建更改和删除数据库,磁盘管理员,diskadmin,管理磁盘文件,进程管理员,processadmin,管理在,SQL Server,中运行的进程,服务器管理员,serveradmin,设置服务器范围的配置选项,关闭服务器,安装管理员,setupadmin,可以安装复制,安全管理员,securityadmin,管理和审计登录帐号,大容量管理员,Bulkadmin,执行,BULK INSERT,语句,24,SQL SERVER教程,固定服务器角色,固定服务器角色具有服务器级别上的管理权限,存储在,master.syslogins,系统表中,为固定服务器角色添加,/,删除登录帐号:,设置登录帐号属性,系统存储过程:,sp_addsrvrolemembers;sp_dropsrvrolemembers,用,management studio,添加,/,删除角色成员,查看固定服务器角色的成员:,sp_helpsrvrolemembers,25,SQL SERVER教程,使用,Management Studio,添加,/,删除角色成员,方法一:选择服务器和要设置的数据库,展开“安全性”,-“,服务器角色”,在某固定服务器角色上单击右键,选择菜单中的“属性”项,单击“添加”或“删除”按钮选择成员。,方法二:选择服务器和要设置的数据库,展开“安全性”,-“,登录名”,在某登录名上右击,选择“属性”,出现“登录属性”对话框。单击“服务器角色”选项卡,直接多项选择该登录名所属的固定服务器角色。,26,SQL SERVER教程,固定服务器角色,例,1,:将登录名,HelenS,添加到,sysadmin,固定服务器角色,EXEC sp_addsrvrolemember HelenS,用,management studio,添加,例,2,:查看,sysadmin,固定服务器角色的成员,sp_helpsrvrolemember sysadmin,27,SQL SERVER教程,3,固定数据库角色,Role,Permission,public,Maintain all default permissions,db_owner,Perform any database role activity,db_accessadmin,Add or remove database users,groups,and roles,db_ddladmin,Add,modify,or drop database objects,db_security admin,Assign statement and object permissions,db_backupoperator,Back up database,db_datareader,Read data from any table,db_datawriter,Add,change,or delete data from all tables,db_denydatareader,Cannot read data from any table,db_denydatawriter,Cannot change data in any table,28,SQL SERVER教程,3,固定数据库角色,Role,Permission,public,提供数据库中用户的默认权限,db_owner(dbo),可以执行数据库所有的维护和配置活动,db_accessadmin,可为登录帐户添加或删除访问权限,db_ddladmin,可以在数据库中运行任何数据定义语言,(DDL),db_security admin,可以修改角色成员身份和管理权限,db_backupoperator,可以备份该数据库,db_datareader,可以读取所有用户表中的所有数据,db_datawriter,可以在所有用户表中添加、删除或更改数据,db_denydatareader,不能读取用户表中的任何数据,db_denydatawriter,不能添加、删除或更改用户表中的任何数据,29,SQL SERVER教程,固定数据库角色,为固定数据库角色添加,/,删除用户:,系统存储过程:,sp_addrolemembers;sp_droprolemembers,用,management studio,添加,/,删除角色成员,查看固定数据库角色的成员:,sp_helprolemembers,30,SQL SERVER教程,使用,Management Studio,添加,/,删除角色成员,选择要处理的固定数据库角色,右击后选择“属性”。在对话框中,单击“添加”按钮,选择要加入数据库角色的用户名。按“确定”完成。,31,SQL SERVER教程,4,用户自定义角色,用于组织数据库用户的安全,当一组用户在,SQL Server,中有相同的权限时,可建用户角色,用户定义的角色只适用于数据库级别,32,SQL SERVER教程,(,1,)用户角色的创建、修改或删除,用,management studio,创建、删除角色,用,T-SQL,创建、删除角色,CREATE ROLE role_name,AUTHORIZATION owner_name,;sp_addrole,ALTER ROLE role_name WITH NAME=new_name,DROP ROLE,sp_helprole,返回当前数据库中的所有角色,33,SQL SERVER教程,使用,Management Studio,创建、删除角色,选择服务器和要设置的数据库,展开“安全性”,-“,角色”,-“,数据库角色”,在数据库角色目录上单击右键,选择菜单中的“新建数据库角色”项,指定角色名与所有者,单击“确定”完成。,在某数据库角色上单击右键,选择菜单中的“属性”项,可查阅或修改角色信息。单击“删除”项完成删除。,注:,角色成员必须为空才能删除。,34,SQL SERVER教程,用户自定义角色,例,1,:创建用户,Miller,拥有的数据库角色,buyers,CREATE ROLE buyers AUTHORIZATION Miller,用,management studio,添加,例,2,:将角色,buyers,的名称更改为,purchasing,ALTER ROLE buyers WITH NAME=purchasing,35,SQL SERVER教程,(,2,)角色成员的添加与删除,用,management studio,添加与删除角色成员,用,T-SQL,添加与删除角色成员,sp_addrolemember rolename=role,membername=security_account(,安全账户,),sp_droprolemember,sp_helprolemember,返回当前数据库中的某个角色的成员信息,36,SQL SERVER教程,使用,Management Studio,添加,/,删除角色成员,方法一:在前面提过的某数据库角色的“数据库角色属性”对话框中,“常规”选项卡上,右下角成员操作区,单击“添加”或“删除”按钮选择成员。,方法二:选择要设置的数据库,展开“安全性”,-“,用户”,选择某具体用户,右击,选择“属性”,出现“数据库用户”对话框。在右下角成员操作区,直接多项选择该用户名所属的数据库角色。,37,SQL SERVER教程,角色成员的添加与删除,例,1,:将用户,Ben,添加到数据库角色,purchasing,Sp_addrolemember purchasing,Ben,用,management studio,添加,38,SQL SERVER教程,5,应用程序角色,用于应用程序级的安全,不允许用户直接操作表中数据,只能通过特定的应用程序访问,特点:,定义在数据库中,类似于用户定义的数据库角色,可以分配权限,建立时,需提供口令,无成员,非活动的,使用时需要激活,(,sp_setapprole,),39,SQL SERVER教程,应用程序角色的创建与删除,用,management studio,创建、删除角色,用,T-SQL,创建、删除角色,CREATE APPLICATION ROLE appication_role_name,WITH PASSWORD=password,DEFAULT_SCHEMA=schema_name,ALTER APPLICATION ROLE,DROP APPLICATION ROLE,sp_setapprole,sp_unsetapprole,40,SQL SERVER教程,使用,Management Studio,创建、删除角色,选择服务器和要设置的数据库,展开“安全性”,-“,角色”,-“,应用程序角色”,在数据库角色目录上单击右键,选择菜单中的“新建应用程序角色”项,在“常规”选项卡指定角色名称指定角色名称、默认结构、密码等信息,单击“确定”完成。,41,SQL SERVER教程,6.6,权限管理,用户权限是指不同的用户对不同的数据对象允许执行的操作权限,主体与安全对象的概念,权限类型,管理权限,42,SQL SERVER教程,1,主体与安全对象的概念,1),主体,主体是可以请求,SQL Server,数据资源的个体、组,每个主体有唯一的安全标识符,(SID),。主体分为如下几种:,Windows,级别的主体:,Windows,登录名,SQL Server,级别的主体:,SQL Server,登录名,数据库级别的主体:数据库用户、数据库角色、应用程序角色,43,SQL SERVER教程,1,主体与安全对象的概念,2),安全对象,安全对象是系统控制对其访问的资源。安全对象范围有服务器、数据库、架构三个层次。,安全对象范围服务器:包含端点、登录帐户、数据库等,安全对象范围数据库:包含用户、角色、应用程序角色、程序集、服务、证书、非对称密钥、对称密钥、约定等,安全对象范围架构:包含类型、约束、函数、过程、队列、统计信息、表、视图等,44,SQL SERVER教程,2,权限类型,预定义,Fixed Role,Object Owner,对象,SELECT,INSERT,UPDATE,DELETEREFERENCES,SELECT,UPDATE,REFERENCES,EXEC,TABLE,VIEW,COLUMN,STORED,PROCEDURE,DDL,CREATE DATABASE,CREATE TABLE,CREATE VIEW,CREATE PROCEDURE,CREATE RULE,CREATE DEFAULT,CREATE FUNCTION,BACKUP DATABASE,BACKUP LOG,45,SQL SERVER教程,3,为用户和角色分配权限,用,management studio,管理权限,用,T-SQL,管理权限,授予、拒绝和废除许可权限,“授予权限”许可访问,“拒绝权限”即禁止访问,废除已授予或已拒绝的权限,46,SQL SERVER教程,授予、拒绝,废除许可权限,GRANT:,授予,REVOKE:,回收,DENY:,拒绝,47,SQL SERVER教程,使用,Management Studio,管理权限,可从主体或安全对象出发来设置权限,从主体:选择用户或角色,右击“属性”项,单击“安全对象”选项卡,对权限进行设置,从安全对象:选择数据库或表,右击“属性”项,单击“权限”选项卡,选定用户或角色对其权限进行设置,48,SQL SERVER教程,用,T-SQL,管理权限,GRANT,、,REVOKE,、,DENY,例:授予用户,Ben,对,Sales,中的,Employee,的,SELECT,权限,GRANT SELECT ON Sales.Employee TO BEN,49,SQL SERVER教程,用户最终获得权限的必要条件,1,、用户已直接被授予权限或者其已属于某一个角色且该角色已被授予权限。,2,、,没有,DENY,过,用户或其所属的任何一个角色。,50,SQL SERVER教程,如何管理,SQL SERVER,的安全性,确定默认登录帐号的使用,sa,BUILTINAdministrators,确定用户帐号,Guest,的职能,确定角色,public,的许可权限,对角色应用许可权限,创建,dbo,所属的对象,51,SQL SERVER教程,如何管理应用程序的安全性,利用视图和存储过程管理安全性,利用应用角色管理客户应用程序的安全性,52,SQL SERVER教程,视图和,SP,的许可机制,机制:,视图主要是防止用户访问或修改数据库表中某些敏感列数据。可以通过赋予用户视图权限,(SELECT,、,UPDATE,、,INSERT,、,DELETE),,而禁止用户访问底层表,来实现数据安全。,存储过程主要是实现数据库的整体一致性,可以通过赋予用户执行存储过程的权限,(EXEC),,而禁止用户访问底层表或视图,来实现安全。,53,SQL SERVER教程,视图和,SP,的许可机制,调用链:,视图引用其它的表或视图,存储过程引用其它的视图、表及存储过程,形成一个调用链。,一般来说,视图或存储过程的拥有者(,Owner,)也是被引用对象,(,表、视图或其它对象,),的,Owner,,并且都属于同一数据库。视图(或存储过程)拥有者只需要将视图对象的许可分配给用户,用户就能执行该视图,不需要用户具有访问被引用对象的许可。,但是,如果视图和存储过程引用了别人的对象,也即所有者不同,则用户提交,T_SQL,请求时,,SQLServer,将检查下列权限:,1.,执行该视图或存储过程的权限,2.,不同所有者被引用对象的权限,54,SQL SERVER教程,练习,配置SQL SERVER身份验证模式,授权windows 组和用户访问SQL SERVER,废除和拒绝windows组和用户的访问权限,创建数据库角色并增加成员,管理对象权限,55,SQL SERVER教程,
展开阅读全文