DB2数据库安全.docx
- 文档编号:28609829
- 上传时间:2023-07-19
- 格式:DOCX
- 页数:107
- 大小:800.88KB
DB2数据库安全.docx
《DB2数据库安全.docx》由会员分享,可在线阅读,更多相关《DB2数据库安全.docx(107页珍藏版)》请在冰豆网上搜索。
DB2数据库安全
∙DB2数据库安全总述
2007-06-2819:
12:
04
DB2中有三种主要机制允许DBA实现数据库安全性计划:
认证、授权和特权
DB2内的五种不同权限级别是SYSADM、SYSCTRL、SYSMAINT、DBADM和LOAD。
登录到安装有DB2的机器。
发出下列命令:
db2attachtodb2inst1
这里,认证是隐式执行的。
使用的是登录到机器时所使用的用户标识,并且假定操作系统已经验证了该用户标识。
db2connecttosampleusertst1usingmypass
db2connecttosampleusertst1usingmypassnewchgpassconfirmchgpass
改变密码
类型描述
SERVER在服务器上进行认证。
SERVER_ENCRYPT在服务器上进行认证。
在将密码发送给服务器之前,先在客户机机器上对密码进行加密。
CLIENT在客户机机器上进行认证(参阅处理不可信的客户机以了解例外情况)。
*KERBEROS认证由Kerberos安全性软件执行。
*KRB_SERVER_ENCRYPT如果客户机设置为KERBEROS,则认证由Kerberos安全性软件执行。
否则,就使用SERVER_ENCRYPT。
*这些设置只对Windows2000操作系统有效。
要查看配置文件中的认证参数:
db2getdbmcfg
要将认证参数修改为server_encrypt:
C:
\PROGRA~1\SQLLIB\BIN>db2updatedbmcfgusingauthenticationserver_encrypt
C:
\PROGRA~1\SQLLIB\BIN>db2stop
C:
\PROGRA~1\SQLLIB\BIN>db2start
要将网关认证类型设置成SERVER,您必须在网关机器上发出下列命令:
db2catalogdatabasemyhostdbatnodend1authenticationdcs
db2terminate
注:
认证从不在网关本身上执行。
在DB2V8中,必须总是在客户机或主机数据库服务器上执行认证。
DB2权限控制数据库安全性计划的以下几方面:
授予用户的权限级别
允许用户运行的命令
允许用户读和/或修改的数据
允许用户创建、修改和/或删除的数据库对象
权限由特权组和较高级别的数据库管理器(实例级别)维护和实用操作组成。
在DB2所提供的五种权限中,SYSADM、SYSCTRL和SYSMAINT是实例级权限。
这意味着权限(作用的)范围包括实例级命令和对实例内的所有数据库所执行的命令。
这些权限只能指派给某个组;可以通过DBMCFG文件来进行指派。
DBADM和LOAD权限是为了某个特定的数据库而指定给某个用户或组的。
可以用GRANT命令来显式地完成这一工作。
通过发出以下命令,用户可以确定他们具有哪些权限及数据库级别的特权:
db2getauthorizations
由于SYSADM用户是唯一允许更新DBMCFG的用户,因此他们也是唯一允许向其它组授予任何SYS*权限的用户。
下面的示例演示了如何向组grp1授予SYSADM权限:
db2updatedbmcfgusingSYSADM_GROUPgrp1
记住,只有将实例停止然后重新启动,上面的更改才会生效。
此外,还要记住的是,如果您此时不是以grp1的成员身份登录的话,那么您可能就没有重新启动实例的权限!
您将不得不先注销然后再用正确的组中的标识重新登录,或者将您的当前标识添加到grp1中。
具有SYSCTRL权限的用户可以在实例内执行所有管理和维护命令。
然而,与SYSADM用户不同的是,除非向他们授予了访问数据库内任何数据所需的特权,否则他们就不能访问这些数据。
SYSCTRL用户可以对实例内的任何数据库执行的命令示例有:
db2start/db2stop
db2create/dropdatabase
db2create/droptablespace
db2backup/restore/rollforwarddatabase
db2runstats(可以对任何表执行该命令)
db2updatedbcfgfordatabasedbname
具有SYSADM权限的用户可以使用下列命令将SYSCTRL指派给某个组:
db2updatedbmcfgusingSYSCTRL_GROUPgroupname
具有SYSMAINT权限的用户可以发出的命令是具有SYSCTRL权限的用户所允许发出的命令的子集。
SYSCTRL用户只能执行与维护有关的任务,如:
db2start/db2stop
db2backup/restore/rollforwarddatabase
db2runstats(可以对任何表执行该命令)
db2updatedbcfgfordatabasedbname
注意:
具有SYSMAINT权限的用户不能够创建或删除数据库或表空间。
除非向他们授予了访问数据库内任何数据所需的特权,否则他们也不能访问这些数据。
如果具有SYSADM权限,那么您可以使用下列命令来将SYSMAINT权限指派给某个组:
db2updatedbmcfgusingSYSMAINT_GROUPgroupname
DBADM权限是一种数据库级权限而不是实例级权限。
总的来说,DBADM用户几乎能够完全控制数据库。
但DBADM用户不能执行类似下面的维护或管理任务:
dropdatabase
drop/createtablespace
backup/restoredatabase
updatedbcfgfordatabasedbname
然而,他们却可以执行下列任务:
db2create/droptable
db2grant/revoke(任何特权)
db2runstats(任何表)
DBADM用户还被自动授予数据库对象及其内容的全部特权。
由于DBADM权限是一种数据库级权限,因此可以将它指派给用户和组。
下列命令演示了授予DBADM权限的几种不同方法。
db2createdatabasetest
这条命令将对名为test的数据库的隐式DBADM权限授予发出该命令的用户。
db2connecttosample
db2grantdbadmondatabasetousertst1
只有SYSADM用户才能发出这条命令;它将对样本数据库的DBADM权限授予用户tst1。
注:
在授予DBADM权限之前,进行授予权限操作的用户必须已经连接到了样本数据库上。
db2grantdbadmondatabasetogroupgrp1
这条命令将DBADM权限授予组grp1中的所有人。
同样,只有SYSADM用户才能发出这条命令。
LOAD权限也被当作数据库级别的权限,因此可以将它授予用户和组。
正如同它的名字所暗示的那样,LOAD权限允许用户对表发出LOAD命令。
在填充具有大量数据的表时,通常使用LOAD这种执行更快的命令来替代插入或导入命令。
根据您希望执行的LOAD类型的不同,仅仅具有LOAD权限可能还是不够的。
还可能需要对该表具有特定特权。
具有LOAD权限的用户可以运行下列命令:
db2quiescetablespacesfortable
db2listtablespaces
db2runstats(任何表)
db2loadinsert(必须对表具有插入特权)
db2loadrestart/terminateafterloadinsert(必须对表具有插入特权)
db2loadreplace(必须对表具有插入和删除特权)
db2loadrestart/terminateafterloadreplace(必须对表具有插入和删除特权)
只有具有SYSADM或DBADM权限的用户才允许给用户或组授予或取消LOAD权限。
下列示例演示了LOAD权限是如何允许我们的用户将数据LOAD到名为sales的表中的。
假定已经发出了命令db2connecttosample。
db2grantloadondatabasetousertst1
db2grantinsertontablesalestousertst1
有了LOAD权限和插入特权,tst1就可以对sales表发出LOADINSERT、LOADRESTART或在LOADINSERT之后发出TERMINATE。
db2grantloadondatabasetogroupgrp1
db2grantdeleteontablesalestogroupgrp1
db2grantinsertontablesalestogroupgrp1
有了LOAD权限以及删除和插入特权,grp1中的任何成员都可以对sales表发出LOADREPLACE、LOADRESTART或者在LOADREPLACE之后发出TERMINATE。
查看(285)评论(0)收藏分享管理
∙DB2Web服务提供者的安全性
(1)
2007-06-2819:
10:
32
在本文中,我们将解释如何为DB2Web服务提供者应用程序启用安全性,这包括启用认证、设置授权和确保消息是加密的。
我们还将解释Web服务用户是如何被映射到数据库用户的。
IBM®DB2®Web服务提供者(或者WORF——Web服务对象运行时框架)允许我们容易地将数据库数据和存储过程暴露为Web服务。
这需要用户编写包含构成Web服务事务的数据库操作的XML文件。
这些操作可以是SELECT语句、INSERT/UPDATE/DELETE语句、存储过程以及XMLExtender操作。
本文描述如何约束用户访问这些可以更新或者获取数据库数据的操作。
什么是Web服务?
Web服务是一个面向消息的通信框架,它被设计为具有高度的互操作性和可扩展性。
消息是以XML格式进行交换并且通过SOAP(简单对象访问协议)进行描述的。
SOAP消息由一个包括头和主体的信封组成。
头包括一些关于消息的元数据,它可以是一个事务ID或者加密密钥。
主体包括实际的消息,它可以是一个订单或者保险报价。
Web服务提供者的实际接口是通过Web服务描述语言(WebServiceDescrīptionLanguage,WSDL)描述的。
这非常类似于C编程语言中的头文件。
WSDL告诉用户一个Web服务提供者理解的操作,以及该操作的输入和输出是什么。
WSDL还包括新的特定于Web服务的类型定义。
理解了WSDL之后,用户就可以为SOAP请求消息创建XML了。
用户还知道期望来自SOAP响应的XML是什么。
通常,有一些工具用于构建SOAP请求以及从SOAP响应提取数据。
可能使用的工具包括WebSphere®Studio和Microsoft®VisualStudio.NET。
请参阅参考资料中的一篇解释如何与VisualStudio.NET一起使用DB2Web服务提供者的文章。
通常,SOAP消息是通过HTTP发送的,但是还可能存在其他种类的传输,例如WebSphereMQ。
由于HTTP和XML等标准的广泛使用,所以Web服务具有很强的互操作性。
服务器端和客户端可以使用不同的操作系统、应用服务器和开发工具。
访问Web服务并不需要安装像数据库驱动程序这样的客户机代码。
DB2Web服务提供者
DB2Web服务提供者是Java™应用服务器(比如WebSphereApplicationServer和JakartaTomcat)的一个扩展。
Web服务提供者将允许您在XML文件中编写数据库操作并且将这些操作转换为一个Web服务。
这种XML文件的一个示例是DADX(文档访问定义扩展)文件,它看起来类似于:
清单1.一个简单的DADX文件
xmlns:
xsd="http:
//www.w3.org/2001/XMLSchema">
ListcontentsofDEPARTMENTtable.
Listseachdepartment.
SELECT*FROMDEPARTMENTWHEREdeptno=:
deptno
Web服务提供者运行时在运行时做下列事情:
从DADX文件创建WDSL。
从DADX创建一个基于浏览器的测试环境。
使用DADX文件作为Web服务的实现。
由于用户只需要编写DADX文件,因此并不需要理解WSDL规范。
一个适度复杂的DADX的WSDL长度可能有许多页。
运行时将确定一个SQL操作的参数(比如本例中的deptno)并且还分析该SQL结果集的元数据,以创建正确的XML输出类型。
用户将完成下列步骤,以创建一个DADX应用程序:
创建一个DADX文件。
创建和部署一个Web应用程序。
访问基于浏览器的测试环境,例如,http:
//localhost:
9080/services/sample/list.dadx/TEST。
修改Web应用程序中的DADX并再次调用测试。
DADX中的查询是作为一个实现工作的,因为运行时执行查询并将结果格式化为XML。
这意味着用户不需要用编程语言编写代码并理解Web服务引擎的编程模型。
如果用户自己希望为WebSphere编写Web服务,他将需要编写Java代码或者EnterpriseJavaBean(EJB)来调用SQL。
用于访问测试环境的URL包括DADX名称(例如,list.dadx)以及其他部分。
其中一个部分是“services”,它是DADX所在的Web应用程序的名称或者上下文根。
另一个部分(mydatabase)是一个组名称。
组是Web应用程序中的DADX文件的容器。
组之间相互共享配置设置,比如用于连接数据库的数据库用户。
在后面,我们将看到如果配置数据库用户。
安全性方面
Web应用程序或者Web服务应用程序的安全性由许多部分组成。
其中许多安全性方面对于数据库管理员是已知的。
本节解释在WebSphere中这是如何工作的。
这里我们关注的事情是:
识别/认证
授权
完整性/机密性
识别意味着告诉该服务您是谁。
例如,您可以作为用户“dirk”进行连接。
当然,如果没有认证,这就没有太多的意义。
通过认证,您提供一个证明,表示您的确就是所声称的那个人。
这个证明可以是一个口令或者某种安全令牌。
这对于使用“CONNECTTOsampleUSERdirkUSINGmypassword”SQL命令的用户来说是熟悉的。
授权负责为用户允许或者拒绝特定的事情。
在数据库系统中,这是通过“GRANT”语句完成的。
我们将解释在Web服务上下文中,用户是如何做类似“GRANTSELECT,INSERTONCALENDARTOUSERPHIL”的事情的。
完整性是一种确保消息没有被篡改的方法。
通过使用机密性,我们可以确保没有人能够读取在非安全的通信隧道上传输的消息。
确保机密性的一个例子是使用加密。
Web服务安全性
您可以通过以下两种方式获得Web服务安全性:
传输级安全性。
消息级安全性。
传输级安全性意味着安全机制是通过传输所提供的方法获得的。
例如,您可以通过使用HTTPS(安全HTTP)获得机密性。
HTTPS将加密所有被交换的HTTP消息。
如果Web服务切换到另一个传输,比如不具有加密通信隧道的非安全的HTTP,那么消息将再次以明文传输。
本文解释如何为DB2Web服务提供者设置传输级安全性。
虽然还没有介绍消息级安全性,但是我们先来看看这个特性。
由于您还希望非安全传输上的安全性,因此需要使用消息级安全机制,比如WS-Security。
WS-Security允许用户使用多种安全性元素,比如用户名、签名和加密机制以及安全令牌。
与传输级安全性相比,WS-Security允许用户只是加密消息的一部分(例如,信用卡号码)而不是加密客户机和服务器之间的完整通信。
它还允许不同的识别和认证机制。
图1.WSSecurity路线图
如图1所示,WS-Security是一个Web服务安全性标准,其他的Web服务安全性标准构建在它的上面。
IBM和Microsoft发布了WSSecurity的这个路线图(请参阅参考资料小节)。
其他的标准简要描述如下:
WS-Policy:
描述中间点和端点上的安全策略(或者其他商业策略)的能力和约束(例如,所需的安全令牌,所支持的加密算法,隐私权规则)。
WS-Trust:
描述使Web服务能够安全地进行互操作的信任模型的框架。
WS-Privacy:
描述Web服务提供者和请求者如何声明主题隐私权首选项和组织隐私权实践声明的模型。
WS-SecureConversation:
描述如何管理和认证各方之间的消息交换,包括安全上下文交换以及建立和继承会话密钥。
WS-Federation:
描述在异构的联合环境中如何管理和代理信任关系,包括支持联合的身份。
WS-Authorization:
描述如何管理授权数据和授权策略。
在下面,我们讨论DB2Web服务提供者安全性所引起的问题,并展示如何在WebSphere中解决这些问题。
在WebSphere中实现Web服务安全性
DB2Web服务提供者的安全性问题
为DB2Web服务提供者设置安全性的管理员的问题是识别和认证的问题,这个我们已经提到过。
我们将要求用户通过HTTP认证进行客户认证来解决该问题。
HTTP认证意味着HTTP请求必须具有一个带有用户标识和口令的HTTP头字段。
当您在浏览器中遇到一个要求认证的Web页面时,您通常得到一个对话框,让您为该Web页面输入您的用户标识和口令。
在SOAP情况下,必须修改客户机程序以发送用户标识和口令。
我们通过对URL使用J2EE(Java企业版)授权机制来解决授权问题。
由于所有的Web服务请求都基于发送消息到特定的URL,我们可以配置Web应用程序使得只有特定的用户可以发送请求给特定URL。
URL可以是一个DADX,或者是一组完整的DADX文件。
我们将在后面详细讨论。
机密性和完整性可以通过要求用户使用HTTPS来简单地得到解决。
这意味着所有网络传输都是加密的,并且消息篡改也可以检测到。
这里还有最后一个问题,就是将利用WebSphere认证的用户映射到执行DADX中的语句的数据库用户。
由于我们的运行时不能确定在HTTP认证中所使用的用户标识和口令,因此我们不能使用该用户连接到数据库。
在某些情况下,如果应用服务器用户不同于数据库用户,这甚至是不现实的。
这种情况的一个例子是应用服务器和数据库服务器运行在不同的机器上并且都使用操作系统作为用户注册表。
相反,您可以在组(包含多个DADX文件)上指定一个用户标识和口令。
该用户将被用于执行组中的DADX中的所有SQL语句。
如果希望区分执行SQL的用户,您可以创建单独的组,比如针对会计部门的用户创建一个组,针对工程部门的用户创建一个组。
准备工作
对于下面的步骤,我们假定您已经按照安装所推荐的,从DB2V8安装中的sqllib\samples\java\Websphere目录下,将dxxworf.zip解压到c:
\worf。
您还需要遵循安装指令。
您不需要安装示例Web应用程序services.war,因为我们在下面的步骤中将要修改它。
如果已经部署services.war,这是可以接受的,因为我们将要把该示例war部署为一个不同的Web应用程序。
我们将使用应用服务器工具集(ApplicationServerToolkit,ASTK)来修改示例war文件,以增加安全性约束。
ASTK非常类似于WebSphereStudio,因此如果用户喜欢用WebSphereStudio,也能达到同样的效果。
第一步是将示例war文件导入到ASTK中。
图2中描述了这一步。
图2.导入示例war文件
输入您希望添加安全性约束的war文件的位置。
图3.指定war文件的位置
我们创建一个名为“SecureDADX”的新的Web应用程序,该应用程序将包括DADX文件和其他配置文件。
图4.指定Web应用程序的名称
同时,还将示例war文件从符合J2EE1.2迁移到符合J2EE1.3。
选择SecureDADXWeb模块,右击并选择Migrate和J2EEMigrationwizard。
这允许我们在后面使用WebSphere5DataSource。
我们已经导入Web应用程序,现在可以针对安全性对它进行修改了。
下一步是在war文件中设置数据库连接。
查看(117)评论(0)收藏分享管理
∙DB2Web服务提供者的安全性
(2)
2007-06-2819:
09:
27
在本文中,我们将解释如何为DB2Web服务提供者应用程序启用安全性,这包括启用认证、设置授权和确保消息是加密的。
我们还将解释Web服务用户是如何被映射到数据库用户的。
设置数据库用户
针对完整的DADX文件组,配置数据库用户。
您可以以明文形式或base64编码的形式在叫做group.properties的配置文件中输入用户标识和口令,来设置数据库用户。
但是即使利用编码,这并不提供真实的安全性,因为口令并没有被加密。
补救措施是设置Web服务提供者使用一个数据源(DataSource),然后在WebSphere中为该数据源设置用户。
该方法的另一个优点是您可以对于多个数据源使用连接池。
在下一步中,为dxx_sample组打开组配置文件,如图5所示。
您可以切换到位于窗口左中部的“ProjectNavigator”视图来查看该项目中的所有文件。
到该文件的路径是“SecureDADX/JavaResources/groups.dxx_sample/group.properties”。
修改前面两个配置参数为:
initialC
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- DB2 数据库 安全