第11章数据库的安全管理本章内容11.1SQLServer的安全机制11.2登录账号管理11.3数据库用户的管理11.4角色管理11.5权限管理11.1SQLServer的安全机制11.1.1身份验证11.1.2身份验证模式的设置11.1.1身份验证SQLServer的安全性管理是建立在身份验证和访问许可两者机制上的。身份验证是确定登录SQLServer的用户的登录账号和密码是否正确,以此来验证其是否具有连接SQLServer的权限。通过认证的用户必须获取访问数据库的权限,才能对数据库进行权限许可下的操作。SQLServer身份验证模式(1)Windows身份验证模式该模式使用Windows操作系统的安全机制验证用户身份,只要用户能够通过Windows用户账号验证,即可连接到SQLServer而不再进行身份验证。这种模式只适用于能够提供有效身份验证的Windows操作系统。(2)混合身份验证模式在该模式下,Windows身份验证和SQLserver验证两种模式都可用。对于可信任连接用户(由Windows验证),系统直接采用Windows的身份验证机制,否则SQLServer将通过账号的存在性和密码的匹配性自行进行验证,即采用SQLServer身份验证模式。11.1.2身份验证模式的设置在该模式下,Windows身份验证和SQLserver验证两种模式都可用。对于可信任连接用户(由Windows验证),系统直接采用Windows的身份验证机制,否则SQLServer将通过账号的存在性和密码的匹配性自行进行验证,即采用SQLServer身份验证模式。身份验证内容包括确认用户的账号是否有效、能否访问系统、能访问系统的哪些数据库。11.1.2身份验证模式的设置(1)打开企业管理器,在树型结构窗口中展开一个服务器组,选择要设置身份验证模式的服务器。(2)在该服务器上单击鼠标右键,在弹出的菜单中选择“属性”项。(3)打开“属性”对话框,选择“安全性”选项卡(4)在“身份验证”处选择要设置的验证模式,同时可以在“审核级别”处选择任意一个单选按钮,来决定跟踪记录用户登录时的哪种信息,例如登录成功或失败的信息。(5)单击“确定”按钮完成设置。通过编辑SQLServer注册属性来完成身份验证模式的设置(1)打开企业管理器,在树型结构窗口中选择要设置身份验证模式的服务器。(2)在该服务器上单击鼠标右键,在弹出菜单中选择“编辑SQLServer注册属性”项(3)打开“已注册SQLServer属性”对话框(4)选择要设置的身份验证模式,单击“确定”按钮。11.2登录账号管理11.2.1创建登录账户11.2.2修改登录账户11.2.3删除登录账户11.2.1创建登录账户创建登录账户的方法有两种:一种是从Windows用户或组中创建登录账户一种是创建新的SQLServer登录账户。1.通过Windows身份验证创建登录(1)创建Windows用户①以管理员身份登录到Windows2000,选择“开始→程序→管理工具→计算机管理”选项。②展开“本地用户和组”文件夹,选择“用户”图标,单击鼠标右键,在快捷菜单中选择“新用户”项,打开“新用户”对话框,输入用户名、密码,单击“创建”按钮,然后单击“关闭”按钮完成创建。(2)使用企业管理器将Windows2000账号加入到SQLServer中,创建SQLServer登录①以管理员身份登录到SQLServer,进入企业管理器,选择要访问的服务器。②展开“安全性”文件夹,右键单击“登录”项,在弹出菜单中选择“创建登录”项,打开“SQLServer登录属性”对话框。③在“SQLServer登录属性”对话框的“常规”选项卡中,单击“名称”输入框旁的“浏览”按钮,在弹出对话框的“名称”列表中选择名为“xh001”的用户,单击“添加”按钮。④单击“确定”按钮,返回“SQLServer登录属性”对话框,Windows用户xh001就可以连接SQLServer了。对于已经创建的Windows用户或组,可以使用系统存储过程sp_grantlogin授予其登录SQLServer的权限。其语法格式如下:sp_grantlogin[@loginame=]'login'其中,[@loginame=]'login'为要添加的Windows用户或组的名称,名称格式为“域名\计算机名\用户名”。例11-1使用系统存储过程sp_grantlogin将Windows用户huang加入SQLServer中。EXECsp_grantlogin'jsjx-yp\huang'或EXECsp_grantlogin[jsjx-yp\huang]该操作授予了Windows用户jsjx-yp\huang连接到SQLServer的权限。例11-2授予本地组Users中的所有用户连接SQLServer的权限。EXECsp_grantlogin'BUILTIN\Users'该操作由于授予的是本地组中的用户,所以使用BUILTIN关键字代替域名和计算机名。2.创建SQLServer登录如果使用混合验证模式或不通过Windows用户或用户组连接SQLServer,则需要在SQLServer下创建用户登录权限,使用户得以连接使用SQLServer身份验证的SQLServer实例。(1)使用企业管理器创建登录账户①打开企业管理器,在树型结构窗口中展开要设置身份验证模式的服务器。展开“安全性”选项,用鼠标右键单击其中的“登录”项,在弹出的快捷菜单中单击“新建登录”命令,打开“新建登录”对话框,参见图11-7。②在“新建登录”对话框的“常规”选项卡的“名称”框中输入SQLServer登录的名称,例如ZG001。③选中“SQLServer身份验证”,在“密码”框中输入密码,例如001。④在“数据库”下拉框中选择登录到SQLServer实例后要连接的默认数据库,例如master数据库。⑤在“语言”对话框中,选择显示给用户的信息所用的默认语言。⑥单击“确定”按钮,“确认密码”对话框输入确认新密码,如001,单击“确定”按钮完成操作。(2)使用系统存储过程sp_addlongin创建登录sp_addlogin语法格式如下:sp_addlogin[@loginame=]'login'[,[@passwd=]'password'][,[@defdb=]'database'][,[@deflanguage=]'language'][,[@sid=]sid][,[@encryptopt=]'encryption_option']例11-3使用系统存储过程sp_addlongin创建登录,新登录名为“ZG002”,密码为“002”默认数据库为“Sales”。EXECsp_addlogin'ZG002','002','Sales'例11-3使用系统存储过程sp_addlongin创建登录,新登录名为“ZG002”,密码为“002”默认数据库为“Sales”。EXECsp_addlogin'ZG002','002','Sales'例11-4创建没有密码和默认数据库的登录,登录名为“ZG003”。EXECsp_addlogin'ZG003'该操作为用户ZG003创建一个SQLServer登录名,没有指定密码和默认数据库,使用默认密码NULL和默认数据库master。3.查看用户创建了登录账户后,如果需要确定用户是否有连接SQLServer实例的权限,以及可以访问哪些数据库的信息时,可以使用系统存储过程sp_helplogins查看。sp_helplogins的语法格式如下:sp_helplogins[[@LoginNamePattern=]'login']例11-5查看账户信息。EXECsp_helplogins'ZG002'该操作查询有关登录ZG002的信息11.2.2修改登录账户sp_password的语法格式为:sp_password[[@old=]'old_password',]{[@new=]'new_password'}[,[@loginame=]'login']sp_defaultdb的语法格式为:sp_defaultdb[@logname=]'login',[@defdb=]'databases'sp_defaultlanguage的语法格式为:sp_defaultlanguage[@loginame=]'login'[,[@language=]'language']11.2.3删除登录账户1.使用企业管理器删除登录其操作步骤如下:(1)打开企业管理器,在树型结构窗口中展开一个服务器组,选择服务器并展开。(2)展开“安全性”文件夹,单击“登录”项。(3)在“登录”详细列表中鼠标右键单击要删除的用户,这里选择“jsjx-yp\xh001”,确定删除。2.使用Transact-SQL语句删除登录账号删除登录账号有两种形式:删除Windows用户或组登录和删除SQLServer登录。(1)删除Windows用户或组登录sp_revokelogin的语法格式为:sp_revokelogin[@liginame=]'login'其中,[@liginame=]'login'为Windows用户或组的名称。例11-7使用系统存储过程sp_revokelogin删除例11-1创建的Windows用户'jsjx-yp\huang'的登录账号EXECsp_revokelogin'jsjx-yp\huang'或EXECsp_revokelogin[jsjx-yp\huang](2)删除SQLServer登录使用sp_droplogin可以删除SQLServer登录。其语法格式如下:sp_droplogin[@loginame=]'login‘例11-8使用系统存储过程sp_droplogin删除SQLServer登录账号ZG001。EXECsp_droplogin'ZG001'11.3数据库用户的管理1.使用企业管理器创建数据库用户其操作步骤如下:(1)打开企业管理器,选定要访问的服务器。(2)展开“数据库”文件夹,选定需要增加用户的数据库。(3)鼠标右键单击该数据库,从弹出的快捷菜单中选择“新建→数据库用户”选项,打开“数据库用户属性”对话框。(4)打开“数据库用户属性”对话框(4)在“数据库用户属性”对话框的“登录名”下拉框中选择允许访问数据库的登录账号,如ZG001,并指定使用的用户名和该用户所属的数据库角色等信息,用户名与登录名可以不同。(5)单击“确定”完成该数据库用户的创建。2.使用系统存储过程创建数据库用户SQLServer使用系统存储过程sp_grantdbaccess为数据库添加用户,其语法格式如下:sp_grantdbaccess[@loginame=]'login'[,[@name_in_db=]'name_in_db'[OUTPUT]例11-9使用系统存储过程在当前数据库中增加一个用户。EXECsp_grantdbaccess'ZG002'3.删除数据库中的用户或组(1)使用企业管理器删除数据库用户在SQLServer企业管理器中,选中“用户”图标,在右面窗格中右键单击想要删除的数据库用户,在弹出菜单中选择“删除”项,则从当前数据库中删除该数据库用户。(2)使用系统存储过程删除数据库用户sp_revokedbaccess的语法格式为:sp_revokedbaccess[@name_in_db=]'name'例11-10使用系统存储过程在当前数据库中删除指定的用户。EXECsp_revokedbaccess'ZG002'11.4角色管理11.4.1SQLServer角色的类型11.4.2固定服务器角色管理11.4.3数据库角色管理11.4.4用户定义数据库角色11.4.1SQLServer角色的类型SQLServer中有两种角色类型:固定角色和用户定义数据库角色。1.固定角色固定角色分为固定服务器角色:独立于各个数据库,具有固定的