网络编程
位置:首页>> 网络编程>> 数据库>> 保护SQL服务器的安全 用户识别问题

保护SQL服务器的安全 用户识别问题

作者:佚名 来源:ChinaItLab 发布时间:2008-12-24 15:26:00 

标签:

在我们关于SQL服务器安全系列的这文章里,我们的目标是向你提供安全安装SQL服务器所需要的工具和信心,这样的话,你有价值的数据就会受到保护,避免无意或者有意的破坏或者窃取。在本文里,我们会深入一些基础的概念,在保护数据库安全的时候,你需要利用下面这些概念:登录、用户、角色,以及组。确定谁在请求访问数据或者SQL服务器里其他信息等看上去很简单的过程,都需要用到所有这些概念。

登录

登录规定了哪些用户能够连接到安装好的SQL服务器上——这不是某个特定的数据库,而是而是整个服务器。登录有两种不同的形式:

Windows集成的登录,它会授权特定的Windows用户或者组使用它们的Windows信任书进行连接。

SQL服务器登录,它会授权用户使用由SQL服务器保存的用户名和密码进行连接。

你应该使用哪一种?

Windows集成登录肯定要比SQL服务器登录更加高效和更方便,因为用户只需要登录一次——在网络这一层。单独登录到服务器是没有必要的,因为SQL服务器会自动地处理(在后台)Windows登录,从而允许到服务器的访问。只有在服务器运行在Windows NT或者2000上的时候,对Windows登录的支持才有效;安装在Windows 98上的服务器必须要依赖SQL服务器登录。如果你正在运行Windows 2000,而且最终需要支持原有的应用程序,那么就要记住,SQL服务器登录只有在混合模式下才可用。

设计上的考虑

在设计自己数据库的时候,你需要考虑登录的方法——而且要在你真正开始保证最终产品的安全之前。你应该知道服务器使用的是哪种授权方式。那些还在Window 98上使用服务器的人可能现在就要考虑升级,如果安全是一个很重要的问题的话;那样的话,他们就可以使用Windows集成的安全(策略)。

另外一个设计问题是知道谁拥有访问权,他们能够访问什么数据,以及他们是否能够对对象和数据进行更改。你不用真的列出其名字;你只需要利用工具有效地帮助用户就行了。最后,你应该使用系统的存储过程来管理安全。SQL服务器提供了两种存储过程,用于登录的管理:

◆sp_addlogi——在使用SQL服务器验证保护你服务器安全的时候要使用这个存储过程。具体的说,这个存储过程会创建一个新的SQL服务器登录,它允许用户使用SQL服务器验证连接到SQL服务器的实例上。

◆sp_grantlogin——这个存储过程允许Windows 2000的用户或者组帐号使用Windows验证连接到微软的SQL服务器上。

只有sysadmin或者securityadmin固有服务器角色的成员能够执行这两个存储过程。

什么是系统存储过程?

系统存储过程是一个内置的存储过程,它能够帮助你管理服务器。你可以在MSDN库里找到一长串的系统存储过程。SQL服务器文献在线囊括了每个系统存储过程的所有句法细节和使用示例。

用户

登录属于服务器,而用户则属于数据库。用户ID会识别特定数据库的特定用户。而且,用户对于数据库来说是专门的——也就是说,Northwind数据库里Fred这个用户同公共数据库里Fred那个用户是不同的,尽管这两个Fred可能和同一个登录相关联。

当你在数据库里创建一个用户的时候,你就将一个特定的登录同这个用户关联起来了。对于这个数据库而言,登录具有这个用户的权限。尽管登录所用的ID不需要和用户ID相同,但是在通常情况下,如果你保持这样的惯例,那么事情就会更少让人糊涂。如果登录在数据库里没有相关联的用户,那么用户能够通过特殊的来宾用户帐号连接到该数据库。

特殊用户

所有的用户都不是数据库里的常住人口,而且不能保证用户帐号就是他们自己的。在希望用户临时访问数据库的时候,你可以使用来宾用户帐号,它可以不使用常规的用户帐号而登录访问服务器。来宾用户的登录必须拥有访问数据库的权限,而且数据库必须设有来宾用户帐号。一旦进了数据库,来宾用户会被限制到只能进行来宾用户帐号所指定的活动。但是,来宾用户帐号在一个刚刚创建的数据库里不是缺省就存在的;(数据库的)所有者或者系统管理员必须创建这样一个帐号。

除了来宾用户,你还需要考虑数据库的所有者(DBO)。他是创建数据库的用户。数据库的所有者或者系统管理员必须赋予(其他人)权限,才能让他们在数据库创建其它的对象。

为了向数据库里添加数据,你要运行sp_grantdbaccess。这个存储过程会在数据库里创建一个和指定登录相对应的用户。只有sysadmin固有服务器角色、db_accessadmin角色,以及db_owner固有服务器角色的成员才能够执行sp_grantdbaccess。

角色

角色让你将用户集中到一起,以利于更简单的管理。就像用户一样,角色也是数据库的对象。例如,你可以在自己的采购数据库里定义一个“销售”角色,并让所有的产品所有销售人员都成为这个角色的成员。如果你随后赋予这个“销售”角色许可,那么这些许可会自动地应用于该角色的所有成员上。此外,一个用户可以是多个角色的成员。

有三种类型的角色:

◆公共——这个角色会为所有的用户设置缺省的基本许可,所有的用户都会被分配公共角色。

◆服务器——服务器角色适用于整个服务器。

◆数据库——这些角色适用于专门的数据库。

服务器和数据库角色都有预先定义的类别,我们把它们列在表格A里。

 表格 A

0
投稿

猜你喜欢

  • (1)Flush的内容至少要有256字节经过反复的测试,我得出一个结论。就是flush的内容至少要有256字节。也就是只有编译产生了至少25
  • 其实这个问题落伍谈了n次了其中care4也说了两次所以如果你有问题最好先搜索一下 说不定问题早有人解决了http://www.im286.c
  • Douglas Crockford是JavaScript开发社区最知名的权威,是JSON、JSLint、JSMin和ADSafe之父,是《J
  • 对于中小型个人、企业网站来说,MySQL数据库或许是目前数据库的最完美实施解决方案了。在不变更服务器硬件的前提下,一个经过良好架构,优化后的
  • 1、设置web.config文件。以下为引用的内容:<system.web> ...... <globalization
  • 一、什么是用户体验?用户体验的名词解释用户体验(User Experience,简称UE)是一种纯主观的在用户使用一个产品(服务)的过程中建
  • 什么是品牌的视觉传达品牌,这个熟悉而又陌生的名词,有时总会让人产生误解。品牌很广,广到一个意会颇深的战略发展理念;品牌很小,小到一个清晰可见
  •     (一)原理 小偷程序实际上是通过了XML中的XMLHTTP组件调用其它网站上的网页。比如新闻小偷程序,
  • 近段时间由于修改一个ASP程序(有SQL注入漏洞),在网上找了很多相关的一些防范办法,都不近人意,所以我将现在网上的一些方法综合改良了一下,
  • 原文地址:30 Days of Mootools 1.2 Tutorials - Day 10 - Using FX.TweenMooToo
  • 后台数据库: [Microsoft Access] 与 [Microsoft Sql Server] 更换之后,ASP代码应注意要修改的一些
  • asp中利用XMLhttp对象获取远程的数据,然后用二进制输出到客户浏览器,让客户下载数据,此例从某一远程服务器获取一个压缩包,并且输出到浏
  • MySQL是中小型网站普遍使用的数据库之一,然而,很多人并不清楚MySQL到底能支持多大的数据量,再加上某些国内CMS厂商把数据承载量的责任
  • 北京时间2月15日据国外媒体报道,美国知名sns网站Facebook全球活跃用户量已突破1.75亿大关。数据显示,全球20%的网民都使用Fa
  • 最近试用mysql proxy,遇到若干问题,好在一一找到了解决方案,列出来备忘。这次使用的版本是0.6.x,也许新版本就没有这些问题了。无
  • 当你要使用data URI scheme的时候,你会发现,虽然他可以使用在绝大多数浏览器上,但无法再IE6和IE7上工作。不过值得庆幸的这一
  • ALTER TABLE将表更改为当前字符集。如果在执行ALTER TABLE操作期间遇到重复键错误,原因在于新的字符集将2个键映射到了相同值
  • 注释:在大多数的情况下,修改MySQL是需要有mysql里的root权限的,所以一般用户无法更改密码,除非请求管理员。方法1使用phpmya
  • 最近做网站期间遇到个问题,就是用到比较流行的lightbox效果,就是点击链接后会弹出个固定大小窗口,弹出后窗口下面的内容是被遮罩掉的,最近
  • 备注:Ken Henderson 从开发者的角度来阐述了SQL SERVER 2000内存管理的内部机制简介在本专栏中,我们将从一个开发者的
手机版 网络编程 asp之家 www.aspxhome.com