数据库安全及访问控制.ppt

上传人:tian****1990 文档编号:12866451 上传时间:2020-06-01 格式:PPT 页数:63 大小:1.08MB
返回 下载 相关 举报
数据库安全及访问控制.ppt_第1页
第1页 / 共63页
数据库安全及访问控制.ppt_第2页
第2页 / 共63页
数据库安全及访问控制.ppt_第3页
第3页 / 共63页
点击查看更多>>
资源描述
SQLServer,第7章数据库安全及访问控制,7.1SQLServer安全认证模式与设置7.2SQLServer服务器安全管理方法7.3SQLServer数据库安全管理7.4SQLServer数据库权限管理,第7章数据库安全及访问控制,7.1SQLServer安全认证模式与设置,SQLServer作为DBMS,采用了三个层次的安全控制策略:1.用户首先登录到数据库服务器上(是服务器合法用户)2.然后使服务器用户(login)成为某个数据库的合法用户,从而能够访问数据库。3.让数据库用户在数据库中具有一定的权限(数据操作权、创建对象权等),安全帐户认证是用来确认登录SQLServer的用户的登录帐号和密码的正确性,由此来验证其是否具有连接SQLServer的权限。SQLServer提供了两种确认用户的认证模式:(一)WindowsNT认证模式。(二)混合认证模式。,SQLServer对登录标识的认证过程可用下图表示:,7.2SQLServer服务器安全管理,7.2.1管理Windows身份验证模式7.2.2管理SQLServer身份验证模式7.2.3管理固定服务器角色,系统内置已有的登录帐号:SQLServer有三个默认(内置)的用户登录帐号:即sa、builtinadministrators和guest。Sa:SQLServer验证模式的系统管理员帐号;builtinadministrators:是一个windows组帐号,表示所有windows系统管理员(Administrator)组中的用户都可以登录到SQLServer;Guest:是来宾帐号。,7.2.1管理Windows身份验证模式,1、建立其他新的WindowsNT/2003账户操作步骤如下:以Administrators登录到Windows2003;选择“开始”“设置”“控制面板”“管理工具”“计算机管理”;在计算机管理窗口,选择“本地用户和组”,单击右键,在快捷菜单上单击“新用户”,进入如下图界面;在“新用户”对话框中输入新用户名和密码(这里用户名是meng,密码是1111);单击【确定】按钮,一个新的WindowsNT/2003账户建立成功。,2.创建Windows登录账户创建Windows登录账户的基本语法格式如下所示:CREATELOGINLoginNameFROMWINDOWSWITHDEFAULT_DATABASE=DatabaseName其中,loginName是WindowsNT/2003用户或用户组名称,其格式为“域用户名称”。对于本地用户或组,则域名即为本地计算机名,其格式为“计算机名用户名称”。,例创建Windows登录账户。步骤1创建一个Windows用户,名为Win1。步骤2创建基于Win1的Windows登录账户CREATELOGINwin2k3Win1FROMWINDOWSWITHDEFAULT_DATABASE=stu,使用系统存储过程在SQLServer中,授予WindowsNT/2003用户或用户组连接SQLServer服务器的权限。其语法格式为:sp_grantloginloginame=login,例:将新建的WindowsNT账户win1用系统存储过程添加到SQLServer系统中。EXECsp_grantloginwin2k3win1-win2k3是计算机名,win1是Windows2003用户,用新建Windows用户登录SQLServer可以在Windows选择“开始”“关机”,注销原来的账户,用新的账户(比如win1)登录Windows。登录成功后,启动SSMS就可以新的用户自动进入SQLServer。,3.修改Windows登录账户例将win2k3Win1登录账户的默认数据库设置为BlueSkyDB,然后禁用该登录名。ALTERLOGINwin2k3Win1WITHDEFAULT_DATABASE=BlueSkyDBGOALTERLOGINwin2k3Win1DISABLEGOALTERLOGINwin2k3Win1ENABLEGO,4.拒绝连接拒绝账户连接到SQLServer的语法格式如下所示。DENYCONNECTSQLTOLoginName例为Windows组WinG1创建登录账户,拒绝其中的user2连接到SQLServer服务器。步骤1创建Windows组WinG1,并在该组中添加两个用户user1和user2。首先在【计算机管理】工具中创建两个用户user1和user2。然后在【组】节点上单击鼠标右键,选择【新建组】命令,输入组名WinG1,单击【添加】按钮,在【选择用户】对话框中的【输入对象名称来选择】文本框中输入win2k3user1,然后单击【确定】按钮,用户user1被加入组WinG1中。用同样的方法将user2加入WinG1组中。单击【创建】按钮创建组WinG1,最后关闭【新建组】对话框。,步骤2输入并执行如下语句创建基于组WinG1的Windows登录账户。CREATELOGINwin2k3WinG1FROMWINDOWS创建该登录账户后,WinG1组中的任何成员进入操作系统以后都可以连接并登录到SQLServer服务器。步骤3输入并执行如下语句创建基于WinG1组中用户user2的Windows登录账户。CREATELOGINwin2k3user2FROMWINDOWS步骤4输入并执行如下语句拒绝WinG1组中的用户user2连接到SQLServer服务器。USEmasterGODENYCONNECTSQLTOwin2k3user2Windows用户user2的状态变为禁止连接到SQLServer数据库引擎。,5.删除Windows登录账户可以使用DROPLOGIN命令删除登录账户,语法格式如下所示。DROPLOGINLoginName使用系统存储过程系统存储过程sp_grantlogin所添加的登录标识均存储在SQLServer的syslogins系统表中。以系统管理员身份调用系统存储过程sp_revokelogin或从ssms中能够将它们从syslogin系统表中删除,这时在登录窗口中被删除的登录标识也将不再存在(需要刷新界面)。语法格式:sp_revokeloginloginame=login参数说明:login是待删除的SQLServer服务器登录标识。,7.2.2管理SQLServer身份验证模式,在WindowsNT/2003环境下,如果要使用SQLServer登录标识登录SQLServer,首先应将SQLServer的认证模式设置为混合模式。设置成混合认证模式后,可以创建SQLServer登录标识。,1.创建SQLServer登录账户创建SQLServer登录账户的基本语法格式如下所示。CREATELOGINLoginNameWITHPASSWORD=passwordMUST_CHANGE,DEFAULT_DATABASE=DatabaseName,CHECK_EXPIRATION=ON|OFF,CHECK_POLICY=ON|OFF,例创建SQLServer登录账户Sql1,密码为“*123456”,要求用户在下一次登录时更改密码,用户默认使用的数据库是BlueSkyDB,对该账户应用本地密码策略并检查Windows过期策略。CREATELOGINSql1WITHPASSWORD=*123456MUST_CHANGE,DEFAULT_DATABASE=BlueSkyDB,CHECK_EXPIRATION=ON,CHECK_POLICY=ONGO,例快速创建一个SQLServer登录账户Sql2。CREATELOGINSql2WITHPASSWORD=sql2GO,使用系统存储过程语法格式:sp_addloginloginame=login,passwd=password,defdb=database,deflanguage=language,sid=sid,encryptopt=encryption_option,参数说明:Login为注册标识或SQLServer用户名,长度为1到128个字符,其中可以包括字母、符号和数字,但不能是空字符串,不能包含,不能与现有登录标识同名;Passwd为口令,默认口令是NULL(即不需要口令),用户可以在任何时候使用;Database指定用户在注册时连接到的默认数据库,如果没有指定默认数据库,则默认数据库是master;sid是新建登录标识的安全标识号,一般由系统自动建立。encryption_option说明登录标识口令是否需要加密存储到系统表中,其数据类型为varchar(20),它有以下三种取值:NULL:默认设置,口令加密存储;skip_encryption:要求不要加密口令。skip_encryption_old:所提供的口令被SQLServer前期版本加密,这种取值主要用于早期版本数据库的升级。language说明用户注册到SQLServer时使用的默认语言代码。,例:创建SQLServer登录账户sql3。EXECsp_addloginloginame=sql3,passwd=1234-新建登录标识sql3EXECsp_addloginloginame=sql4,passwd=1234,defdb=stuselect*fromsys.syslogins,用新建SQLserver登录用户登录SQLServer首先设置安全认证模式成混合模式,再将登录的默认数据库选择成用户自己建立的数据库,在建立该用户访问该数据库权限的基础上,启动ssms,先断开原来的连接,再重新连接,然后选择SQLserver身份认证,输入新的用户名和密码即可用新用户身份访问SQLServer。,2、删除SQLserver登录标识如果管理员要禁止某个用户连接SQLserver服务器,则可将其登录标识从系统中删除。使用DROPLOGIN命令删除登录账户例删除SQLServer登录账户Sql2。DROPLOGINSql2使用系统存储过程sp_droploginloginame=login参数说明:login为存储在syslogin系统表中的SQLserver登录标识。删除标识也就是删除该用户在syslogin表中的对应记录。例删除SQLServer登录账户Sql3。sp_droploginSql3GO,3.修改SQLServer登录账户例将SQLServer登录账户sql2的密码修改为“*123456”。ALTERLOGINSql2WITHPASSWORD=*123456GO,7.2.3管理固定服务器角色1.角色(Role)的概念2.固定服务器角色3.固定服务器角色的分配与撤销分配角色的语法格式如下所示。EXECsp_addsrvrolememberLoginName,RoleName例将sysadmin角色分配给SQLServer服务器登录账户Sql1。EXECsp_addsrvrolememberSql1,sysadminGO,可以使用系统存储过程sp_helpsrvrolemember查看某个固定服务器角色被分配给了哪些SQLServer服务器登录账户,其语法格式如下所示。EXECsp_helpsrvrolememberRoleName例查看sysadmin角色下包括哪些SQLServer服务器登录账户。EXECsp_helpsrvrolemembersysadminGO可以使用系统存储过程sp_dropsrvrolemember撤销固定服务器角色的分配,其语法格式如下所示。EXECsp_dropsrvrolememberLoginName,RoleName例撤销为Sql1分配的角色sysadmin。EXECsp_dropsrvrolememberSql1,sysadminGO,7.3SQLServer数据库安全管理,7.3.1管理数据库用户7.3.2管理架构7.3.3管理数据库角色,在数据库中,一个用户或工作组取得合法的登录帐号,只表明该帐号通过了WindowsNT认证或者SQLServer认证,但不能表明其可以对数据库数据和数据库对象进行某种或者某些操作,只有当他同时拥有了数据库访问权限后,才能够访问数据库。,7.3.1管理数据库用户1.创建数据库用户可以使用CREATEUSER语句创建数据库用户,其基本的语法如下所示:CREATEUSERUserNameFORLOGINLoginName例在BlueSkyDB数据库中为登录账户Sql1创建用户SqlUser1。USEBlueSkyDBGOCREATEUSERSqlUser1FORLOGINSql1GO例在BlueSkyDB数据库中为登录账户win2k3Win1创建同名用户。USEBlueSkyDBCREATEUSERwin2k3Win1GO,使用系统存储过程语法格式:sp_grantdbaccessloginame=login,name_in_db=name_in_db将登录账号用户或组添加到当前数据库,使该用户能够具有在当前数据库中执行活动的权限。参数说明:login是登录标识名称或WindowsNT/2003用户或用户组名称。name_in_db是在数据库中为login参数指定登录标识所创建的用户名称,它可以与登录名称不同,也可以相同。省略该参数时,所创建的数据库用户名称与login相同。,例:将上述建立的Windows用户“win2k3win1”添加到“BlueSkyDB”数据库,并取名MANAGER。USEBlueSkyDBGOEXECsp_grantdbaccesswin2k3win1,MANAGERGO注意:sa不能添加到数据库中;只有sysadmin固定服务器角色、db_accessadmin和db_owner固定数据库角色成员才能执行sp_grantdbaccess;不能从用户定义的事务中执行sp_grantdbaccess。,2.查看数据库用户可以使用sys.database_principals目录视图查看数据库用户的信息。例查看数据库BlueSkyDB中的用户信息。USEBlueSkyDBGOSELECT*FROMsys.database_principalsGO,3.修改和删除数据库用户可以使用ALTERUSER语句修改数据库用户。例将数据库用户SqlUser1的名字改为Sql1。USEBlueSkyDBGOALTERUSERSqlUser1WITHNAME=Sql1GO可以使用DROPUSERUserName语句删除指定的数据库用户。例将数据库用户sql1删除。USEBlueSkyDBGODROPUSERSql1GO,使用系统存储过程语法格式:sp_revokedbaccessname_in_db=name_in_db参数说明:name_in_db是在数据库中指定登录标识所创建的用户名称。例删除windows账户“win2k3win1”名为“MANAGER”访问“BlueSkyDB”数据库的访问权限。USEBlueSkyDBGOEXECsp_revokedbaccessMANAGERGO,4.特殊的数据库用户(1)数据库用户dbo(2)数据库用户guest例启用BlueSkyDB数据库中的guest用户。USEBlueSkyDBGOGRANTCONNECTTOguestGO(3)孤立用户,例创建SQLServer登录账户Sql2,并映射为数据库BlueSkyDB的用户Sql2。删除SQLServer登录账户Sql2,则数据库BlueSkyDB中的用户Sql2成为孤立的数据库用户,查看其信息。步骤1创建一个登录账户Sql2并添加为数据库BlueSkyDB的用户Sql2。CREATELOGINSql2WITHPASSWORD=*123456GOUSEBlueSkyDBGOCREATEUSERSql2GO步骤2删除登录账户Sql2,使数据库BlueSkyDB中的用户Sql2成为孤立用户并查看孤立账户信息。DROPLOGINSql2GOEXECsp_change_users_loginaction=ReportGO步骤3删除孤立账户DROPUSERSql2GO,7.3.2管理架构1.创建架构创建架构的基本语法如下所示。CREATESCHEMASchemaName例在数据库BlueSkyDB中创建一个架构Admin。USEBlueSkyDBGOCREATESCHEMAAdminGO,例在数据库BlueSkyDB中创建一个架构Sale,并将该架构的所有者指定为数据库用户Sql2。USEBlueSkyDBGOCREATESCHEMASaleAUTHORIZATIONSql2GO,例在数据库BlueSkyDB中创建架构Manager,并将该架构的所有者指定为数据库用户win2k3Win1,同时创建一个属于该架构的表Employees。USEBlueSkyDBGOCREATESCHEMAManagerAUTHORIZATIONwin2k3Win1CREATETABLEEmployees(empIDintIDENTITYPRIMARYKEY,empNamevarchar(50)NOTNULL)GO,2.修改和删除架构例修改架构Sale,将架构Manager中包含的表Employees转移到架构Sale中,然后删除架构Manager。USEBlueSkyDBGOALTERSCHEMASaleTRANSFERManager.EmployeesGODROPSCHEMAManagerGO,3.架构应用例首先创建一个SQLServer登录账户Sql2,然后在数据库BlueSkyDB中创建基于登录账户Sql2的数据库用户,并为该用户指定默认架构Sale。USEBlueSkyDBGOCREATELOGINSql2WITHPASSWORD=*123456GOCREATEUSERSql2FROMLOGINSql2WITHDEFAULT_SCHEMA=SaleGO,例数据库BlueSkyDB中的用户win2k3Win1当前的默认架构是dbo,将其默认架构改为Sale。USEBlueSkyDBGOALTERUSERwin2k3Win1WITHDEFAULT_SCHEMA=SaleGO,7.3.3管理数据库角色1.数据库角色(1)固定数据库角色(2)public数据库角色(3)用户自定义数据库角色例在数据库BlueSkyDB中创建一个数据库角色UserRole1。USEBlueSkyDBGOCREATEROLEUserRole1GO,2.为数据库用户分配和撤销角色为用户分配角色的语法格式如下所示。EXECsp_addrolememberRoleName,SecurityAccount例将固定数据库角色db_owner分配给BlueSkyDB数据库的用户Sql1。USEBlueSkyDBGOEXECsp_addrolememberdb_owner,Sql1GO,例将数据库对象管理员固定数据库角色db_ddladmin分配给用户自定义的数据库角色UserRole1。USEBlueSkyDBGOEXECsp_addrolememberdb_ddladmin,UserRole1GO例将固定数据库角色db_owner分配给基于Windows组的SQLServer服务器登录账户win2k3WinG1。需要注意的是,win2k3WinG1并没有映射为BlueSkyDB数据库的用户。USEBlueSkyDBGOEXECsp_addrolememberdb_owner,win2k3WinG1GO,撤销用户角色的语法格式如下所示:EXECsp_droprolememberRoleName,SecurityAccount例撤销用户自定义数据库角色UserRole1的角色db_ddladmin。USEBlueSkyDBGOEXECsp_droprolememberdb_ddladmin,UserRole1GO,7.4数据库权限管理,7.4.1权限种类7.4.2权限管理,7.4数据库权限管理,当用户成为数据库中的合法用户之后,他除了具有一些系统表的查询权之外,并不对数据库中的对象具有任何操作权,因此,下一步就需要为数据库中的用户授予数据库对象的操作权。,7.4.1权限种类,1、对象权限,2、语句权限语句权限决定用户能否操作数据库和数据对象,如表、视图、存储过程、默认和规则等。语句权限决定用户能否执行以下语句:.CREATEDATABASE:创建数据库。.CREATEDEFAULT:在数据库中建立默认值。.CREATEPROCEDURE:在数据库中创建存储过程。.CREATEFUNCTION:在数据库中创建用户自定义函数。.CREATERULE:在数据库中创建规则。.CREATETABLE:在数据库中创建表。.CREATEVIEW:在数据库中创建视图。.BACKUPDATABASE:备份数据库。.BACKUPLOG:备份数据库日志。在SQLServer中,每个数据库都有各自独立的权限保护,所以对于不同的数据库要分别向用户授予语句权限。(CREATEDATABASE除外)。,3、隐含权限是指系统安装以后有些用户和角色不必授权就有的许可。SQLServer预定义的固定服务器角色、固定数据库角色和数据库对象所有者均具有隐含权限。,7.4.2权限管理,使用T-SQL管理权限,T-SQL中的权限管理语句有以下三种:.GRANT:允许权限。.DENY:禁止权限。.REVOKE:取消允许权限或禁止权限设置。由于SQLServer预定义角色的隐含权限是固定的,所以不能使用以上语句重新设置,权限管理语句只能设置用户、角色等权限。,1.语句权限管理,语句授权的命令格式是:GRANTALL|statement_listTOPUBLIC|name_listDENYALL|statement_listTOPUBLIC|name_listREVOKEALL|statement_listFROMPUBLIC|name_listALL即全部语句,只有系统管理员可以使用此选项,因为只有系统管理员可以授予或收回CREATEDATABASE的权限;statement_list给出授权的语句列表,这些语句可以是CREATEDATABASE(如果执行这个语句的用户是系统管理员)、CREATEDEFAULT、CREATEPROCEDURE、CREATEFUNCTION、CREATERULE、CREATETABLE、CREATEVIEW、BACKUPDATABASE和DUMPTRANSACTION等;PUBLIC说明这些语句的执行权限将授予所有的用户;name_list是数据库用户名或组名或角色名,说明这些语句的执行权限授予哪些用户或组。,例系统管理员授予注册名为win1的用户CREATEDATABASE的权限。USEmasterGOGRANTCREATEANYDATABASETOwin1GO例授予用户MANAGER(win2k3win1登录标识的名称)具有创建表的权限。USEBlueSkyDBGOGRANTCREATETABLETOMANAGERGO,例将在BlueSkyDB数据库中创建视图的权限授予数据库用户win2k3Win1。USEBlueSkyDBGOGRANTCREATEVIEWTOwin2k3Win1GO,2.对象权限管理数据库对象的授权命令格式是:GRANTALL|Permission_listONtable_name(colume_list)|view_name(column_list)|stored_procedure_name|extended_stored_procedure_name|user_defined_functionTOPUBLIC|name_listWITHGRANTOPTIONasgroup|role其中:ALL说明将指定对象的所有操作权限都授予指定的用户,只有sysadmin、db_owner角色成员和数据库对象所有者才可以使用all选项;permission_list是权限列表。.ASgroup|role:用户可以从多个角色或组中继承权限,在GRANT和REVOKE语句中使用AS选项说明他们要管理的用户从哪个角色或组继承权限。,DENYALL|Permission_listONtable_name(colume_list)|view_name(column_list)|stored_procedure_name|extended_stored_procedure_name|user_defined_functionTOPUBLIC|name_listCASCADE,数据库对象的拒绝权限的命令格式是:,DENY语句中的CASCADE选项有以下两个作用:.授予用户禁止权限。.如果用户拥有WITHGRANTOPTION权限,则撤消该权限。如果用户已使用WITHGRANTOPTION权限授予其他用户权限,则同时撤消其他用户的权限。.如果指定用户拥有WITHGRANTOPTION权限,但DENY语句中没有使用CASCADE选项时,将导致DENY语句运行错误。,GRANTSELECTONBOOkSTOpublicDENYSELECTONBOOKSTOsql2,REVOKEGRANTOPTIONFORALL|Permission_listONtable_name(colume_list)|view_name(column_list)|stored_procedure_name|extended_stored_procedure_name|user_defined_functionFROMPUBLIC|name_listCASCADEasgroup|role,数据库对象的撤消权限的命令格式是:,REVOKE语句中的GRANTOPTIONFOR选项有以下两种作用:.如果REVOKE语句所撤消的对象权限是GRANT语句使用WITHGRANTOPTION选项授予用户的,则REVOKE语句撤消用户所得到的该对象权限的转授权限,但GRANT语句授予用户的对象权限仍然保留。此外,如果该用户已经使用转授权限向其他用户授予他所得到的对象权限,REVOKE语句将一并撤消这些用户所得到的权限。这时,在REVOKE语句中必须同时使用CASCADE选项。.如果REVOKE语句所撤消的对象权限不是GRANT语句使用WITHGRANTOPTION选项授予用户的,则REVOKE语句撤消用户所得到的对象权限。这时,在REVOKE语句中必须不使用CASCADE。,例授予角色教师具有查询图书资料表BOOKS的权限。USEBlueSkyDBGOGRANTSELECTONBOOKSTO教师例将对BlueSkyDB数据库中Comments表查询、更新、删除和插入行的权限授予数据库用户Sql1和Sql2,并且这两个数据库用户还可以将得到的权限再授予其他人。USEBlueSkyDBGOGRANTSELECT,UPDATE,DELETE,INSERTONCommentsTOSql1,Sql2WITHGRANTOPTIONGO,ThankYou!,
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!