利用 IBM InfoSphere Guardium 监控和审计 IBM DB2 for i 数据库活动

确保合规性并创建一个防篡改的审计跟踪

IBM® InfoSphere® Guardium® 是一个企业信息审计和保护解决方案,可帮助企业保护和审计信息。这些信息可以是各种的关系型或者非关系型数据源,例如 Oracle、Teradata、IMS、VSAM、Microsoft® SharePoint、IBM Netezza®、IBM DB2® for z/OS® 以及 DB2 for Linux, UNIX and Windows。随着 InfoSphere Guardium V9.0 的推出,现在DB2 for i 能够作为其中的一个数据源,使您能够监控通过原生接口和 SQL 执行的访问。本文简要概述了 InfoSphere Guardium 的架构,描述了如何配置访问权限(包括性能最佳实践),并介绍了如何访问数据活动报告。

Kathy Zeidenstein, 高级软件工程师,Enablement, IBM

作者照片:Kathy ZeidensteinKathy Zeidenstein 在 IBM 工作了很多年。目前她在 IBM Data Studio 支持团队工作。在担任这个职务之前,她是 IBM OmniFind Analytics Edition 的产品营销经理。



Mark J. Anderson, DB2 for i 首席架构师, IBM

Mark 是 DB2 for i 资深工程师和首席架构师。他的职责是提供针对 DB2 for i 的架构、设计和实现的主要技术。Mark 的整个职业生涯以数据库技术为中心,他曾是 AS/400 上的第一次 SQL 实现的主要负责人(并为此获得了企业奖项)。他是 IBM SQL 语言委员会的一名成员,该委员会负责为 IBM 定义新 SQL 支持,并为 ISO 和 ANSI SQL 标准做出了大量贡献。



2013 年 3 月 28 日 (最初于 2012 年 10 月 09 日)

概述

InfoSphere Guardium 是一个企业信息数据库审计和保护解决方案,可帮助企业保护和审计信息。这些信息可以是各种的关系型或者非关系型数据源。例如 Oracle、Teradata、IMS、VSAM、Microsoft SharePoint、IBM Netezza、DB2 for z/OS 和 DB2 for Linux, UNIX and Windows。随着 InfoSphere Guardium V9.0 的推出,现在DB2 for i 能够作为其中的一个数据源,使您能够监控通过原生接口和 SQL 执行的访问。

本文简要概述了 InfoSphere Guardium 的架构,描述了如何配置访问权限(包括性能最佳实践),并介绍了如何访问数据活动报告。

InfoSphere Guardium 简要介绍

IBM InfoSphere Guardium 解决方案诞生的初衷是为了解决客户实施自动化和可审计的数据安全最佳实践的需求。InfoSphere Guardium 通过安装在数据库服务器端(或文件共享、Microsoft SharePoint)的轻量级软件探测器(请参阅图 1)持续监控数据库事务。这些探测器(称为 S-TAP,表示 software tap)监控全部数据库事务,包括那些高权限用户发起的事务。S-TAP 无需对数据库或其应用程序做出任何更改。

这些探测器将事务转发到网络上的一个加强收集器中,并在收集器中将事务与之前定义的策略进行对比,以检测是否违规。系统可采用多种基于策略的行为响应,包括生成警报以及对于某些数据库实时阻止当前的事务。(目前,在 DB2 for i 数据库活动监控中无法使用阻止操作。)

图 1. 图 1. InfoSphere Guardium 数据库活动监控
InfoSphere Guardium 数据库活动监控

InfoSphere Guardium 支持多种部署方式,以支持超大规模和跨地域的分布式基础架构。

这里仅介绍了 InfoSphere Guardium 的一些基本功能,所以请参阅参考资料一节,了解有关 InfoSphere Guardium 功能的更多信息,包括帮助您发现敏感数据的数据分类,以及帮助您查找基础架构弱点的漏洞评估。请注意,并非所有数据源都可以利用全部功能。

有哪些新增内容?

在过去,IBM i 监控的 InfoSphere Guardium 支持是通过三种主要方法提供的:

  • 审计日志条目 (QSYS/QAUDJRN)的导入和后续的分析及报告

    尽管 IBM i 中的审计日志支持提供了出色的可审计事件支持,但尽管 IBM i 中的审计日志为审计事件提供了出色的支持,但与其他 Guardium 数据库产品支持相比,审计条目中包含的细节还是非常有限。举例来说,SQL 语句和变量值不会被审计日志记录在 QAUDJRN 中。而且,因为需要导入和导出数据,因此不属于最优的实时解决方案。

  • Database Monitor 监控数据的导入和后续的分析及报告

    可以使用数据库监控器 (STRDBMON) 来捕获 SQL 语句,并将其写入数据库表。随后,应该将表导入 Guardium 收集器。尽管这种方法将捕获 SQL 语句、变量等;但数据库监控主要用于性能分析。这导致大量仅在性能分析中有意义的数据被捕获,造成大量的存储和处理资源浪费。除此之外,支持需要一个导入,从而导致巨大的存储和处理资源的消耗。而且,因为需要导入操作,因此不属于最优的实时解决方案。另外,这种方法并未提供对数据库对象原生访问的任何支持。

  • 通过网络监控捕获 SQL 访问

    虽然这种支持能够实时捕获通过网络传递的 SQL 语句,但运行在 IBM i 服务器的程序、存储过程和函数中的任何 SQL 语句,都无法得到监控。这种方法并未提供对任何数据库对象原生访问的任何支持。

InfoSphere Guardium 9.0 版本引进的新方法提供了一种集成化解决方案,能克服前几种方法的局限性。

  • 无论是客户端发起的 SQL 访问,还是 IBM i 服务器发起的 SQL 访问,都能被到捕获和审计。
  • 在审计日志中捕获的原生数据访问,能够被捕获并将其发送至 InfoSphere Guardium 收集器。
  • SQL 访问和原生访问均实时发送至 InfoSphere Guardium 收集器。
  • 这将捕获比审计日志中更详细的信息,包括 SQL 语句、变量值、客户端特殊寄存器、接口信息、用户、作业、传输控制协议/互联网协议 (TCP/IP) 地址和端口。然而,与传统数据库监控不同的是,此时仅捕获与安全相关的数据,并将其发送至 InfoSphere Guardium 收集器。这能显著地减少存储和资源消耗。
  • 审计者能够在IBM i 服务器上指定过滤条件从而只捕获需要的数据。举例来说,指定审计特权用户通过SQL或者原生数据访问方式进行的操作会变的十分简单。
  • InfoSphere Guardium 收集的数据不会写入 IBM i 服务器上的磁盘之中,这就在一定程度上提供了安全日志记录。

新方法主要用于审计数据库访问。如果您需要对更广泛的非数据库对象访问进行审计,那么可以沿用导出和导入审计日志的现有 IBM i 审计支持。


针对 DB2 for i 的 InfoSphere Guardium 数据库活动监控简介

如上一节所述,InfoSphere Guardium Version 9.0 数据库活动监控为 DB2 for i 提供了更加具体的审计信息,其中包括:

  1. 会话起始时间和结束时间
  2. 对象名称(例如,表或视图)
  3. 用户
  4. SQLSTATE
  5. 作业和作业编号
  6. SQL 语句和变量
  7. 客户端特殊寄存器值
  8. TCPIP 地址和端口
  9. 接口信息,例如 ODBC、ToolboxJDBC、原生 JDBC、.NET 等

此类信息可用于创建活动报告,帮助客户满足审计需求,并对未经授权的活动生成警报。图 2 展示了系统中特定用户发起的某些数据库活动,包括数据的概要版本和更加详细版本的数据。务必牢记,InfoSphere Guardium 报告基础架构极为强大,不但具备警报功能,而且还可以通过自动化形成可重复、定期计划型审计流程。

图 2. 图 2. SQL 活动报告样例
SQL 活动报告样例

利用 InfoSphere Guardium S-TAP,可以监控 DB2 for i 的 SQL 和原生数据库应用程序编程接口 (API) 流量。其配置类似于其他数据库 S-TAP,因为对数据库服务器的处理器占用率较低,数据库事件将发送至 InfoSphere Guardium 收集器,以便通过环境中其他受监控的数据源生成报告和警报。

可以将两种数据源发送至 InfoSphere Guardium(参见图 3):

  • SQL 性能监控器(也称为数据库监控器)中的 SQL 应用程序对应数据
  • 针对使用非 SQL 接口的应用程序的 来自QSYS/QAUDJRN 的审计条目

DB2 for i S-TAP 需要使用 Portable Application Solutions Environment(便携式应用解决方案环境) (PASE),在拥有 *JOBCTL 权限(或者 QIBM_DB_SYSADM 功能使用权限)的用户通过 InfoSphere Guardium 用户界面启动和停止 DB2 for i S-TAP 时,该环境会根据需要自动启动和停止。

图 3. 图 3. 数据库活动监视的两种信息源
数据库活动监视的两种信息源

需求

集成要求具备以下先决条件:

  • 在 IBM i 上:
    • 至少具备以下 DB2 for IBM i PTF 组:
      • Release 7.1 SF99701 Level 18
      • Release 6.1 SF99601 Level 28
      • IBM i 版本6.1需要一个附加的PTF: 5761SS1 SI48455
    • 请参阅 DB2 for IBM i 2012 Group PTF Schedule,订阅或查看 DB2 for IBM i PTF 组时间表和可用性。
    • 许可程序 5722SS1-33 Portable App Solutions Environment (PASE) for i 是操作系统的免费、可选安装组件。确认您的 IBM i 服务器中已经安装了 PASE。如果没有安装,请参阅 DB2 for i 信息中心
  • IBM InfoSphere Guardium V9.0 设备(配置为收集器)和 Standard Activity Monitoring for Databases 软件授权。

InfoSphere Guardium 设备

InfoSphere Guardium 数据安全性和合规性解决方案可采用以下形式提供:

  • 经过完整配置的软件解决方案,在 IBM 提供的物理设备上交付。
  • 可直接在您自己的硬件上部署,或者作为虚拟设备部署的软件映像。

在尝试监控 DB2 for i 之前,请务必在 IBM 支持网站中检查可能需要的其他补丁。

本文并未提供有关 IBM InfoSphere Guardium 设备安装和配置的信息,并假设您至少已经有一台设备连接到 IBM i 服务器。

收集的内容

由 QAUDJRN 发送的信息与由数据库监控器发送的信息并非完全相同。下表介绍了各方法提供的信息。

表 1. 表 1.可为审计而收集的数据库监控器数据与审计日志数据
审计数据SQL 监控器审计日志
作业名称
作业用户
作业编号
起始时间
结束时间 始终与起始时间相同
SQLSTATE 08001 表示无效密码 (PW) 以及普通审计记录 (GR) 42501 权限错误(AF) 00000 表示其他全部
SQLCODE -30080 表示无效密码 (PW) 以及普通审计记录 (GR) -551 表示权限(AF)。
0 表示其他全部
SQL 语句 是 – 限制为 60K 否 - 转为基本日志条目描述
SQL 变量 是 - 限制为 1000 字节
接口 始终是 QAUDJRN
客户端应用程序名称 是,
客户端用户 ID
客户端工作站
客户端清算帐户
客户端程序
当前用户
线程 ID
程序模式 是,如果通过程序或服务程序执行了语句 是,如果通过程序或服务程序执行了语句
程序名称 是,如果通过程序或服务程序执行了语句 是,如果通过程序或服务程序执行了语句
客户端 IP 地址
本地或服务器端口号
RDB 名称
行数 是,仅适用于 INSERT、DELETE、UPDATE、MERGE、OPEN*、VALUES INTO、CREATE TABLE AS、DECLARE GLOBAL TEMPORARY TABLE AS 和 SET VARIABLE

*OPEN 在 InfoSphere Guardium 报告中显示为 SELECT。

请注意,供 InfoSphere Guardium 审计使用的数据库监控器不包含与安全审计无关的事件。举例来说,FREE LOCATOR 或 RELEASE 等活动是不会被审计的。EXECUTE 不会被审计,但所运行的 SQL 语句会被审计。PREPARE 不会被审计,但所有授权错误都会被审计。


为 QAUDJRN 审计配置 DB2 for i(可选)

如果已经在 IBM i 上配置了审计,或者您仅仅对 SQL 审计感兴趣,那么可以跳过这一步。

在 DB2 for i 服务器上,创建 QSYS/QAUDJRN 日志,若尚未启用审计,请启用审计。有关设置安全性审计的更多信息,请参阅 IBM i 信息中心

举例来说,在 IBM i 命令行中执行以下命令:

CRTJRNRCV JRNRCV(QSYS/RCV1)
CRTJRN JRN(QSYS/QAUDJRN)
 JRNRCV(QSYS/RCV1) DLTRCV(*YES)

随后,设置 QAUDCTL、QAUDLVL 和 QAUDLVL2 系统值,指定所需审计的层次。例如:

CHGSYSVAL SYSVAL(QAUDCTL) 
VALUE('*AUDLVL *OBJAUD')
CHGSYSVAL SYSVAL(QAUDLVL) 
VALUE('*CREATE *DELETE *OBJMGT *SECURITY *SERVICE *SYSMGT *SAVRST');

如果您仅希望审计特定用户,请使用 CHGUSRAUD 命令为用户更改审计。例如,以下命令将为用户 MJA(可能是您的一名特权用户)启用多种审计。例如:

CHGUSRAUD USRPRF(MJA)
 OBJAUD(*ALL) AUDLVL(*CREATE *DELETE *OBJMGT  
*SECURITY *SERVICE *SYSMGT *SAVRST *AUTFAIL)

您可以使用 CHGOBJAUD 命令为特定对象更改审计。例如,以下命令将对 PRODLIB 架构中的所有表、视图、索引和别名(*FILE 文件)启用审计:

CHGOBJAUD OBJ(PRODLIB/*ALL) OBJTYPE(*FILE) OBJAUD(*ALL)

相关 QAUDJRN 审计条目

QAUDJRN 审计日志可包含广泛的日志条目,但只有相关子集会得到处理,并发送至 InfoSphere Guardium 收集器。

为包含对象库、对象名称和对象类型的特定对象发送 QAUDJRN 日志条目。仅处理与以下 IBM i 对象类型相关的日志条目(无论它们是否与 SQL 对象相关):

  1. *FILE(表、视图、索引、逻辑文件、别名或设备文件)
  2. *SQLUDT(SQL 用户定义的类型)
  3. *SQLPKG(SQL 程序包)
  4. *PGM(存储过程、函数或程序)
  5. *SRVPGM(存储过程、函数、全局变量或服务程序)
  6. *DTAARA(SQL 序列)
  7. *USRPRF (用户文件对象)

QAUDJRN 日志条目可以包含广泛的审计条目类型。默认情况下,仅处理以下条目类型:

  1. ZR 读对象
  2. ZC 更改对象
  3. CA 权限变更
  4. AD 审计变更
  5. AF 权限故障
  6. CO 创建对象
  7. DO 删除对象
  8. GR 通用审计记录
  9. OM 对象删除或重命名
  10. PG 主要组更改
  11. PW 无效密码或用户 ID
  12. OW 更改所有者
  13. OR 恢复对象
  14. RA 恢复权限更改
  15. RO 恢复所有者更改
  16. RZ 恢复主要组更改
  17. SV 系统值更改

QAUDJRN 日志条目不含 SQL 语句。对于标识对象的日志条目,将连接并返回以下信息(取代 SQL 语句):

  1. 30 个字节的操作描述
  2. 10 个字节的系统库名称
  3. 10 个字节的系统对象名称
  4. 8 个字节的对象类型

例如:

ZC - Change object MJATST T1 *FILE

有关日志审计条目类型的更多信息,请参阅 IBM i 信息中心内的 “审计日志 (QAUDJRN) 条目类型”


安装 DB2 for i S-TAP

  1. 1. 在 IBM i 服务器的 PASE shell 环境中,创建一个临时目录来存放 S-TAP 安装脚本(例如 /tmp)。您可以使用 5250 模拟器软件,远程连接到 IBM i 系统,并输入 call qp2term 来进入 PASE shell
  2. 使用 FTP 将以下 S-TAP 安装 shell 脚本移动到该临时目录:uard-itap-9.0.0_rnnnnn-aix-5.3-aix-powerpc.sh
  3. 在相同的目录中,运行以下命令:

guard-itap-9.0.0_rnnnnn-aix-5.3-aix-powerpc.sh guardium_host_IP其中的 guardium_host_IP 是 InfoSphere Guardium 的 IP 地址。安装程序将安装在 /usr/local/guardium 目录下。

完成安装后,InfoSphere Guardium 会尝试启动实现活动监控的流程,并使用安装时指定的 IP 地址定位 InfoSphere Guardium 收集器。

为确认安装已成功、审计流程已启动,请以管理员的身份登录 InfoSphere Guardium Web 控制台,然后导航到 System View 选项卡,并检查 S-TAP 的状态,此时其状态应该显示为绿色,如图 4 所示。

图 4. 图 4. 系统监控器显示配置成功
系统监控器显示配置成功

故障排除

如果状态监控器中显示的 S-TAP 监控器并非绿色,请务必确保按照上述安装说明中的第 3 步正确操作。如果需要修改某些配置,例如指派了一个错误的 IP 地址,则可调用 start_istap_monitor Guardium CLI 命令,或者在 Guardium 控制台中创建状态报告,从 GUI 中调用该 API。要创建状态报告,请参阅标题为 “建议:在收集器中设置 DB2 for i 状态报告” 的小节中的说明

下一步建议是在 InfoSphere Guardium 收集器中配置 S-TAP,这允许您在 IBM i 服务器上查看 S-TAP 状态、按需更新配置并指定筛选值。

注意: DB2 for i S-TAP 不支持 IBM InfoSphere Guardium Installation Manager (GIM)。


建议:在收集器中设置 DB2 for i S-TAP 配置功能

如上一节所述,强烈建议您在 InfoSphere Guardium 收集器上设置配置功能。为此,可以创建一份配置报告,这允许您调用在 IBM i 服务器上运行的 API,启动和停止进程并更新配置文件 QSYS2.SYSAUDIT。

您必须具备 IBM i 上的 *JOBCTL 权限或 QIBM_DB_SYSADM 函数使用权限,才能对环境进行配置。

您还必须完成上述安装步骤,必须在 IBM i 服务器上启动监控器进程(通过确认 STAP 监控器显示为绿色来验证)。

在这一节中,您将完成以下步骤:

  1. 将 DB2 for i 定义为 InfoSphere Guardium 的已识别数据源,并测试连接。为此,您需要了解数据库名称、端口号和用户名密码。
  2. 通过 Custom Table Builder 进程,使用安装 DB2 for i S-TAP 时在 IBM i 上创建的配置文件中的信息来填充 InfoSphere Guardium 收集器。
  3. 创建 DB2 for i 配置报告。在这个报告界面中,您可以调用 API 来启动和停止监控进程、获取状态信息,并更新配置参数,包括筛选值。

定义 InfoSphere Guardium 的 DB2 for i 数据源

在这个步骤中,需要将 DB2 for i 定义为 InfoSphere Guardium 收集器可以识别的数据源。为此,可以创建一个自定义域,并使用 Datasource Builder 将 DB2 for i 定义为该域的数据源。

要使用 InfoSphere Guardium Datasource Builder 为 DB2 for i 创建数据源,请按以下步骤操作:

  1. 单击 Tools>Datasource Definitions,随后从 Application Selection 框中选择 Custom Domain 。单击 Next
  2. 在 Datasource Finder 中,单击 New 打开 Datasource Builder。选择 DB2 for i 作为数据库类型,然后添加合适的信息,包括端口、主机、服务名称(也就是数据库名称)和用户密码添加适当的信息。随后,为此定义输入一个有意义的名称。
  3. 单击 Apply,再单击 Test Connection,确保一切配置正确。

使用 Custom Table Builder 将 DB2 for i 配置设置上传到 InfoSphere Guardium 收集器

在这个步骤中,您要使用 InfoSphere Guardium 界面将配置信息从IBM i 系统中导出。为此,请按以下步骤执行。

  1. 调用 Report Building 界面。
  2. 在本地 InfoSphere Guardium 上创建一个定制表,保存来自 DB2 for i 数据源的配置数据。
  3. 将 DB2 for i 中的配置数据导入该定制表。

具体步骤如下:

  1. 单击 Tools>Report Building。(提示:您可能需要向下滚动,以便在左侧找到 Report Building 选项。)
  2. 单击 Custom Table Builder,选择 DB2 for i S-TAP Configuration,随后单击 Upload Data
  3. 单击 Add Datasource
  4. 在 Datasource Finder 的列表中找到您的 DB2 for i 数据源,单击 Add
  5. 在 Import Data 屏幕中,确保已显示了 DB2 for i 数据源。单击 Apply,随后单击 Run Once Now。此时您应该看到一条消息,表明操作已经成功完成。

创建配置报告来调用 InfoSphere Guardium 的应用编程接口(API)

这一节介绍了以下主要任务:

  • 定制 InfoSphere Guardium 接口来创建一个空间(即窗格)的可选任务,以便存储 DB2 for i 新配置报告。我们将此窗格命名为 My New Reports。(如果您以管理员以外的用户身份进行登录,那么应该已经存在 My New Reports 窗格。)
  • 搜索 DB2 for i S-TAP 配置报告,并将其添加到窗格的任务。得到配置报告之后,就可以调用 API 来更改 DB2 for i 的配置。

如需了解有关创建报告的更多信息,请参阅 InfoSphere Guardium 信息中心内的主题 “如何生成报告和定制参数”。

要创建报告窗格(仅在无此窗格时需要创建),请执行以下操作:

  1. 要创建 My New Reports 窗格,请在 Guardium UI 的右上角单击 Customize,随后单击 Add Pane 按钮,如下图所示。
  2. 为窗格指定新名称 My New Reports(请务必正确 拼写)。依次单击 ApplySave
  3. 此时 Customize Pane 中将会出现 My New Reports、单击该项左侧的图标。在 Layout 下拉菜单中,选择 Menu Pane,随后选择 Save。新窗格会以选项卡的形式出现。.

创建配置报告并将其添加到报告窗格中:

  1. 现在,您已经创建了可添加到新报告窗格的配置报告。为此,请单击左侧导航窗格内的 Report Builder。在右侧窗格的 Query 列表中,选择 DB2 for i S-TAP 配置,随后单击 Search
  2. 选择 DB2 for i S-TAP 配置,然后单击 Add to My New Reports 按钮,如下图所示(或者单击 Add to Pane… 将报告添加到现有窗格)。
  3. 单击 My New Reports 选项卡将会显示 IBM i 报告行。双击报告中的一行,然后单击 Invoke
  4. 现在就可以看到 InfoSphere Guardium API。单击 update_istap_config

DB2 for i S-TAP API 概述 一节提供了有关配置该报告中的 API 参数的更多信息,还简单介绍了其他 API。


建议:在收集器中设置 DB2 for i 状态报告

控制台中另外一份有用的便利报告是状态报告。添加此报告的步骤几乎与上一节 “建议:在收集器中设置 DB2 for i S-TAP 配置功能” 中所述的步骤完全相同。简言之:

  1. 以管理员的身份导航至 Tools>Report Building>Customer Table Builder
  2. 选择 DB2 for i Status,随后单击 Upload Data
  3. 添加数据源,然后在 Import Data 屏幕上依次单击 ApplyRun Once Now
  4. 导航到 Report Builder,搜索标题为 “DB2 for i Status” 的报告,随后单击 Add to My New Reports

下面是一个状态报告示例:

图 5.
图 5

您可以双击报告,启动或停止该服务器上的监控器,以及刷新状态。

图 6.
图 6

DB2 for i S-TAP API 概述

可以通过多种方法调用 InfoSphere Guardium API。在本文中,我们仅介绍了如何通过 DB2 for i S-TAP 配置和状态报告进行调用。正如上一节所述,您可以在报告中通过双击来调用 API,选中一个 API 后,可以打开该 API 支持的参数。在本例中,如图 7 所示,您可以使用 update_istap_config API 发送信息,例如 InfoSphere Guardium 收集器的 IP 地址;并启动或重启 i 系统上的审计进程。(如果该值为 “unchange”,则不会更新参数。)在 “筛选 IBM i 服务器上的审计数据” 一节中,我们将进一步了解筛选选项的值。

图 7. 图 5. 更新 IBM i S-TAP 配置的选项
更新 IBM i S-TAP 配置的选项

如果 start_monitor 的值设置为 1(默认值),那么在完成配置表更新后,将会启动(或者重启)i 服务器上的审计进程。在启动审计过程后,DB2 for i 上的存储过程会得到调用,用于:

  • 创建消息队列用于将条目发送至 InfoSphere Guardium 收集器,并利用一个视图及 INSTEAD OF 触发器(将条目发送至消息队列)启动全局数据库监控器
  • 启动 PASE 和 S-TAP。
  • 接收 QAUDJRN 中的日志条目,并将其添加到消息队列。

适用于 IBM i 的可调用 S-TAP API

为了支持脚本和自动化,可以从 InfoSphere Guardium 中的命令行接口 (CLI) 调用 S-TAP API。

下面简要介绍了用于 IBM i 监控的 API:

  • start_istap_monitor 将启动 IBM i 上的审计进程。
  • stop_istap_monitor 将停止 IBM i 上的审计进程。
  • get_istap_status 可用于检查审计服务器是否正在运行,并包含可用于故障排除和性能调优的其他有用信息(例如队列中的消息数、消息队列的大小等)。
  • get_istap_config 可用于查看配置参数,包括当前筛选选项。
  • update_istap_config 可用于更新 IBM i 上的配置设置。

在 S-TAP 连接到收集器时,System View 选项卡中将出现类似于图 4 所示的一行。

执行系统配置和审计之后,便可开始发挥 InfoSphere Guardium 的真正优势,运行报告、设置警报等。InfoSphere Guardium 拥有丰富的报告界面,但本文不打算对它们详细讨论。

创建报告时,根据您以管理员身份登录,还是以用户身份登录,导航路径可能有所不同。因此,务必阅读 InfoSphere Guardium 信息中心内的 “如何生成报告和定制参数” 以及 “如何通过存储的数据创建定制报告”,或者单击用户界面右上角的问号图标,进入帮助手册。

要使用显示数据库活动细节的报告,则需要以用户身份登录,本节内容以这项假设作为前提。请注意,InfoSphere Guardium 用户界面高度可定制,因此本文展示的屏幕截图和导航路径可能与您的站点中的并非完全相同。

此过程假设已经成功完成 S-TAP 配置,并且 DB2 for i 上出现了数据库活动。

  1. 单击 View 选项卡。(可选:将此选项卡重新命名为 Standard Reports,方法是单击选项卡上的铅笔图标,然后单击Edit Properties。)
  2. 此时您应该看到如下图所示的报告。
  3. 双击图片,这会打开一个表格视图,可双击后续报告表格向下钻取。
  4. 您可以向下钻取数据,例如
    1. 按服务器 IP 排列会话,随后双击一行
    2. 按用户排列会话,随后双击一行
  5. 继续探索报告。

性能建议

InfoSphere Guardium 集成旨在最大程度地减少捕获数据库活动并将其发送至 InfoSphere Guardium 收集器所需的处理。然而,在生产系统中,发送至收集器的数据量对于所需的处理量有着重大影响。因此,最好仅捕获能满足审计策略要求所必须的数据库活动。例如,仅包括特定的用户、特定的接口或者某些对象需要审计。

为实现最优性能和精简处理,您需要考虑两个层面的筛选:

  • DB2 for i 执行的筛选可以精简从审计服务器传递到 S-TAP 的信息量,以及从 IBM i 传递到 InfoSphere Guardium 收集器的信息量,从而降低生产系统开销。为执行此类筛选,您可以在 InfoSphere Guardium UI 的配置页面中指定筛选值。
  • 在 InfoSphere Guardium 收集器一方执行筛选,限制确实需要将在存储库内分析和存储的哪些信息发送至收集器。这能减少收集器中的存储占用,缩短审计人员的处理时间。为此,可以使用 InfoSphere Guardium 用户界面内的策略配置。

这一节还简要介绍了审计服务器作业的优先级设置。

在 IBM i 服务器上筛选审计数据

表 2 显示了配置 DB2 for i S-TAP 时可用的完整筛选字段列表(如图 5 所示)。要更改筛选值,可调用更新配置 API(如上一节所述),并更改恰当字段中的值。其中许多此类字段均映射到 IBM i 的 STRDBMON 命令中记录的筛选值。有关数据库监控器和监控器条目的更多信息,请参阅 IBM i 信息中心

重点:DB2 for i 中的筛选条件是可以组合的,但此时的筛选条件实际上是采用 AND(“与”)的关系连接在一起的。

表 2. 表 2. DB2 for i S-TAP 配置的筛选选项
筛选选项描述
FILTER_USER 指定的用户或组用户配置文件筛选器,如果有。
只可以指定一个用户名或一般用户名。
FILTER_JOB 指定的作业筛选器,如果有。
只可以指定一个作业名或一般作业名。
FILTER_TCPIP 指定的 TCP/IP 筛选器,如果有。
只可以指定一个 TCP/IP 地址。
FILTER_TABLE 指定的表筛选器,如果有。
最多可以指定 10 个文件名或一般文件名。指定的库名必须是系统架构名称(10 个字符的名称)。文件名可以是系统表名称,也可以是表名称(长名称或短名称)。
FILTER_PORT 指定的端口筛选器,如果有。
只可以指定一个端口筛选器。仅有 7.1 及其更高版本支持按端口筛选。
FILTER_CLIENT_ACCTING 指定的客户端帐户筛选器,如果有。
只可以指定一个客户端帐户筛选器。仅有 7.1 及其更高版本支持按客户端帐户筛选。
FILTER_CLIENT_APPLNAME 指定的客户端应用程序筛选器,如果有。
只可以指定一个客户端应用程序筛选器。仅有 7.1 及其更高版本支持按客户端应用程序筛选。
FILTER_CLIENT_PROGRAMID 指定的客户端程序筛选器,如果有。
只可以指定一个客户端程序筛选器。仅有 7.1 及其更高版本支持按客户端程序筛选。
FILTER_CLIENT_USERID 指定的客户端用户筛选器,如果有。
只可以指定一个客户端用户筛选器。仅有 7.1 及其更高版本支持按客户端用户筛选。
FILTER_CLIENT_WRKSTNNAME 指定的客户端工作站筛选器,如果有。
只可以指定一个客户端工作站筛选器。仅有 7.1 及其更高版本支持按客户端工作站筛选。
FILTER_RDB 指定的关系数据库筛选器,如果有。
最多可以指定 10 个关系数据库名称。
FILTER_SYSTEM_SQL 指定的系统 SQL 语句筛选器。
指定系统 SQL 语句是否应为可审计语句(Y 或 N)。默认值为 Y。
FILTER_AUDIT_ENTRY_TYPES 指定的 QAUDJRN 审计条目筛选器,如果有。
指定应该处理哪些审计日志条目类型。默认值为 'AD AF CA CO DO GD OM OR OW PG PW RA RO RZ ZC ZR'

下面的示例将描述利用筛选字段降低生产系统开销的部分通用最佳实践。

按用户筛选 (FILTER_USER)

如果您的企业仅需要筛选一组schema(库)中的对象,那么可以根据最多 10 个schema名称或通用名称执行筛选。如果您按schema或表筛选,则仅捕获数据操作 (DML) 语句。所有其他类型的语句均不会被捕获。例如,假设您希望仅捕获与 PROD1、NEWPROD1 和 PROD2 相关的数据操作 SQL 语句,则必须指定 FILTER_TABLE 值:

CRTUSRPRF USRPRF(GDAUDIT) STATUS(*DISABLED) GID(*GEN)
CHGUSRPRF USRPRF(admin1) SUPGRPPRF(gdaudit)
CHGUSRPRF USRPRF(admin2) SUPGRPPRF(gdaudit)
CHGUSRPRF USRPRF(admin3) SUPGRPPRF(gdaudit)

随后,您可以指定 GDAUDIT 的 FILTER_USER 值。用来审核这个用户组中的成员用户。或者您也可以使用通配符,把 FILTER_USER 设定为GROUP*,这样会审计那些所属组的组名是以GROUP开头的用户。

按 schema 或表筛选 (FILTER_TABLE)

如果您的企业仅需要筛选一组特定架构(库)中的对象,那么可以根据最多 10 个架构名称或通用架构名称执行筛选。如果您按架构或表筛选,则仅捕获数据操作 (DML) 语句。所有其他类型的语句均不会被捕获。例如,假设您希望仅捕获与 PROD1、NEWPROD1 和 PROD2 相关的数据操作 SQL 语句,则必须指定 FILTER_TABLE 值:

 PROD1/*ALL NEWPROD1/*ALL PROD2/*ALL

如果无其他架构名称以 PROD 开头,那么您可以使用通用名称:

 PROD*/*ALL NEWPROD1/*ALL

此类筛选也可在个别表级别上执行。例如,如果您仅希望捕获库 NEWPROD 中以字母 PERSONAL 开头的表条目,那么可以指定

  NEWPROD1/PERSONAL*

按作业筛选 (FILTER_JOB)

如果您的企业仅需要审计从 IBM 访问驱动程序传入的 JDBC、ODBC、.NET 请求相关的流量,那么可以按作业筛选,这些请求将由 QZDASOINIT 作业处理。例如,您可以指定

 *ALL/*ALL/QZDASOINIT

如果使用 IBM DB2™ Connect™ 驱动程序,则可以指定:

 *ALL/*ALL/QRWTSRVR

按关系数据库筛选 (FILTER_RDB)

如果使用独立辅助存储池 (IASP),那么一台 IBM i 上可以存在多个关系数据库。每个 IASP 和 *SYSBAS 均代表一个独立的关系数据,各有一个惟一的关系数据库名称。如果您的企业仅需要审计两个关系数据库名称为 RDB1 和 RDB2 的 IASP(忽略对 *SYSBAS 和其他任何 IASP 执行的活动),那么可以按以下方式指定 FILTER_RDB 值:

 RDB1 RDB2

筛选 QAUDJRN 条目类型 (FILTER_AUDIT_ENTRY_TYPES)

审计日志包含许多审计条目类型。默认情况下,仅有您在 QAUDJRN 中配置为捕获的 AUDJRN 条目子集会发送到 InfoSphere Guardium 收集器中,如 相关 QAUDJRN 审计条目 中所述。因此,举例来说,如果您不需要审计对象创建或对象恢复,那么就可以删除 CO 和 OR 条目类型,按以下方式指定 FILTER_AUDIT_ENTRY_TYPES 值:

 'AD AF CA DO GD OM OW PG PW RA RO RZ ZC ZR'

筛选 SYSTEM SQL 语句 (FILTER_SYSTEM_SQL)

DB2 for i 能通过执行多个 SQL 语句来执行某些功能。这些语句在监控器内标记为 System SQL 语句。然而,用户创建的过程、函数、程序或服务程序也可表示其 SQL 语句应通过使用 SET OPTION 语句标记为 System 语句。因此,最佳实践是将此值设置为 “Y”。

通过数据库交互式 IBM i 命令接口筛选活动 (FILTER_CLIENT_PROGRAMID)

DB2 for i 包含允许用户通过 Start SQL Interactive Session (STRSQL) 等命令运行交互式 SQL 语句的功能。在某些组织中,合规性要求限制对这些接口的访问,提供针对数据库对象访问的第三层防御。如果您希望专门监控通过该接口进行的访问,那么可以将 FILTER_CLIENT_PROGRAMID 设置为 “STRSQL”,仅收集通过 Start SQL (STRSQL) 命令传入的 SQL 活动的相关细节。请参阅 参考资料 中的文章,进一步了解如何审计这些交互式命令。

以下任何命令均可包含到筛选条件当中:

  • 运行SQL语句 (RUNSQLSTM)
  • 开始查询 (STRQRY)
  • 查看查询 (WRKQRY)
  • 执行查询 (RUNQRY)
  • 执行SQL (RUNSQL)

使用客户端信息字段筛选

客户端信息字段包含五个可针对特定数据库连接设置的不同字段,例如使用 SQLESETI API 进行设置,相关信息请参阅 IBM i 信息中心。这在审计的上下文中会很有帮助:

  • 更细粒度地识别不同的程序,以筛选排除(例如可信的应用程序)或者更密切地进行监控。
  • 如果应用程序使用仅有一个 “DB User” 的 “pooled” 数据库连接,那么可以帮助 InfoSphere Guardium 跟踪个别用户。(这要求应用程序设置 CLIENT_USERID 特殊寄存器。)

构成客户端信息的字段包括:

  • FILTER_CLIENT_ACCT
  • FILTER_CLIENT_APPLNAME
  • FILTER_CLIENT_PROGRAMID
  • FILTER_CLIENT_USERID
  • FILTER_CLIENT_WRKSTNNAME

减少发送至 InfoSphere Guardium 收集器的流量

我们刚刚介绍了如何使用 S-TAP 配置选项筛选 S-TAP 处理的事件。您可以使用 InfoSphere Guardium 安全策略,包含 IGNORE 规则,控制从 S-TAP 发送至 InfoSphere Guardium 收集器的信息数量,从而减少有待解析的信息量。例如,您可以设定规则,忽略来自计划作业或其他可信应用程序的会话。

此外还有其他一些选项,可使用它们来确定在满足策略规则的条件后,InfoSphere Guardium 数据库内必须保留的信息量。这是一个极为复杂的主题,超出了本文的讨论范围。如需了解有关的更多信息,请参阅 InfoSphere Guardium 帮助手册(单击 InfoSphere Guardium web 界面右上角的问号图标即可访问帮助手册)。

调优审计服务器的性能

审计服务器负责接收 QAUDJRN 的条目,并将其置入 Gardium 消息队列。审计服务器还包括在 PASE 中运行的代码、从 Guardium 队列中删除条目的代码,以及将它们发送到 InfoSphere Guardium 收集器的代码。

通常,审计服务器在 InfoSphere Guardium 使用 SBMJOB 命令启动的批处理作业中运行。在初次启动审计服务器时,SBMJOB 命令会使用当前用户(*CURRENT) 运行。后续再次启动审计服务器时,会使用启动审计服务器的最新用户配置文件 (USER(user-name))。

如果您希望使用不同的用户配置文件名称 (GDUSER) 来启动审计服务器,那么应该将配置文件更新如下:

 UPDATE qsys2.sysaudit SET start_user = 'GDUSER'

随后使用 InfoSphere Guardium UI 中的 start_istap_monitor API 重新启动审计服务器。

通过这种方式启动审计服务器需要使用 SBMJOB 命令,因此应该利用适用于作业描述的普通规则来运行作业(通过用户配置文件运行)。作业描述决定了审计服务器的运行方式。举例来说,它指定了为作业提供的初始优先级。

最佳实践是创建一个惟一作业描述,控制作业的属性、惟一作业队列和运行审计服务器的惟一用户配置文件。例如:

CRTUSRPRF GDUSER PWDEXP(*YES) STATUS(*ENABLED) SPCAUT(*ALLOBJ *JOBCTL)
   TEXT('Guardium user profile')
CRTJOBQ GDJOBQ TEXT('Guardium job queue')
CRTJOBD GDAUDIT JOBQ(GDJOBQ) JOBPTY(2) USER(GDUSER) JOBMSGQFL(*WRAP)
   TEXT('Guardium job description')
CHGUSRPRF USRPRF(GDUSER) JOBD(QGPL/GDAUDIT)
ADDJOBQE SBSD(QBATCH) JOBQ(QGPL/GDJOBQ) MAXACT(2) SEQNBR(40)

请注意,MAXACT 不得小于 2。有关 SBMJOB 和控制批处理作业所用的作业描述的更多信息,请参阅 IBM i 信息中心


结束语

希望本文能很好地帮助您开始在您的组织中实现 InfoSphere Guardium,同时,如本文所述,InfoSphere Guardium 不仅能够审计 DB2 for i,还能审计组织中可能拥有的其他多种数据库和文件系统。审计架构是可伸缩的,可以跨大型组织和跨地域进行部署。在当今时代,数据泄露似乎每天都层出不穷,包括特权用户造成的泄露,因此无论组织位于何处,都需要筑起更加坚实的防线,而不是单纯地依赖原生数据库安全性。

致谢

作者特此感谢 Tania Butovsky、Joe DiPietro、Scott Forstie、Rui Yu 和 Larry Burroughs 在本文的审阅和技术协助方面做出的贡献。

参考资料

学习

讨论

条评论

developerWorks: 登录

标有星(*)号的字段是必填字段。


需要一个 IBM ID?
忘记 IBM ID?


忘记密码?
更改您的密码

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件

 


在您首次登录 developerWorks 时,会为您创建一份个人概要。您的个人概要中的信息(您的姓名、国家/地区,以及公司名称)是公开显示的,而且会随着您发布的任何内容一起显示,除非您选择隐藏您的公司名称。您可以随时更新您的 IBM 帐户。

所有提交的信息确保安全。

选择您的昵称



当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。

昵称长度在 3 至 31 个字符之间。 您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。

标有星(*)号的字段是必填字段。

(昵称长度在 3 至 31 个字符之间)

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件.

 


所有提交的信息确保安全。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=IBM i, Information Management
ArticleID=860978
ArticleTitle=利用 IBM InfoSphere Guardium 监控和审计 IBM DB2 for i 数据库活动
publish-date=03282013