上一页下一页数据库安全性上一页下一页1、数据库安全性的定义是指保护数据库中的各种数据,以防止因非法使用而造成数据的泄密和破坏。简单的说就是保护数据库以防止不合法的使用所造成的数据泄露。上一页下一页SQLSERVER的验证模式验证模式分为:身份验证模式和登录验证模式内容包括:确认用户帐号是否有效;能否访问系统;能访问系统的哪些数据。上一页下一页身份验证方式身份验证是指当用户访问系统时,系统对该用户的账号和口令的确认过程。SQLSERVER能识别两种类型的身份验证方式:WINDOWS身份验证方式;SQLSERVER身份验证方式。用户和客户机在连接SQL时,可任选其一。上一页下一页1、WINDOWS身份验证方式:用户身份由WINDOWS域建立,只要能登录WindowsNT/2000就可连接SQLSERVER。2、SQLSERVER身份验证:由SQLSERVER系统管理员定义SQL的登录帐号和密码,用户连接时必须提供帐号和口令。上一页下一页设置步骤:在“服务器”/“安全性”/“登录”中新建登录名;右键单击“服务器”,选择“属性”/“安全性”标签,并设置“混合模式”以设置服务登录的帐户;右键单击“服务器”,选择“编辑注册”,选择“SQL身份验证”,并输入登录名称及密码。上一页下一页登录验证机制登录验证机制指当用户登录时,SQLSERVER采用什么系统来验证用户身份。1、NT验证模式:功能:指要登录到SQLSERVER系统的用户身份由NT系统来进行验证,此时无法以SQLSERVER帐号登录。上一页下一页特点:用户和组由WINDOWS管理及维护,数据库管理员的工作仅是管理数据库;WINDOWS具有很强的管理用户帐户的工具;可以在SQLSERVER增加用户组。上一页下一页2、混合安全模式功能:指用户登录时,其身份由WINDOWS和SQLSERVER共同认证。适用对象:适合用于外界用户访问数据库或不能登录到WINDOWS域时使用。上一页下一页特点:混合模式允许非WINDOWS客户、Internet客户和混合的客户组连接到SQLSERVER;增加了安全性方面的选择。验证模式的设置:右键单击“服务器”,选择“属性”/“安全性”标签,并设置适合的验证模式上一页下一页登录管理管理员可以从WINDOWS用户或用户组中创建登录帐号或者创建一个新的SQLSERVER登录帐号。登录帐号存储在主数据库的sysxlogins系统表中;在创建帐号过程中,管理员可以为每个用户指定一个默认数据库;上一页下一页系统管理员帐户1、默认的系统管理员帐户,均具有SQLSERVER系统和所有数据库的全部权限:sa:特殊登录名,代表混合验证机制下SQLSERVER的系统管理员,其始终关联DBO用户。BUILTIN\Administrator:是NT系统的系统管理员组。上一页下一页2、主要负责:创建登录名;配置服务器;创建、删除数据库;无须考虑所有权和权限,可以操作各种数据库对象;停止、启动服务器;停止在服务器上运行的无效过程,上一页下一页使用T-SQL语言创建、查看、删除SQLSERVER登录帐户(SQL身份验证)创建登录帐户格式:SP_addlogin‘帐户名’[,新帐户密码][,‘默认数据库’]例:sp_addlogin‘abc’,123,teach查看登录帐户的信息:sp_helplogins[帐户名]例:sp_helploginsabc,若省略帐户名,则查看所有的帐户信息上一页下一页删除登录帐户:删除一个登录帐户,必须确认该登录帐户无关联的用户存在于数据库系统中,即不存在孤儿型的用户(没有任何登录名与其映射)。删除步骤:先删除用户:sp_revokedbaccess‘用户名’再删除帐户:sp_droplogin‘帐户名’注:不能删除系统管理者sa以及当前连接到SQL的登录。上一页下一页1、创建一个名为‘seu’,密码:12345,默认数据库为‘teach’的SQL登录帐号。sp_addlogin‘seu',12345,‘teach‘注:此时未向该帐号授予访问teach数据库的权限因此暂不能登录SQL。2、查看该登录帐号的信息sp_helplogins‘seu’3、删除该帐户sp_droplogin‘seu‘上一页下一页用企业管理器设置:服务器/安全性/登录/新建登录在弹出窗口的“常规”标签中:①若选择WINDOWS身份验证,则需选择域名及域帐户②若选择SQLSERVER验证模式,则需输入登录帐户名、密码及确认密码。单击“服务器角色”:授予该登录用户服务器范围内的权限;单击“数据库访问”:指定该登录用户可以访问的数据库。上一页下一页用户管理用户是基于数据库的名称,是和登录帐户相关联的。上一页下一页1、登录名和数据库用户名的关系:登录名是访问SQLSERVER的通行证,其本身并不能使用户访问服务器中的数据库;用户名是登录名在数据库中使用的名称,一个用户名必须和一个登录名相关联;登录帐户和数据库用户是SQLSERVER进行权限管理的两种不同的对象。一个登录帐户可与服务器上的所有数据库进行关联,产生多个数据库用户,但在一个数据库中只能拥有一个用户;而一个数据库用户只能映射到一个登录帐户。SQLSERVER允许数据库为每个用户对象分配不同的权限,为数据库用户授权的过程也就是为登录对象提供对数据库的访问权限的过程。上一页下一页用T-SQL语句创建、查看、删除数据库用户创建步骤:(1)创建登录帐户;(2)将登录帐户映射为数据库中同名的用户。1、在当前数据库中创建用户:sp_grantdbaccess‘登录名’[,当前数据库用户名]例:sp_grantdbaccess‘abc’,abc1注:若省略‘用户名’,则创建一个和登录名同名的用户名,且一个登录名在同一数据库中只能创建一个用户。2、查看数据库用户:sp_helpuser[用户名]注:省略用户名则查看所有用户信息。上一页下一页3、删除数据库用户格式:sp_revokedbaccess‘用户名’注:该过程不能删除以下角色,用户:public角色、DBO、数据库中的固定角色;master和tempdb数据库中的guest用户帐户;WindowsNT组中的WindowsNT用户。上一页下一页例:为刚创建的‘seu’帐号授予访问‘teach’库的权限,即创建数据库用户,用户名称为‘abcd’UseteachGoSp_grantdbaccess‘seu’,’abcd’注:授予权限后就可利用该帐号登录SQL服务器了。上一页下一页用企业管理器设置数据库用户“服务器”/“数据库”/“目标数据库”/“用户”,右键菜单中选择“新建数据库用户”然后在弹出窗口中进行设置。上一页下一页改变数据库所有权一个数据库只能有一个数据库所有者,其不能被删除,默认情况下,sa帐户映射到库中的用户是dbo,改变所有权步骤:打开要更改所有权的数据库:更改所有权:sp_changedbowner登录号注:若将所有权授予某个登录时,该登录不能在数据库中已存在用户,若存在则先删除用户后授予所有权。上一页下一页例:将teach的所有权授序seu帐号:useteachGoSp_revokedbaccess‘abcd’–先删除已有用户名gosp_changedbowner‘seu’--授予所有权给seu帐号上一页下一页角色管理1、定义:角色类似于组,一般将具有相同权限的一群用户群添加为某角色成员,然后给这个角色授予适当的权限。这样该用户群的所有用户就都具有了该角色的权限,而没有必要逐个对每一个用户去授予相同的权限2、优点:避免大量重复的工作,简化和方便对用户的管理。上一页下一页3、分类:服务器角色:是服务器级的一个对象,主要用于对登录名设置其对服务器的管理权限数据库角色:是数据库级的一个对象,主要用于对数据库用户设置其对数据库的管理权限注:同一用户可属于多个角色。上一页下一页固定服务器角色SQL安装完成后,系统自动创建8个固定的服务器角色,对于服务器角色来说,数据库管理员只能完成以下两个操作:添加和删除服务器角色中的成员,而不能删除服务预定义的角色。上一页下一页1.固定服务器角色及功能:角色功能Sysadmin能够执行任何任务Securityadmin负责系统的安全管理,能够管理和审核服务器登录名Serveradmin能够配置服务器的设置Setupadmin能够安装、复制Processadmin能够管理SQLSERVER系统的进程Diskadmin能够管理磁盘文件Dbcreator能够创建和修改数据库bulkadmin能够执行大容量数据的插入数据操作上一页下一页查看固定服务器角色sp_helpsrvrole查看某个固定服务器角色的权限:sp_srvrolepermission服务器角色上一页下一页2、使用T-SQL命令管理服务器角色将登录帐户添加到服务器角色内,使其成为该角色的成员:sp_addsrvrolemember‘登录名’,’服务器角色名’注:角色设定好后,必须重启方能生效将某一登录者从某一服务器角色中删除,使其不再具有该角色权限sp_dropsrvrolemember‘登录名’,’服务器角色名’上一页下一页例:为‘seu’登录授予固定服务器角色为‘sysadmin’,成功后再将其从该服务器角色删除,使其不再具有该角色权限。sp_addsrvrolemember‘seu','sysadmin‘--此时用seu重新连接后,可执行SYSADMIN的所有功能。GoSp_dropsrvrolemember‘seu’,’sysadmin’Go--此时只有访问权限上一页下一页数据库角色数据库角色的作用域都只在其对应的数据库内,数据库角色分为固定数据库角色和自定数据库角色(一)固定数据库角色固定数据库角色的权限由系统固定,用户不能更改,上一页下一页固定数据库角色功能Public维护默认的许可Db_owner数据库属主,在特定数据库内具有全部权限Db_accessadmin能够添加、删除数据库用户和角色Db_securityadmin可以管理全部权限、对象所有权、角色和角色成员资格Db_ddladin能够添加、删除和修改数据库对象Db_backupoperator能够备份和恢复数据库Db_datareader能够从任意表中读出数据Db_datawriter能够对任意表插入、修改和删除数据Db_denydatareader不允许从表中读数据Db_denydatawriter不允许改变表中的数据上一页下一页其中PUBLIC角色是一个特殊的数据库角色,每位数据库用户都是该角色成员,主要负责维护数据库中用户的全部默认许可,不能将用户和组或角色指定为PUBLIC角色。注:数据库角色在数据库级别上被定义,存在于数据库之内,存储在每个数据库sysusers表中固定角色不能被删除、修改和创建固定数据库角色可指定给其他登录帐户。上一页下一页将固定数据库角色指定给其他用户格式:sp_addrolemember‘固定数据库角色名’,’用户名’将固定数据库角色指定给其他用户格式步骤:将数据库切换到需要指定角色的目标数据库中;为登录名在该数据库中添加用户;为用户指定固定数据库角色。上一页下一页例:为登录名seu分配固定数据库角色db_datareader第一步:为登录名在数据库中授予用户Sp_grantdbaccess‘seu’,’abcd’第二步:为该用户分配固定数据库角色Sp_addrolemember‘db_datareader’,’abcd’上一页下一页将用户从固定数据库角色中删除:sp_droprolemember'固定数据库角色名',’用户名'上一页下一页(二)用户自定义数据库角色自定义数据角色当打算为某些数据库用户设置相同的权限但预定义的数据库角色不能满足所实际要求的权限时,就通过自定义新数据库角色来满足这一要求,从而使这些用户能够在数据库中实现某一特定功能。上一页下一页(1)特点:在同一数据数据库中用户或具有多个不同的自定义角色,可任意组合,角色可以进行嵌套,从而实现不同级别的安全性上一页