SQL,第1张

SQL,第2张

开发人员从SQL Server 6.5升级到SQL Server 7.0需要注意哪些问题?对于一般帐户,升级程序工作得很好。在升级到SQL Server 7.0的过程中,SQL Server 6.5中的别名被转换为角色成员。例如,如果您的别名之一是“dbo”,SQL Server会将您视为“db_owner”固定服务器角色的成员。如果您有几个别名为“销售”的登录名,SQL Server 7.0升级程序将创建一个“销售”角色,为这些用户创建帐户,然后将他们全部放入“销售”角色。SQL Server 6.5中“sales”帐户的权限被分配给SQL Server 7.0中的“sales”角色。在升级过程中,SQL Server还会清除系统权限的模式位,以消除重复的权限。

一个困难的情况是,有人可能将不同机器上的10个数据库恢复到一个SQL Server上,然后升级它们。在SQL Server 6.5中,用户帐户必须与master数据库中的syslogins系统表和每个数据库中的sysusers系统表相匹配。不幸的是,当您在SQL Server 6.5中从其他服务器恢复数据库时,它们无法匹配。在这种情况下恢复数据库时,其安全系统已被破坏,升级到SQL Server 7.0后仍被破坏。

诀窍是在升级之前确保您的SQL Server 6.5系统运行良好。在升级之前,还应该运行“sp_change_users_login”系统存储过程,以确保数据库用户和登录名之间的映射关系正确。

使用SQL Server 7.0建立安全数据库的方法是什么?永远不要让用户直接访问表。如果希望用户使用交互式工具(如Microsoft Acess 2000)来访问数据库,则只能授予他们访问视图和存储过程的权限,而不能直接访问表。如果存储过程的所有者是“dbo ”,并且存储过程引用的表和视图的所有者也是“dbo ”,则授予用户对存储过程的执行权限就足够了。这完全消除了检查访问表的需要。

您还可以使用其他安全功能,例如向存储过程添加业务逻辑来控制可以访问哪些字段或行。视图是防止用户直接访问表的另一种方式。与存储过程不同,您可以授予视图SELECT、INSERT、UPDATE或DELETE权限,而存储过程只能授予EXECUTE权限。

另一个需要注意的是,如果在另一个数据库中执行SELECT语句,数据库对象所有者的链式关系仍然适用。例如,在SQL Server登录名" sa "拥有的pubs数据库中,您不能执行跨表查询来连接到NT登录名拥有的数据库,即使这两个登录名都是" sysadmin "角色的成员。如果要连接三个不同数据库中的表,这三个数据库的所有者应该是同一个帐户。如有必要,可以使用存储过程“sp_changedbowner”来更改数据库的所有者。

还有其他值得一提的新功能吗?

我们还添加了一个DENY语句,管理员可以使用它来禁止用户拥有对某个对象的所有访问权限。在SQL Server 6.5中,可以在一行上运行REVOKE语句两次,在某种程度上模仿DENY语句。

在SQL Server 7.0中,如果要防止某人查看某个表,可以使用DENY来禁止他的SELECT权限。使用DENY语句时应该非常小心。例如,如果您对AUTHORS表拥有SELECT和INSERT权限,并且作为NT组的成员,您还拥有UPDATE权限。但是,DENY语句拒绝了您所属的另一个NT组的INSERT和UPDATE权限。因此,您只有SELECT权限。DENY语句将禁止对数据库对象的访问,因此请确保不要对PUBLIC组使用DENY语句,因为任何用户都是PUBLIC组的成员。很多没有经验的管理员这样做了,然后他们不得不打电话给我们寻求帮助。

DENY不仅可以用于数据库对象,还可以用于登录名。例如,您授予NT组“域用户”登录SQL Server的权限。乔刚刚被解雇,但他还不知道。您不能简单地使用REVOKE语句来取消Joe的登录权限,因为他不是单独被授予登录权限,而是作为“domain users”组的成员与其他成员一起被授予登录权限。这时,你可以专门对乔使用DENY语句。因此他无法登录到SQL Server,而同一组的其他成员仍然可以。

应用程序角色是如何工作的?

解释应用程序的作用的可能方法是在实际情况中进行解释。例如,如果您想创建一个员工工资单应用程序,您可以允许用户更新他们的工资。当然,您不希望允许用户简单地登录SQL Server并更改他们的工资。如果员工能做到这一点,他可能会尝试改变自己的工资。更合适的方法是使用可以执行特定安全检查的工资单应用程序,例如,不允许用户更新自己的工资。

它是这样工作的。您的工资单应用程序以用户的安全级别登录到SQL Server,这样服务器审计跟踪工具就可以知道是谁登录到SQL Server。然后,您的应用程序切换到适当的数据库,并调用系统存储过程“sp_setapprole”来启动应用程序角色。应用程序角色受密码保护,因此您需要将密码作为参数传递给sp_setapprole。当数据在线传输时,您也可以加密密码。

一旦应用程序角色被启动,用户的现有权限被关闭,应用程序角色的安全权限被相应地打开。您的应用程序现在可以使用应用程序角色来修改数据库。

需要注意的一点是,应用程序角色是特定于连接的。如果同时打开两个到SQL Server的连接,则必须确保每个连接的应用程序角色都已打开。使用应用程序角色时,一旦连接打开并转换到适当的数据库,第一件事就是调用“sp_setapprole”存储过程。如果不启动应用程序角色,您将无法访问任何应用程序角色专有的数据。

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » SQL

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情