大橙子网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
目前,针对SQL Server数据库的应用级入侵已经变得越来越肆无忌惮,像SQL注入、跨站点脚本攻击和未经授权的用户访问等。所有这些入侵都有可能绕过前台安全系统并对数据库系统攻击。对于数据库管理来说,保护数据不受内部和外部侵害是一项重要的工作。SQL Server 正日益广泛的使用于各部门内外,作为数据库系统管理员,需要深入的理解SQL Server的安全性控制策略,以实现管理安全性的目标。那么,如何确保SQL Server数据库的安全性呢,我们可以从以下两方面考虑。it培训机构
让客户满意是我们工作的目标,不断超越客户的期望值来自于我们对这个行业的热爱。我们立志把好的技术通过有效、简单的方式提供给客户,将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴,公司提供的服务项目有:域名注册、虚拟空间、营销软件、网站建设、嘉祥网站维护、网站推广。
首先、采取业界已存在的且比较成熟的数据库审计解决方案来实现
实时记录用户对数据库系统的所有操作(如:插入、删除、更新、用户自定义操作等),并还原SQL操作命令包括源IP地址、目的IP地址、访问时间、用户名、数据库操作类型、数据库表名、字段名等,如此,可实现对数据库安全事件准确全程跟踪定位。
实时检查数据库不安全配置、数据库潜在弱点、数据库用户弱口令、数据库软件补丁层次、数据库潜藏木马等。
进行全方位的多层(应用层、中间层、数据库层)的访问审计,通过多层业务审计,实现数据操作原始访问者的精确定位。
针对于数据库的操作行为进行实时检测,并预设置风险控制策略,结合对数据库活动的实时监控信息,进行特征检测,任何尝试性的攻击操作都将被检测到并进行阻断或告警;并支持通过邮件、短信、SYSLOG、SNMP、屏幕等方式告警。
其次、制定相关的数据库管理流程
不同的人员对数据库的操作职责不一样,所有人员对数据库的操作均需要事前审批,对一些非常重要的操作需要二级以上审批。申请操作时,需明确在什么人,什么时间,因为何事,对哪个数据库(或表),进行什么样的操作,可能有什么样的风险及采取的补救措施等。
数据库数据的丢失以及数据库被非法用户的侵入使得数据库管理员身心疲惫不堪,数据库安全性问题对于数据库管理员来说简直就是噩梦。对于数据库数据的安全问题。本文对围绕数据库的安全性问题提出了一些安全性策略,希望对数据库管理员有所帮助。
两种安全模式:
Windows 认证模式:用户通过一个现成的Windows用户帐号来连接服务器。当一个用户试图与一个服务器连接的时候,SQL Server将会认证用户的Windows帐号的名称和密码。用户不能同时进入网络和SQL Server,只能进入其中的一个。这一方法也被称为一个被依赖的连接。
混合模式:这一模式将Windows认证模式和SQL Server认证联接在一起。用户可以通过一个Windows用户帐号进行连接,这正如Windows认证一样。但是,你也可以在SQL Server中直接建立用户帐号。每一个SQL Server帐号都存储了一个用户名和密码。
我们建议在可能的情况下都使用Windows认证模式。然而,混合模式很可以使用,特别是在SQL Server 7.0(或更早版本)都可以使用。.对于早期的SQL Server版本,SQL Server认证存在一些缺点。Windows认证已经集成了操作系统的安全系统,这就提供了比SQL Server认证更多的安全特性,很容易的使用,效率更加高,安全性更加好。在设计开始的时候,你应该认真考虑选择哪一种模式最为合适。
密码
无论采用哪一些模式,你应该记住在SQL Server中为系统管理者(sa)设置一个密码。当安装SQL Server时,安装程序会自动建立一个带有SQL Server注册名称(sa)和一个空白密码的管理用户。如果你保持这些用户设置原样而使用混合安全模式,任何具备一点SQL Server基础知识的用户都可以很容易地进入到你的数据库中并做任何他想要做的事情。如果你使用的是Windows认证模式,在理论上你无需为sa用户设置一个密码,因为SQL Server注册不会接受这些的设置。但是设置是一个很良好的操作,尤其是当你被迫转移到将来使用的混合模式的时候。
如果安全模式已经启动,注册将成为关键。你必须使用正确的.方法来启动程序,注册也是同样的,如果你不能正确地输入用户名和密码,程序将不能连接到网络,同时也不能连接到SQL Server。
作为一个管理者,一旦你已经启动了程序,你就做好安全管理的准备。可以通过定义以下的特性而实现:
用户(帐号):一个SQL Serve安全帐号代表着一个唯一的用户。一个用户也只有一个Windows帐号或者一个SQL Server注册,这与数据库中的用户帐号相统一。
组(帐号):每一个用户都属于一个或多个组,这由认证模式决定。每一个组都具有特定许可。作为一个组的成员,你将获得所有组的许可。
对象所有权:所有权属于建立对象的用户。所有者可以将访问权限分配给用户。如果你是一个视的所有者,你还可以决定哪些用户可以通过视来查看数据。
许可:一个许可代表着具有执行某些操作的权利,比如打开一个视或者更改一个存储程序。SQL Server承认许可的三种状态:GRANT给你一个用户访问;REVOKE删除访问;DENY防止用户访问对象。
任务:这是一个SQL Server安全帐号,可以将帐号的集合作为一个简单的单元来处理。任务定义在特定数据库中用户可以做哪些和哪些不可以做。
设计过程应该用效地定义哪些地方需要进行安全设置和如何设置。在这一过程之前你应该从两个方面考虑:
敏感数据;
敏感数据包括所有可能的数据,包括整个数据库中的所有数据,虽然这样的安全级别很少存在。你的工作就是定义为敏感数据并进行保护。
你选择的认证模式和建立的注册将通过限制哪些用户可以进入到数据库而实施第一步安全步骤。
第二步就要列举可以访问数据库的所有用户,然后决定所有数据是否对所有的用户都适用。通常,你需要对一些数据进行保护,比如工资或者其他私人数据。这就意味着只有特定的用户可以访问和查看数据。你还可以设置哪些用户更改数据。
始终记住的一条规则是“最小权利”概念。如果有人在他的工作中不需要访问数据,那即不要给他访问的权限。应该避免所有的用户都具有sa用户的访问权限。
具体的建议
当进行安全设置的时候,经验也是一个很好的老师,但通常也会有适用于通用数据库的设计准则
从开始就获得数据库和对象的所有权。当建立一个新的数据库时,你将会成为数据库的所有者,并能够设置数据库中所有发生一切。你可以以管理者的身份注册数据库。然而,对象的所有权属于建立对象的用户。虽然这可能造成所有权的转移,但可以确定这些的注册能够被用于建立所有的对象。
理解所有权链。这一安全特性防止用户建立自己的视而偷看一些敏感数据。例如,假设你建立一个从两个表中集中的数据的视,如果你是这两个表的所有者,当你允许其他用户使用视的许可时,SQL Server不会检查表的有关许可。
使用视和存储程序以分配给用户访问数据的权利,而不是让用户编写一些直接访问表格的特别查询语句。通过这种方式,你无需在表格中将访问权利分配给用户。视和存储程序
也可以限制查看的数据。例如,如果你的雇员表格包含一些秘密的工资信息,你可以建立一个省略了工资栏的视。
如果用户从特定程序中进入你的程序,你可以建立程序任务。一个程序任务就是分配到特定程序的用户,并给予用户的有关许可。使用程序任务,用户不能直接地认证数据库,相反,他们先认证他们自己的程序,这就决定哪些程序任务与服务器相连接。
时刻注意程序补丁。不可否认的,程序补丁是一些诀窍的集合。程序的发布,更新等都会引入新的问题,使用程序补丁是防止外界干扰和保护数据的最好和最容易的方法。可以访问微软主页上的SQL Service Pack下载页,查看当前最新的程序补丁。
Microsoft建立了一种既灵活又强大的安全管理机制,它能够对用户访问SQL Server服务器系统和数据库的安全进行全面地管理。按照本文介绍的步骤,你可以为SQL Server 7.0(或2000)构造出一个灵活的、可管理的安全策略,而且它的安全性经得起考验。
一、验证方法选择
本文对验证(authentication)和授权(authorization)这两个概念作不同的解释。验证是指检验用户的身份标识;授权是指 允许用户做些什么。在本文的讨论中,验证过程在用户登录SQL Server的时候出现,授权过程在用户试图访问数据或执行命令的时候出现。
构造安全策略的第一个步骤是确定SQL Server用哪种方式验证用户。SQL Server的验证是把一组帐户、密码与Master数据库Sysxlogins表中的一个清单进行匹配。Windows NT/2000的验证是请求域控制器检查用户身份的合法性。一般地,如果服务器可以访问域控制器,我们应该使用Windows NT/2000验证。域控制器可以是Win2K服务器,也可以是NT服务器。无论在哪种情况下,SQL Server都接收到一个访问标记(Access Token)。访问标记是在验证过程中构造出来的一个特殊列表,其中包含了用户的SID(安全标识号)以及一系列用户所在组的SID。正如本文后面所介绍 的,SQL Server以这些SID为基础授予访问权限。注意,操作系统如何构造访问标记并不重要,SQL Server只使用访问标记中的SID。也就是说,不论你使用SQL Server 2000、SQL Server 7.0、Win2K还是NT进行验证都无关紧要,结果都一样。
如果使用SQL Server验证的登录,它最大的好处是很容易通过Enterprise Manager实现,最大的缺点在于SQL Server验证的登录只对特定的服务器有效,也就是说,在一个多服务器的环境中管理比较困难。使用SQL Server进行验证的第二个重要的缺点是,对于每一个数据库,我们必须分别地为它管理权限。如果某个用户对两个数据库有相同的权限要求,我们必须手工设 置两个数据库的权限,或者编写脚本设置权限。如果用户数量较少,比如25个以下,而且这些用户的权限变化不是很频繁,SQL Server验证的登录或许适用。但是,在几乎所有的其他情况下(有一些例外情况,例如直接管理安全问题的应用),这种登录方式的管理负担将超过它的优 点。
二、Web环境中的验证
即使最好的安全策略也常常在一种情形前屈服,这种情形就是在Web应用中使用SQL Server的数据。在这种情形下,进行验证的典型方法是把一组SQL Server登录名称和密码嵌入到Web服务器上运行的程序,比如ASP页面或者CGI脚本;然后,由Web服务器负责验证用户,应用程序则使用它自己的 登录帐户(或者是系统管理员sa帐户,或者为了方便起见,使用Sysadmin服务器角色中的登录帐户)为用户访问数据。
这种安排有几个缺点,其中最重要的包括:它不具备对用户在服务器上的活动进行审核的能力,完全依赖于Web应用程序实现用户验证,当SQL Server需要限定用户权限时不同的用户之间不易区别。如果你使用的是IIS 5.0或者IIS 4.0,你可以用四种方法验证用户。第一种方法是为每一个网站和每一个虚拟目录创建一个匿名用户的NT帐户。此后,所有应用程序登录SQL Server时都使用该安全环境。我们可以通过授予NT匿名帐户合适的权限,改进审核和验证功能。
第二种方法是让所有网站使用Basic验证。此时,只有当用户在对话框中输入了合法的帐户和密码,IIS才会允许他们访问页面。IIS依靠一个NT 安全数据库实现登录身份验证,NT安全数据库既可以在本地服务器上,也可以在域控制器上。当用户运行一个访问SQL Server数据库的程序或者脚本时,IIS把用户为了浏览页面而提供的身份信息发送给服务器。如果你使用这种方法,应该记住:在通常情况下,浏览器与服 务器之间的密码传送一般是不加密的,对于那些使用Basic验证而安全又很重要的网站,你必须实现SSL(Secure Sockets Layer,安全套接字层)。
在客户端只使用IE 5.0、IE 4.0、IE 3.0浏览器的情况下,你可以使用第三种验证方法。你可以在Web网站上和虚拟目录上都启用NT验证。IE会把用户登录计算机的身份信息发送给IIS,当 该用户试图登录SQL Server时IIS就使用这些登录信息。使用这种简化的方法时,我们可以在一个远程网站的域上对用户身份进行验证(该远程网站登录到一个与运行着Web 服务器的域有着信任关系的域)。
最后,如果用户都有个人数字证书,你可以把那些证书映射到本地域的NT帐户上。个人数字证书与服务器数字证书以同样的技术为基础,它证明用户身份标 识的合法性,所以可以取代NT的Challenge/Response(质询/回应)验证算法。Netscape和IE都自动在每一个页面请求中把证书信 息发送给IIS。IIS提供了一个让管理员把证书映射到NT帐户的工具。因此,我们可以用数字证书取代通常的提供帐户名字和密码的登录过程。
由此可见,通过NT帐户验证用户时我们可以使用多种实现方法。即使当用户通过IIS跨越Internet连接SQL Server时,选择仍旧存在。因此,你应该把NT验证作为首选的用户身份验证办法。
三、设置全局组
构造安全策略的下一个步骤是确定用户应该属于什么组。通常,每一个组织或应用程序的用户都可以按照他们对数据的特定访问要求分成许多类别。例如,会 计应用软件的用户一般包括:数据输入操作员,数据输入管理员,报表编写员,会计师,审计员,财务经理等。每一组用户都有不同的数据库访问要求。