【文档说明】第4章数据库安全性课件.ppt,共(55)页,266.523 KB,由小橙橙上传
转载请保留链接:https://www.ichengzhen.cn/view-92323.html
以下为本文档部分文字说明:
第四章数据库安全性1第四章数据库安全性问题提出数据库的一大特点是数据可以共享数据库系统中的数据共享不能是无条件的共享例:军事秘密、国家机密、市场营销策略、销售计划、客户档案、银行储蓄数据数据共享必然带来
数据库的安全性问题数据库的安全性是指保护数据库以防止不合法的使用所造成的数据泄漏、更改或破坏2第四章数据库安全性数据库中数据的共享是在DBMS统一严格的控制之下的共享,即只允许有合法使用权限的用户访问允许他存取的数据数据库系统的安全保护措施是否有效是数据库系
统主要的性能指标之一数据库的安全性和计算机系统的安全性,包括计算机硬件、操作系统、网络系统等的安全性,是紧密联系相互支持的3本章内容4.1SQLServer2019的安全机制4.2建立和管理用户账户4.3权
限管理4.4角色管理4.5数据库架构4本章内容4.1SQLServer2019的安全机制4.2建立和管理用户账户4.3权限管理4.4角色管理4.5数据库架构54.1SQLServer2019的安全机制SQLServe
r2019的身份验证模式指系统确认用户的方式在SQLServer2019支持两种身份验证模式:Windows验证模式和SQLServer验证模式。64.1SQLServer2019的安全机制SQLServer2019的身份验证模式Windows身份验证:用户登录
Windows时进行身份验证,登录SQLServer时不再进行身份验证。说明:必须将Windows账户加入到SQLServer中,才能采用Windows账户登录SQLServer。SQLServer身份验证:使用SQLServer中的帐号和密码来登录数据库服务
器,而这些帐号和密码与Windows操作系统无关。74.1SQLServer2019的安全机制SQLServer2019的安全性机制主要是通过SQLServer的安全性主体和安全对象来实现。SQLServer2019的安全性主体有3个级别服务器级
别数据库级别架构级别84.1SQLServer2019的安全机制服务器级别安全对象:登录名和固定服务器角色等。登录名用于登录数据库服务器,而固定服务器角色用于给登录名赋予相应的服务器权限。SQLServer
2019中的登录名包括Windows登录名和SQLServer登录名。Windows登录名对应Windows验证模式,该验证模式所涉及的账户类型主要有Windows本地用户账户、Windows域用户账户、Windows组。S
QLServer登录名对应SQLServer验证模式,在该验证模式下,能够使用的账户类型主要是SQLServer账户。94.1SQLServer2019的安全机制数据库级别安全对象:用户和角色等。用户安全对象是用来访问数据库的。如果某人只拥有登录名,而没有在相应的数据库中为其创建登录名所
对应的用户,则该用户只能登录数据库服务器,而不能访问相应的数据库。创建登录名所对应的数据库用户,系统为该用户自动具有public角色。该用户登录数据库后只拥有一些公共的权限,如果想让该用户拥有一些特殊权限,可将其添加到相应的角色中。104.1SQLServer2019的安全机制架构
级别安全对象:表、视图、函数和存储过程等。架构的作用是将数据库中的所有对象分成不同的集合,这些集合没有交集,每一个集合就称为一个架构。数据库中的每一个用户都会有自己的默认架构。这个默认架构可以在创建数据库用户时由创建者设定,若不设定则系统默认架构为dbo。数据库
用户只能对属于自己架构中的数据库对象执行相应的数据操作。至于操作的权限则由数据库角色决定。例如,若某数据库中的表A属于架构S1,表B属于架构S2,而某用户默认的架构为S2,如果没有授予用户操作表A的权限,则该用户不能对表A执行相应的数据操作。但是,该用户可以对表B执行相应的操作。114.
1SQLServer2019的安全机制一个数据库使用者,要登录服务器上的SQLServer数据库,并对数据库中的表执行数据更新操作,则该使用者必须经过如图所示的安全验证。本章内容4.1SQLServer2019的安全机制4.2建立和管理用户账户4.3权限管理4.4角色
管理4.5数据库架构124.2建立和管理用户账户4.2.1创建登录名4.2.2删除登录名4.2.3创建数据库用户4.2.4删除数据库用户13144.2.1创建登录名界面方式建立Windows验证模式的登录名建立SQLServer验证模式的登录名154.2.1创建登录名命令方式CR
EATELOGINlogin_name/*WITH子句用于创建SQLServer登录名*/{WITHPASSWORD='password'[HASHED][MUST_CHANGE][,<option_list>[,...]]/*FROM子句用于创建其他登录名*
/|FROM{WINDOWS[WITH<windows_options>[,...]]|CERTIFICATEcertname|ASYMMETRICKEYasym_key_name}}164.2.1创建登录名命令方式<opt
ion_list>::=SID=sid|DEFAULT_DATABASE=database|DEFAULT_LANGUAGE=language|CHECK_EXPIRATION={ON|OFF}|CHECK_POLICY={ON|OFF}[CREDENTI
AL=credential_name]<windows_options>::=DEFAULT_DATABASE=database|DEFAULT_LANGUAGE=language174.2.1创建登录名命令方式<option_list>:用于指定在创建SQLServer登录名时的一些选
项,选项如下。SID:指定新SQLServer登录名的全局唯一标识符,如果未选择此选项,则自动指派。DEFAULT_DATABASE:指定默认数据库,如果未指定此选项,则默认数据库为master。DEFAULT_LANGUAGE:指定默认
语言,如果未指定此选项,则默认语言将设置为服务器的当前默认语言。CHECK_EXPIRATION:指定是否对此登录名强制实施密码过期策略,默认值为OFF。CHECK_POLICY:指定应对此登录名强制实施运行SQLServer的计算机的Windows密码策略
,默认值为ON。184.2.1创建登录名命令方式<windows_options>:用于指定在创建Windows登录名时的一些选项,选项如下。DEFAULT_DATABASE:指定默认数据库。DEFAULT_LANGUAGE:指定默认语言。194.2
.1创建登录名命令方式(1)创建Windows验证模式登录名创建Windows登录名使用FROM子句,在FROM子句的语法格式中,WINDOWS关键字指定将登录名映射到Windows登录名,204.2.
1创建登录名命令方式[例1]使用命令方式创建Windows登录名tao(假设Windows用户tao已经创建,本地计算机名为cie001)CREATELOGIN[cie001\tao]FROMWINDOWS;2
14.2.1创建登录名命令方式(2)创建SQLServer验证模式登录名创建SQLServer登录名使用WITH子句,其中:PASSWORD:用于指定正在创建的登录名的密码,password为密码字符串。HASHED选项指定在PASSWORD参数后输入的密码已经过哈希
运算,如果未选择此选项,则在将作为密码输入的字符串存储到数据库之前,对其进行哈希运算。如果指定MUST_CHANGE选项,则SQLServer会在首次使用新登录名时提示用户输入新密码。224.2.1创建登录名命令方式[例2]使用命令方式创建SQLServ
er登录名sql_tao,密码为123456。CREATELOGINsql_taoWITHPASSWORD=‘123456’4.2建立和管理用户账户4.2.1创建登录名4.2.2删除登录名4.2.3创建数据库用户4.2.4删除数据库用户2
3244.2.2删除登录名语法格式DROPLoginlogin_name[例3]删除Windows登录名tao。DROPLogin[cie001\tao];[例4]删除SQLServer登录名sql_tao。DROPLoginsql_tao;4.2建立和管理用户账户4.2.1创建登录名4.2
.2删除登录名4.2.3创建数据库用户4.2.4删除数据库用户25264.2.3创建数据库用户界面方式命令方式语法格式CREATEUSERuser_name{{FOR|FROM}LOGINlogin_name}功能:向当前数据库添加用户[例5]在student
数据库中为登录账户sql_tao映射一个数据库用户u1。CREATEUSERu1FORLOGINsql_tao;4.2建立和管理用户账户4.2.1创建登录名4.2.2删除登录名4.2.3创建数据库用户4.2.4删除数据库用户27284.2.2删除数据库
用户语法格式DROPUSERuser_name[例6]删除student数据库的数据库用户u1。DROPUSERu1;29本章内容4.1SQLServer2019的安全机制4.2建立和管理用户账户4.3权限管理4.4角色管理4.5数据库架构304.3权限管理某个用户对某类数据库对象具有
何种操作权力是个政策问题而不是技术问题。数据库管理系统的功能是保证这些决定的执行。用户或DBA把授权决定告知系统,由SQL的GRANT和REVOKE语句来完成。DBMS把授权的结果存入数据字典。当用户提出操作请求时,DBMS根据授权定义进行检查,以决定是否执行操作请求。314.
3权限管理GRANT语句GRANT<权限>[,<权限>]…ON<对象类型><对象名>[,<对象类型><对象名>]…TO<用户>[,<用户>]…[WITHGRANTOPTION];谁定义?DBA和表的建立者(即
表的属主)功能:将对指定操作对象的指定操作权限授予指定的用户。324.3权限管理GRANT语句GRANT<权限>[,<权限>]…ON<对象类型><对象名>[,<对象类型><对象名>]…TO<用户>[,<用户>]…[WITH
GRANTOPTION];指定了WITHGRANTOPTION子句:获得某种权限的用户还可以把这种权限再授予别的用户没有指定WITHGRANTOPTION子句:获得某种权限的用户只能使用该权限,不能传播该权限334.3权限管理GRANT语句[例
7]把对S表和C表的全部权限授予用户U1和U2GRANTALLPRIVILEGESONSTOU1,U2;GRANTALLPRIVILEGESONCTOU1,U2;344.3权限管理GRANT语句[例8]把查询S表和修改学生学号的权限授给用户U3,并允许他再
将此权限授予其他用户GRANTUPDATE(Sno),SELECTONSTOU3WITHGRANTOPTION;354.3权限管理GRANT语句执行例8后,U3不仅拥有了对表S的SELECT权限和对学号列的修改权限,还可以传播此权限:GRANTUPDATE(Sn
o),SELECTONSTOU4WITHGRANTOPTION;同样,U4还可以将此权限授予U5:GRANTUPDATE(Sno),SELECTONSTOU5但U5不能再传播此权限。364.3权限管理REVOKE
语句REVOKE<权限>[,<权限>]…ON<对象类型><对象名>[,<对象类型><对象名>]…FROM<用户>[,<用户>]…;谁定义?DBA和表的建立者(即表的属主)功能:从指定用户那收回对指定对象的指定权限374.3权限管理REVOKE语句[例9]把用户U3修改学生学号的权限收回RE
VOKEUPDATE(Sno)ONSFROMU3;384.3权限管理DENY语句DENY<权限>[,<权限>]…ON<对象类型><对象名>[,<对象类型><对象名>]…TO<用户>[,<用户>]…;
使用DENY命令可以拒绝给当前数据库内的用户授予的权限,并防止数据库用户通过其组或角色成员资格继承权限。394.3权限管理DENY语句[例10]拒绝用户U1对学生表的查询权限DENYSELECTONSFROMU1;404.3权限管理SQL灵活的授权机制DBA拥有对数据库中所有对象的所有
权限,并可以根据应用的需要将不同的权限授予不同的用户。用户对自己建立的基本表和视图拥有全部的操作权限,并且可以用GRANT语句把其中某些权限授予其他用户。被授权的用户如果有‚继续授权‛的许可,还可以
把获得的权限再授予其他用户。所有授予出去的权力在必要时又都可以用REVOKE语句收回。41本章内容4.1SQLServer2019的安全机制4.2建立和管理用户账户4.3权限管理4.4角色管理4.5数据库架构424.4角色管理数据库角色是被命名的一组与数据库操作相关的权限,角色是权限的集合。
可以为一组具有相同权限的用户创建一个角色,使用角色来管理数据库权限可以简化授权的过程。角色的创建CREATEROLE<角色名>刚刚创建的角色是空的,没有任何内容。可以用GRANT为角色授权。434.4角色管理
给角色授权GRANT<权限>[,<权限>]...ON<对象名>TO<角色>[,<角色>]...DBA和用户可以利用GRANT语句将权限授予某一个或几个角色444.4角色管理角色权限的收回REVOKE<权限>[,<权限
>]...ON<对象名>FROM<角色>[,<角色>]...用户可以回收角色的权限,从而修改角色拥有的权限REVOKE动作的执行者或者是角色的创建者,或者拥有在这个(些)角色上的ADMINOPTION454.4角色管理添加和删除角色成员将数据库用户添加到角色中,使数据库
用户拥有角色的权限使用存储过程SP_ADDROLEMEMBER将数据库用户从角色中删除,取消角色权限的授予使用存储过程SP_DROPROLEMEMBER464.4角色管理[例11]通过角色来实现将一组权限授予一个用户1.首先创建一个角色R1CREATEROL
ER1;2.然后使用GRANT语句,使角色R1拥有S表的SELECT、UPDATE、INSERT权限GRANTSELECT,UPDATE,INSERTONSTOR1;474.4角色管理[例11]通过角色来实现将一组权限授予一个用户3.将这个角色授予王平,张明,赵玲。EXECSP_ADDROLEM
EMBER'R1','王平'EXECSP_ADDROLEMEMBER'R1','张明'EXECSP_ADDROLEMEMBER'R1','赵玲'4.可以一次性的通过R1来回收王平的这3个权限EXECSP_DROPROLEMEMBER'R1','王平'484.4角色管理[例12]角色的权限修改G
RANTDELETEONSTOR1REVOKESELECTONSFROMR1通过角色的使用可以使自主授权的执行更加灵活、方便494.4角色管理在SQLServer2019中用户除了可以自己创建角色外,系统也提供了现有的一些角色。固定服务器角色是指在用户
登录时授予的在服务器范围内的权限,这类角色可以在服务器上进行相应的管理操作,完全独立于某个具体的数据库。固定数据库角色应用于单个数据库,它能够授予用户帐户不同级别的管理或访问数据库及其对象的权限。504.4角色管理固定服务器角色描述Bulkadmin块数据操作管理员,拥有执
行块操作的权限Dbcreator数据库创建者,拥有创建数据库的权限Diskadmin磁盘管理员,拥有修改资源的权限Processadmin进程管理员,拥有管理服务器连接和状态的权限Securityadmin安全管理员,拥有执行修改登录名的权限
Serveradmin服务器管理员,拥有修改端点、资源、服务器状态等权限Setupadmin安装程序管理员,拥有修改链接服务器权限Sysadmin系统管理员,拥有操作SQLServer系统的所有权限Public公共角色,没有预先设置的权限。用户可以向该角色授权。51
4.4角色管理固定数据库角色描述db_accessadmin访问权限管理员db_backupoperator数据库备份管理员db_datareader数据检索操作员db_datawriter数据维护操作员db_ddladmin数据库对象管理
员db_denydatareader拒绝执行检索管理员db_denydatawriter拒绝执行数据维护管理员db_owner数据库所有者db_securityadmin安全管理员52本章内容4.1SQLServer20
19的安全机制4.2建立和管理用户账户4.3角色管理4.4权限管理4.5数据库架构534.5数据库架构数据库架构是一个独立于数据库用户的非重复命名空间。可以将架构视为对象的容器,每个数据库对象都属于一个数据库架构。定义架构CREATESC
HEMA<schema_name>AUTHORIZATION<user_name>544.5数据库架构[例13]创建架构test_schema,其所有者为用户david。CREATESCHEMAtest_schemaAUTHORIZATIONda
vid要删除可以使用DROPSCHEMA语句例如:DROPSCHEMAtest_schema