数据库安全及访问控制.ppt_第1页
数据库安全及访问控制.ppt_第2页
数据库安全及访问控制.ppt_第3页
数据库安全及访问控制.ppt_第4页
数据库安全及访问控制.ppt_第5页
已阅读5页,还剩58页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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 builtin administrators和guest Sa SQLServer验证模式的系统管理员帐号 builtin administrators 是一个windows组帐号 表示所有windows系统管理员 Administrator 组中的用户都可以登录到SQLServer Guest 是来宾帐号 7 2 1管理Windows身份验证模式 1 建立其他新的WindowsNT 2003账户操作步骤如下 以Administrators登录到Windows2003 选择 开始 设置 控制面板 管理工具 计算机管理 在计算机管理窗口 选择 本地用户和组 单击右键 在快捷菜单上单击 新用户 进入如下图界面 在 新用户 对话框中输入新用户名和密码 这里用户名是meng 密码是1111 单击 确定 按钮 一个新的WindowsNT 2003账户建立成功 2 创建Windows登录账户创建Windows登录账户的基本语法格式如下所示 CREATELOGINLoginNameFROMWINDOWS WITHDEFAULT DATABASE DatabaseName 其中 loginName 是WindowsNT 2003用户或用户组名称 其格式为 域 用户名称 对于本地用户或组 则域名即为本地计算机名 其格式为 计算机名 用户名称 例创建Windows登录账户 步骤1创建一个Windows用户 名为Win1 步骤2创建基于Win1的Windows登录账户CREATELOGIN win2k3 Win1 FROMWINDOWSWITHDEFAULT DATABASE stu 使用系统存储过程在SQLServer中 授予WindowsNT 2003用户或用户组连接SQLServer服务器的权限 其语法格式为 sp grantlogin loginame login 例 将新建的WindowsNT账户win1用系统存储过程添加到SQLServer系统中 EXECsp grantlogin win2k3 win1 win2k3是计算机名 win1是Windows2003用户 用新建Windows用户登录SQLServer可以在Windows选择 开始 关机 注销原来的账户 用新的账户 比如win1 登录Windows 登录成功后 启动SSMS就可以新的用户自动进入SQLServer 3 修改Windows登录账户例将 win2k3 Win1 登录账户的默认数据库设置为BlueSkyDB 然后禁用该登录名 ALTERLOGIN win2k3 Win1 WITHDEFAULT DATABASE BlueSkyDBGOALTERLOGIN win2k3 Win1 DISABLEGOALTERLOGIN win2k3 Win1 ENABLEGO 4 拒绝连接拒绝账户连接到SQLServer的语法格式如下所示 DENYCONNECTSQLTOLoginName例为Windows组WinG1创建登录账户 拒绝其中的user2连接到SQLServer服务器 步骤1创建Windows组WinG1 并在该组中添加两个用户user1和user2 首先在 计算机管理 工具中创建两个用户user1和user2 然后在 组 节点上单击鼠标右键 选择 新建组 命令 输入组名WinG1 单击 添加 按钮 在 选择用户 对话框中的 输入对象名称来选择 文本框中输入win2k3 user1 然后单击 确定 按钮 用户user1被加入组WinG1中 用同样的方法将user2加入WinG1组中 单击 创建 按钮创建组WinG1 最后关闭 新建组 对话框 步骤2输入并执行如下语句创建基于组WinG1的Windows登录账户 CREATELOGIN win2k3 WinG1 FROMWINDOWS创建该登录账户后 WinG1组中的任何成员进入操作系统以后都可以连接并登录到SQLServer服务器 步骤3输入并执行如下语句创建基于WinG1组中用户user2的Windows登录账户 CREATELOGIN win2k3 user2 FROMWINDOWS步骤4输入并执行如下语句拒绝WinG1组中的用户user2连接到SQLServer服务器 USEmasterGODENYCONNECTSQLTO win2k3 user2 Windows用户user2的状态变为禁止连接到SQLServer数据库引擎 5 删除Windows登录账户可以使用DROPLOGIN命令删除登录账户 语法格式如下所示 DROPLOGINLoginName使用系统存储过程系统存储过程sp grantlogin所添加的登录标识均存储在SQLServer的syslogins系统表中 以系统管理员身份调用系统存储过程sp revokelogin或从ssms中能够将它们从syslogin系统表中删除 这时在登录窗口中被删除的登录标识也将不再存在 需要刷新界面 语法格式 sp revokelogin loginame login 参数说明 login是待删除的SQLServer服务器登录标识 7 2 2管理SQLServer身份验证模式 在WindowsNT 2003环境下 如果要使用SQLServer登录标识登录SQLServer 首先应将SQLServer的认证模式设置为混合模式 设置成混合认证模式后 可以创建SQLServer登录标识 1 创建SQLServer登录账户创建SQLServer登录账户的基本语法格式如下所示 CREATELOGINLoginName WITHPASSWORD password MUST CHANGE DEFAULT DATABASE DatabaseName CHECK EXPIRATION ON OFF CHECK POLICY ON OFF 例创建SQLServer登录账户Sql1 密码为 123456 要求用户在下一次登录时更改密码 用户默认使用的数据库是BlueSkyDB 对该账户应用本地密码策略并检查Windows过期策略 CREATELOGINSql1WITHPASSWORD 123456 MUST CHANGE DEFAULT DATABASE BlueSkyDB CHECK EXPIRATION ON CHECK POLICY ONGO 例快速创建一个SQLServer登录账户Sql2 CREATELOGINSql2WITHPASSWORD sql2 GO 使用系统存储过程语法格式 sp addlogin loginame 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 addlogin loginame sql3 passwd 1234 新建登录标识sql3EXECsp addlogin loginame sql4 passwd 1234 defdb stuselect fromsys syslogins 用新建SQLserver登录用户登录SQLServer首先设置安全认证模式成混合模式 再将登录的默认数据库选择成用户自己建立的数据库 在建立该用户访问该数据库权限的基础上 启动ssms 先断开原来的连接 再重新连接 然后选择SQLserver身份认证 输入新的用户名和密码即可用新用户身份访问SQLServer 2 删除SQLserver登录标识如果管理员要禁止某个用户连接SQLserver服务器 则可将其登录标识从系统中删除 使用DROPLOGIN命令删除登录账户例删除SQLServer登录账户Sql2 DROPLOGINSql2使用系统存储过程sp droplogin loginame login 参数说明 login为存储在syslogin系统表中的SQLserver登录标识 删除标识也就是删除该用户在syslogin表中的对应记录 例删除SQLServer登录账户Sql3 sp droploginSql3GO 3 修改SQLServer登录账户例将SQLServer登录账户sql2的密码修改为 123456 ALTERLOGINSql2WITHPASSWORD 123456 GO 7 2 3管理固定服务器角色1 角色 Role 的概念2 固定服务器角色3 固定服务器角色的分配与撤销分配角色的语法格式如下所示 EXECsp addsrvrolemember LoginName RoleName 例将sysadmin角色分配给SQLServer服务器登录账户Sql1 EXECsp addsrvrolemember Sql1 sysadmin GO 可以使用系统存储过程sp helpsrvrolemember查看某个固定服务器角色被分配给了哪些SQLServer服务器登录账户 其语法格式如下所示 EXECsp helpsrvrolemember RoleName 例查看sysadmin角色下包括哪些SQLServer服务器登录账户 EXECsp helpsrvrolemember sysadmin GO可以使用系统存储过程sp dropsrvrolemember撤销固定服务器角色的分配 其语法格式如下所示 EXECsp dropsrvrolemember LoginName RoleName 例撤销为Sql1分配的角色sysadmin EXECsp dropsrvrolemember Sql1 sysadmin GO 7 3SQLServer数据库安全管理 7 3 1管理数据库用户7 3 2管理架构7 3 3管理数据库角色 在数据库中 一个用户或工作组取得合法的登录帐号 只表明该帐号通过了WindowsNT认证或者SQLServer认证 但不能表明其可以对数据库数据和数据库对象进行某种或者某些操作 只有当他同时拥有了数据库访问权限后 才能够访问数据库 7 3 1管理数据库用户1 创建数据库用户可以使用CREATEUSER语句创建数据库用户 其基本的语法如下所示 CREATEUSERUserName FORLOGINLoginName 例在BlueSkyDB数据库中为登录账户Sql1创建用户SqlUser1 USEBlueSkyDBGOCREATEUSERSqlUser1FORLOGINSql1GO例在BlueSkyDB数据库中为登录账户 win2k3 Win1 创建同名用户 USEBlueSkyDBCREATEUSER win2k3 Win1 GO 使用系统存储过程语法格式 sp grantdbaccess loginame login name in db name in db 将登录账号用户或组添加到当前数据库 使该用户能够具有在当前数据库中执行活动的权限 参数说明 login 是登录标识名称或WindowsNT 2003用户或用户组名称 name in db 是在数据库中为login参数指定登录标识所创建的用户名称 它可以与登录名称不同 也可以相同 省略该参数时 所创建的数据库用户名称与login相同 例 将上述建立的Windows用户 win2k3 win1 添加到 BlueSkyDB 数据库 并取名MANAGER USEBlueSkyDBGOEXECsp grantdbaccess win2k3 win1 MANAGER GO注意 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 revokedbaccess name in db name in db 参数说明 name in db 是在数据库中指定登录标识所创建的用户名称 例删除windows账户 win2k3 win1 名为 MANAGER 访问 BlueSkyDB 数据库的访问权限 USEBlueSkyDBGOEXECsp revokedbaccess MANAGER GO 4 特殊的数据库用户 1 数据库用户dbo 2 数据库用户guest例启用BlueSkyDB数据库中的guest用户 USEBlueSkyDBGOGRANTCONNECTTOguestGO 3 孤立用户 例创建SQLServer登录账户Sql2 并映射为数据库BlueSkyDB的用户Sql2 删除SQLServer登录账户Sql2 则数据库BlueSkyDB中的用户Sql2成为孤立的数据库用户 查看其信息 步骤1创建一个登录账户Sql2并添加为数据库BlueSkyDB的用户Sql2 CREATELOGINSql2WITHPASSWORD 123456 GOUSEBlueSkyDBGOCREATEUSERSql2GO步骤2删除登录账户Sql2 使数据库BlueSkyDB中的用户Sql2成为孤立用户并查看孤立账户信息 DROPLOGINSql2GOEXECsp change users login action Report GO步骤3删除孤立账户DROPUSERSql2GO 7 3 2管理架构1 创建架构创建架构的基本语法如下所示 CREATESCHEMASchemaName例在数据库BlueSkyDB中创建一个架构Admin USEBlueSkyDBGOCREATESCHEMAAdminGO 例在数据库BlueSkyDB中创建一个架构Sale 并将该架构的所有者指定为数据库用户Sql2 USEBlueSkyDBGOCREATESCHEMASaleAUTHORIZATIONSql2GO 例在数据库BlueSkyDB中创建架构Manager 并将该架构的所有者指定为数据库用户 win2k3 Win1 同时创建一个属于该架构的表Employees USEBlueSkyDBGOCREATESCHEMAManagerAUTHORIZATION win2k3 Win1 CREATETABLEEmployees empIDintIDENTITYPRIMARYKEY empNamevarchar 50 NOTNULL GO 2 修改和删除架构例修改架构Sale 将架构Manager中包含的表Employees转移到架构Sale中 然后删除架构Manager USEBlueSkyDBGOALTERSCHEMASaleTRANSFERManager EmployeesGODROPSCHEMAManagerGO 3 架构应用例首先创建一个SQLServer登录账户Sql2 然后在数据库BlueSkyDB中创建基于登录账户Sql2的数据库用户 并为该用户指定默认架构Sale USEBlueSkyDBGOCREATELOGINSql2WITHPASSWORD 123456 GOCREATEUSERSql2FROMLOGINSql2WITHDEFAULT SCHEMA SaleGO 例数据库BlueSkyDB中的用户 win2k3 Win1 当前的默认架构是dbo 将其默认架构改为Sale USEBlueSkyDBGOALTERUSER win2k3 Win1 WITHDEFAULT SCHEMA SaleGO 7 3 3管理数据库角色1 数据库角色 1 固定数据库角色 2 public数据库角色 3 用户自定义数据库角色例在数据库BlueSkyDB中创建一个数据库角色UserRole1 USEBlueSkyDBGOCREATEROLEUserRole1GO 2 为数据库用户分配和撤销角色为用户分配角色的语法格式如下所示 EXECsp addrolemember RoleName SecurityAccount 例将固定数据库角色db owner分配给BlueSkyDB数据库的用户Sql1 USEBlueSkyDBGOEXECsp addrolemember db owner Sql1 GO 例将数据库对象管理员固定数据库角色db ddladmin分配给用户自定义的数据库角色UserRole1 USEBlueSkyDBGOEXECsp addrolemember db ddladmin UserRole1 GO例将固定数据库角色db owner分配给基于Windows组的SQLServer服务器登录账户 win2k3 WinG1 需要注意的是 win2k3 WinG1 并没有映射为BlueSkyDB数据库的用户 USEBlueSkyDBGOEXECsp addrolemember db owner win2k3 WinG1 GO 撤销用户角色的语法格式如下所示 EXECsp droprolemember RoleName SecurityAccount 例撤销用户自定义数据库角色UserRole1的角色db ddladmin USEBlueSkyDBGOEXECsp droprolemember db ddladmin UserRole1 GO 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 语句权限管理 语句授权的命令格式是 GRANT ALL statement list TO PUBLIC name list DENY ALL statement list TO PUBLIC name list REVOKE ALL statement list FROM PUBLIC name list ALL即全部语句 只有系统管理员可以使用此选项 因为只有系统管理员可以授予或收回CREATEDATABASE的权限 statement list给出授权的语句列表 这些语句可以是CREATEDATABASE 如果执行这个语句的用户是系统管理员 CREATEDEFAULT CREATEPROCEDURE CREATEFUNCTION CREATERULE CREATETABLE CREATEVIEW BACKUPDATABASE和DUMPTRANSACTION等 PUBLIC说明这些语句的执行权限将授予所有的用户 name list是数据库用户名或组名或角色名 说明这些语句的执行权限授予哪些用户或组 例系统管理员授予注册名为win1的用户CREATEDATABASE的权限 USEmasterGOGRANTCREATEANYDATABASETOwin1GO例授予用户MANAGER win2k3 win1登录标识的名称 具有创建表的权限 USEBlueSkyDBGOGRANTCREATETABLETOMANAGERGO 例将在BlueSkyDB数据库中创建视图的权限授予数据库用户 win2k3 Win1 USEBlueSkyDBGOGRANTCREATEVIEWTO win2k3 Win1 GO 2 对象权限管理数据库对象的授权命令格式是 GRANT ALL Permission list ON table name colume list view name column list stored procedure name extended stored procedure name user defined function TO PUBLIC name list WITHGRANTOPTION as group role 其中 ALL说明将指定对象的所有操作权限都授予指定的用户 只有sysadmin db owner角色成员和数据库对象所有者才可以使用all选项 permission list是权限列表 AS group role 用户可以从多个角色或组中继承权限 在GRANT和REVOKE语句中使用AS选项说明他们要管理的用户从哪个角色或组继承权限 DENY ALL Permission list ON table name colume list view name colum

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论