SCMLife.com

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 6257|回复: 1

[推荐] 如何使用Rational Insight与Security AppScan Standard生成安全问题报表

[复制链接]
发表于 2013-1-4 09:19:55 | 显示全部楼层 |阅读模式
简介
' |) e! E) }+ k9 ]7 s6 @; GIBM Rational Insight 是一种全面的项目度量解决方案,它提供了从各种类型的数据源中抽取、转化并存储历史数据(ETL)的能力,同时还可以通过可视化的报表自动客观地展示项目的进度和状态。IBM Security AppScan Standard (以下简称 Security AppScan )是一种自动化 Web 应用程序与服务安全性测试引擎,能够连续、自动地审查 Web 应用,发现 Web 应用中存在的安全问题,并生成包含修订建议的行动报告。本文描述了如何结合这两种产品,以直观、可视化的方式展示所测试的 Web 应用各个版本的安全问题趋势。0 \% w+ f) f- l3 i" i! X7 N4 i6 G


& p, v6 C1 P. ?: R
7 m; W% C$ Q3 r& O2 E前言& I2 P3 b. Q$ a: Q4 B/ e% N  T1 g
IBM Rational Insight 是一种全面的项目度量解决方案,它提供了从各种类型的数据源中抽取、转化并存储历史数据(ETL)的能力,同时还可以通过可视化的报表自动客观地展示项目的进度和状态。Security AppScan 是一种自动化 Web 应用程序与服务安全性测试引擎,能够连续、自动地审查 Web 应用,发现 Web 应用中存在的安全问题,并生成包含修订建议的行动报告。
1 w5 H# \9 f5 B2 wSecurity AppScan 提供了一些简单的 Birt 报表来展示扫描结果,但是它只针对 Web 应用程序当前正在扫描的版本,而不能显示趋势性报表,即无法显示 Web 应用程序在多个版本间的安全问题的趋势图。Rational Insight 作为一款专业的报表设计工具,它提供了存储历史数据的 ETL 能力,同时支持包括趋势图在内的更多类型的报表。Security AppScan 提供将问题扫描结果导出为 XML 文件的功能,而 Rational Insight 从版本 1.1 开始支持以纯粹的 XML 文件作为数据源,不需要额外的 XML 数据格式定义,这使得集成 Rational Insight 和 Security AppScan 这两种产品成为可能。+ z, a  u# E  w5 L: s& P* ~
为了生成 Web 应用不同版本的安全问题趋势,传统的做法需要为每个版本的扫描结果 XML 文件创建单独的 XDC 文件,在 ETL 定制部分又需要每个 XDC 文件创建几乎重复的工作项,这造成了大量冗余的工作,不利于后期维护。本文将介绍一种简单有效的集成这两种产品的方法,用户只需要做一次定制,大大减少了后期的维护工作量,方便快捷地生成 Web 应用的安全问题趋势报表。
- X) `- b- n) T- \, W' \. b本文中涉及到 Rational Insight 中 ETL 的定制,ETL 的定制本身比较复杂,在 IBM DeveloperWorks 上有关于 ETL 定制的系列文章,读者可以参考。由于篇幅限制,本文假设读者对于 ETL 定制过程已经有了一定的了解,将着重介绍本文中关键的定制过程。另外,本文示例所用的软件版本是 Rational Insight 1.1 和 Security AppScan Standard 8.5,但是同样适用于 Rational Insight 1.1 后期的版本以及其他 Security AppScan 版本。: t8 |! \6 a8 r7 d. {( R$ u* A


) z' `% a- J1 ^& u( n/ [
0 k' j) g, ^& P0 _通过 AppScan 扫描发现 Web 应用安全问题  h: [; r/ V( y( @1 e: l6 a# c
在 AppScan 中新建一个项目,选择扫描模板(如常规扫描),扫描类型(如 Web 应用扫描),输入扫描 Web 应用的 URL,录制登陆过程(通常需要输入登陆的用户名和密码),最后开始扫描,扫描完成后将显示 Web 应用按严重性分类的安全问题个数,以及每个安全问题的详细说明和建议的修复方法。如图 1 所示。鉴于本文并不是描述如何使用 Security AppScan 的,这部分内容请参考 Security AppScan 的相关文档。
# |* D# f% y9 A6 T7 B" Y# K扫描结果可以导出为各种类型,如 PDF, XML 等等,单击"文件"菜单 ->"导出"->"导出为 XML",将结果导出为 XML 文件,XML 片段如图 2 所示。为了便于接下来 ETL 定制过程,我们做如下规定:(1)将扫描结果文件命名为:Web 应用名称 _ 版本号,如果 Web 应用还在开发周期中,版本号为内部版本号,一般以日期编号表示;(2)将 Web 应用的所有扫描结果存在同一个目录下面。
( @. Q) q& ]+ [- f9 m  E4 B4 t: _. M2 H( A) y' q
图 1. AppScan 扫描 Web 应用
1 _& H3 E, p- @& C- f6 i3 p% K) h
  [1 y/ a7 u; N! q# o( x: G
+ y7 V* E6 n/ G( G2 A& R5 p( Z图 2. 扫描结果 XML 片段% I+ I5 R# T$ T! B& o4 D' r

: C$ J* ^% h1 |, y  C

9 j7 V' B! }9 M. I( t4 u& P; }9 }  R1 P+ Z& \9 h2 h7 F5 H$ {" q" o* e. j
Insight 定制
+ T/ a) P# L0 o5 A. F7 y% v将扫描结果的 XML 文件作为数据源,接下来需要进行 Insight 的定制将数据抽取到数据仓库中,并最终设计报表展现出来。Insight 的定制包括以下几个步骤:一是创建 XDC 文件,建立 XML 元数据结构和关系数据库表列的映射关系;二是分析将数据抽取到哪些表以及相应字段中,如有必要,需要进行数据仓库的定制,添加新表或修改已有的表结构;三是定制 ETL,对数据源进行抽取、转换并加载到第二步中设计的数据表中;最后如果数据仓库进行了定制,需要相应地定制报表模型,并设计报表。由于篇幅限制,本文将侧重介绍第一步和第三步的定制过程。
' R6 Q. V, _( c9 a. M1. 创建 XDC 文件/ r5 ?3 F+ S1 T$ {' ]
XDC 文件是 Insight 的 XML 数据配置工具建立的,用于存储 XML 的元数据结构和关系数据库表列的映射关系。首先需要打开 XML 数据定制工具,创建一个新的数据配置文件 testfire.xdc,接下来创建一个资源组 testfire,资源组的 URL 类型选择"一般 XML",URL 的值是本地文件夹的路径,测试连接是否通过,如果测试通过则表明设置正确。
# T# y% j2 P# Z; K
# o. ^. c& X7 M/ G图 3. 创建资源组: e6 W( F, E5 a

8 }. h; P/ |9 l  `接下来在资源组下创建资源 issues,对应于数据源,相对路径的值为扫描 XML 的文件名,取消勾选"资源具有关联的 XML 模式",Insight 从版本 1.1 开始对 XML 的支持只需要提供数据文件即可,之前的版本还需要提供 XML 数据格式定义文件。
  \: b- U/ }4 d% b$ S7 G, \& X- Z. h& i# U; G) t3 b, E
图 4. 创建资源 issues
8 a5 f$ M# i* U3 H- r# `3 e; q/ t1 ]
接下来需要在 Issues 资源下面创建数据映射表,通过映射设置,将树形的 XML 数据结构转化为关系型数据结构。这部分操作与非 XML 数据源创建方式相同,一共创建 3 个映射表,分别为 Issues, IssueType, ProjectRelease,Issues 对应应于 XML 中  节点下的数据,包括 IssueTypeID,URL,Severity 等字段 , 对应于安全问题的类型、在哪个 URL 发现以及严重程度;IssueType 对应于 XML 文件中的  节点,包括 ID 和 Name 属性;ProjectRelease 对应于 XML 文件中的  中的 Name 属性,通过该属性得到 Web 应用名称和版本号。最终的 XDC 文件如图 5 所示。3 C- x7 j6 N" }  U  U
  g  L( }3 d& \; ^) a: Y2 z
表 1. 映射表结构
+ A2 j) {# F6 N6 _
Data Mapping TableXPathField NameSQL Type
ProjectRelease/XmlReport/@NameNameVARCHAR(255)
IssuesType/XmlReport/Results/IssueTypes/IssueType/@IDIDVARCHAR(255)
 /XmlReport/Results/IssueTypes/IssueType/advisory/nameadvisory_nameVARCHAR(255)
Issues/XmlReport/@NameProjectReleaseVARCHAR(255)
 /XmlReport /Results/Issues/Issue/@IssueTypeIDIssueTypeIDVARCHAR(255)
 /XmlReport /Results/Issues/Issue/SeveritySeverityVARCHAR(255)
 /XmlReport /Results/Issues/Issue/UrlURLVARCHAR(255)
" }& E# T; k/ X, y8 o2 J$ B2 q
; N2 D$ n6 M8 B$ u5 F) A$ s8 I
图 5. XDC 文件的结构: b+ D# M0 n" D$ h' j8 i' L1 g
2 }3 q  q' f/ [7 W7 Z  I/ k
2. 数据仓库设计7 ^& H* M+ |6 F* ?- {
我们可以视每个安全问题(Issue)为一个缺陷,数据仓库中 RIODS.REQUEST 表用来存储变更请求,因此可将 Issue 的各个字段对应到 RIODS.REQUEST 表。Issue 中的 Severity 属性对应到 RIODS.REQUEST_SEVERITY 表。IssuesType 可视为缺陷类型,对应于 RIODS.REQUEST_TYPE 表;根据 ProjectRelease 的 Name 属性得到项目名和版本号,对应于 RIODS.PROJECT 和 RIODS.RELEASE 表。具体对应关系在后面会详细描述。
) @; r1 Q, k4 q  y( S8 X& @5 Y' [3. ETL 定制
8 H/ S5 w3 Y; ~首先创建 ODBC 数据源,名称为 testfire,指向之前创建的 testfire.xdc 文件,打开 Cognos DataManager 并且导入 Insight 随产品提供的 OOTBE2E.ctg 文件,并创建 ODBC 数据源连接,数据源名称为 testfire。1 R$ N6 m1 `! R6 D0 f  p
接下来我们创建 4 个 Fact Build: Issues, IssueSeverity, IssueType 和 ProjectRelease,将数据抽取到对应数据表中,根据数据仓库的设计,从映射表到目表表的对应关系如表 2 所示。这些都是比较基础的 ETL 定制操作,本文假定读者对于 ETL 定制已经有一定的了解,因此这里不过多介绍,读者可参考附录中的 ETL 定制系列文章。
) V% [/ c9 ~5 S* A$ D. L4 \( \' c+ e+ j9 G) P+ Q( j
表 2. 映射表到目标表对应关系# z: K2 O4 @7 l6 h6 Z  I! x, X
映射表字段数据转换目标表字段
ProjectReleaseNameProject_NameRIODS.PROJECTNAME
  F3 @. @0 X6 W7 }7 b; w5 v- ]  ^PROJECT_ID
Release_NameRIRIODS.RELEASENAME# t" f* e! U: q; Z& v2 q
RELEASE_ID
IssuesTypeIDIDRIODS.REQUEST_TYPEEXTERNAL_KEY23 o1 g( y( ]8 s7 S% F+ u
NAME7 l: k; [: d0 J; q9 r
REQUEST_TYPE_ID
advisory_nameadvisory_name
IssuesSeveritySeverityRIODS.REQUEST_SEVERITYNAME# U* ?9 n- u1 u2 {  B- }/ ]
REQUEST_SEVERITY_ID
IssuesProjectRelease参照 RIRIODS.PROJECTRIODS.REQUEST
$ g6 R! Y% H0 ^) Y
PROJECT_ID
参照 RIRIODS.RELEASERELEASE_ID
IssueTypeID参照
; r% W& w9 a) ], T; jRIODS.REQUEST_TYPE
REQUEST_TYPE_ID
Severity参照
& j9 e6 O* C6 r7 M6 ~: T3 tRIODS.REQUEST_SEVERITY
REQUEST_SEVERITY_ID
URLURLURL

! V. F6 e* d" x! U- }! L* V约定中将 Web 应用的所有版本扫描结果的 XML 文件存放在同一个目录,接下来定制 ETL 读取该目录中的所有文件,目录名被设计为输入参数,并依次替换 XDC 文件中的相对路径(参照图 4),这样就可以一次性将各个版本的扫描数据抽取到数据仓库中。
+ D, L. p3 Z  Z" r% S在 DataManager 中创建一个方法 GetFileList(), 实现如图 6 所示,在 Interface 页面添加输入参数 dir,类型为 CHAR, 表示目录名,在 Variables 页面添加 files, count, index 和 item 变量,类型分别为 ARRAY, INTEGER, INTEGER 和 CHAR(200)。实现中都是采用 Cognos 的内部方法,请参阅 Cognos 说明。GetFileList 方法返回包含目录 dir 中所有文件名的数组 files。
" n- ]: P* b& j- x$ t; }1 p) \6 n6 @
; I5 T. n+ V0 o4 @- ?" Y+ n! S, X图 6. GetFileList() 实现
6 u+ n& j1 o$ [, B  e: Y
. T! L  ^  H! S创建一个任务流 testfire,如图 7 所示。任务流中 init 节点用于初始化变量,files 数组记录目录下的文件名,index 是数组索引。hasmore 节点判断是否遍历到最后一个文件。对于 Replace 节点,通过 System 方法调用操作系统 copy 和 sed 命令,替换 XDC 文件为同一的 XDC 文件副本并替换其中的相对路径,读者需根据自己的实际情况替换图中标示的路径。4 E6 @- {& X( q; X9 _) w
6 B( `. `6 i& O4 U( O% U
图 7. testfire 任务流
) m! ?' N* J- {
; I. Q, A2 I9 i: z5 h  h3 K! R( \& ?9 O: z3 C
图 8. init 节点实现
, L% S* j% [: h# L8 m3 H4 i8 h
. x4 L: Y; k1 q+ p9 I8 C5 f7 B9 y4 k4 l! p) h* [
图 9. hasmore 节点实现: R" ~  Y" _! l% S" a

. X, H$ R4 b8 N; z
% o$ S# c6 Z* _  f1 B/ Q图 10. Replace 节点实现
2 R2 q- v1 @# x; K# P: t4 j) S! [2 `/ x4 `/ Z9 b7 ?  w
运行 testfire 任务流,抽取 ODS 数据到数据仓库中,运行完成后,再运行 StartJobs 目录下的 Build_Star 任务流,抽取维度(Dimension)和事实(Fact)数据到数据仓库中,至此 ETL 定制部分完成。
& ^; v" J3 a9 |& i! P2 i& s4. 趋势报表设计
+ J* B& @+ v4 c由于没有对数据仓库进行了定制,因此不需要修改报表模型,启动 Report Studio, 选择"Reporting Data Model (DW)"报表模型,创建一个 Chart 型报表,这里设计一个简单的报表,X 轴为产品版本,Y 轴为安全问题的个数,Legend 设为问题严重性,如图 11 所示。通过这个报表可以发现相比于前一个版本,应用程序的安全问题数量得到了控制,是一个良好的趋势。反之,如果安全问题数量骤升,或者引入了新的安全问题,则需要开发人员去分析原因并及时解决。
! p2 h# n/ E( v+ `# e& b读者可根据自己的需要设计相应的报表,也可添加钻取功能,查看具体的安全问题信息列表、哪些是新增的安全问题等等。另外,Insight 随产品提供的一系列的开箱即用的报表,可以重用其中关于变更管理的部分报表。, p( ^8 A1 V% [: n/ Q( c( B4 ?
" I5 F7 G9 r0 ~7 X5 S
图 11. 安全问题趋势报表. d1 r  r7 T* B" Q6 I1 i( b
& N2 g2 l  g% {5 }4 m% R  ]


" F  e6 x* D- c* M9 ~0 N3 ?! o) b6 s; D/ {2 @: p
总结
& q# E# }. k1 d: U8 L; ^; w" W本文结合了 Security AppScan 和 Rational Insight 两种产品,采用 Security AppScan 扫描 Web 应用中存在的安全方面的问题,通过定制 Rational Insight,以直观、可视化的方式展示 Web 应用各个版本的安全问题趋势,有助于分析产品在开发过程中是否引入了新的安全隐患,以及是否及时地降低了已有的安全隐患。用户只需要做一次定制,大大减少了后期的维护工作量,方便快捷地生成 Web 应用的安全问题趋势。4 x% i: u7 k- |7 w3 Y9 n0 G6 L- n

- o- a3 V# X* w; C

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
 楼主| 发表于 2013-1-4 09:20:41 | 显示全部楼层
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

SCMLife推荐上一条 /5 下一条

QQ|小黑屋|手机版|无图版|SCMLife.com ( 京ICP备06056490号-1 )

GMT+8, 2020-8-14 13:07 , Processed in 0.106393 second(s), 9 queries , Gzip On, MemCache On.

Powered by SCMLife X3.4 Licensed

© 2001-2017 JoyShare.

快速回复 返回顶部 返回列表