SQL的访问控制

2008-02-23 07:43:39来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折

  【IT专家网原创】用户和角色

  对于数据库管理员们来说,安全问题至关重要,他们一直设法保护他们不计其数的重要业务数据,以免被那些没有权利却又试图超越权限的内部人员或外部人员窥视外泄。任何的关系数据库系统都提供了某种内在的安全机制设计来尽量减少这些威胁。这些安全机制包括从Microsoft Access提供的简单口令保护到一些像Oracle和Microsoft SQL Server这样的高级关系数据库所支持的复杂的用户/角色结构。本文将着重介绍对任何执行SQL语言的数据库都很常见的安全机制。同时,我们还将顺带了解一下加强数据访问控制,确保数据安全的机制。

  基于服务器的数据库都支持用户(user)这个概念,类似于电脑操作系统中使用的用户概念相同。假如您对于Microsoft Windows NT和Windows 2000里的用户/组等层次结构都很熟悉的话,您会发现SQL Server和Oracle所支持的用户/角色的分组很类似。

  强烈建议您为访问您数据库的每一个人创建一个个人数据库用户帐号。虽然不同的用户之间共享帐号,或只为需要访问数据库的每种类型用户创建一个用户帐号,在技术上都是可行的,但是这种做法对于数据库安全来说并不妥当,原因有二:其一,这种做法会消除个人应负的责任——假如某恶意用户篡改了您的数据库(例如给他自己的银行帐号支付了一万块钱),您就不可能通过查看审计日志来追踪到具体的是哪个人做的;其二,假如某个特定用户离开了您所在的机构,而您想要删除他访问数据库的权限,那么您只能强制修改该组任何用户都在使用的登录口令才行。

  在不同的操作平台里,创建用户帐号的方法也不同,您可能需要查阅您所用的特定数据库管理系统的说明书才能找到确切的创建程式。Microsoft SQL Server的用户应该参照关于sp_adduser存储程式的具体用法。而对Oracle数据库管理员来说有用的可能是CREATE USER 命令。您还应该了解一下系统可选的登录认证方案。例如,Microsoft SQL Server支持使用Windows NT的集成安全配置。在这个安全方案配置下,会通过Windows NT用户帐号来识别连接到数据库的用户,因此在访问数据库的时候不用再另外输入用户登录帐号和口令。这个模式极受数据库管理员的钟爱,因为这种方式把帐号管理的重担卸给了网络管理人员,而且为实现终端用户的单点登录提供了便利。

  假如您的运行环境里只有少量用户,那么您可能会发现,直接为他们创建用户帐号并分配权限就能满足您的需要了。但是,假如您拥有大量用户,您很可能会被维护帐号和管理分配适当权限的重担压得喘但是气来。关系数据库所支持的“角色”(role)概念就是用来减轻这个负担的。管理员能够先把同组的用户帐号集中到一个角色单元中,然后把该角色作为一个整体来分配权限,而不再单为每个用户分配权限。例如,我们能够创建一个数据库管理员角色,然后把我们任何管理人员的用户帐号添加到这个角色中。这个步骤完成后,我们只需给这个角色分配好权限,也就相当于为全部现有(连同将来)的管理员分配了具体权限。同样的,根据操作平台的不同,创建角色的程式也是不同的。MS SQL Server的管理员应该参照sp_addrole存储程式,而Oracle的数据库管理员应该使用CREATE ROLE命令。

  一旦您的数据库已有用户和角色进驻了,就是时候开始分配权限了。下面将主要讨论权限分配的问题。

  权限配置

  现在我们已把用户都添加到我们的数据库了,该开始配置用户权限以加强数据库的安全性了。第一个步骤就是授予我们的数据库用户适当的权限。通过执行SQL GRANT语句就能够完成这个任务。该命的语法如下:

GRANT <permissions>
[ON <table>]
TO <user/role>
[WITH GRANT OPTION]

  现在我们来逐行解析一下这个命令。第一行的GRANT<permissions>使我们能够指定我们将要授予的对具体表的权限。这些权限既能够是表水平的权限(如是否能够执行SELECT、 INSERT、 UPDATE和DELETE等操作)也能够是数据库水平的权限(如是否能够执行CREATE TABLE、ALTER DATABASE和GRANT等操作)。在单个GRANT语句里能够授予多个权限,但不能同时授予表水平和数据库水平两种权限。第二行ON <table>
是用来指定该表水平的权限会影响到哪些表。当我们授予数据库水平的权限时,能够忽略这一行。第三行TO <user/role>用来指定接受这些权限的用户或角色。最后一行WITH GRANT OPTION是可选项。假如命令中包含了这一行,那将允许已授权的用户能够把同样的权限授予其他用户。

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇: 提数据高分页效率

下一篇: 通过查询分析器的调试功能进行单步调试