使用IBM InfoSphere Guardium REST API

InfoSphere Guardium简介

InfoSphere Guardium是来自IBM的一组数据安全性和合规性解决方案的产品系列名称。 它包括数据活动监视,漏洞评估,数据加密和文档编辑功能。

在本文中,了解传统的Guardium产品系列的增强功能,该产品系列于2009年被IBM收购,现在被称为InfoSphere Guardium数据活动监视器和InfoSphere Guardium漏洞评估解决方案。 这两种解决方案都依赖于InfoSphere Guardium服务器硬件或软件设备,如图1所示。InfoSphereGuardium功能可以从单个服务器进行配置。

图1. InfoSphere Guardium
可从单个服务器配置InfoSphere Guardium功能

从架构和总体拥有成本(TCO)的角度来看,InfoSphere Guardium旨在从很小的部署扩展到非常大的部署。 联合体系结构使解决方案能够扩展到监视成千上万的数据库服务器。 从TCO角度来看,InfoSphere Guardium包括:

  • 调度等自动化功能。
  • 功能丰富的API,公开了Guardium后端功能。
  • 脚本编写。
  • 用于自动化和集成目的的外部系统。

您几乎可以通过用户界面在InfoSphere Guardium中执行的所有操作都可以使用命令行界面(CLI)中的API来完成。 使用API​​可以轻松完成诸如查询或设置设备配置,安全策略定义,报告执行,Guardium组填充等任务。 繁琐而繁琐的任务(例如定义数千个数据源或软件TAPS(S-TAPS))可以使用Guardium API编写脚本并自动执行。 有关Guardium的API的详细信息,请参阅Guardium的技术讲座或Guardium的API引用(在相关主题 )。

从InfoSphere Guardium 9.1开始,Guardium API现在作为在线RESTful Web服务公开给外部系统。 要使用本文中描述的功能,您至少需要该版本的GPU 200,并建议使用GPU300。目标是使使用Guardium的组织能够使用现代化的界面向用户展示功能,例如Web门户或通过云。

代表性状态转移(REST)已被广泛接受,作为实现Web服务的首选体系结构样式,并且是SOAP和WSDL的更简单替代方案。 许多组织都提倡RESTful接口,以公开其服务并与其他服务接口。

用例

Guardium用户在使用新的RESTful API时可能会有创意。 以下只是一些用例的示例:

  • 使数据库权限与Guardium中的组保持同步,以便快速响应人员变更。 例如,当组织采用新的DBA时,由于其特权状态,这些DBA需要加强监视。 在Guardium中执行此操作的传统方法是使用权利报告来导入数据,然后使用对该导入的信息进行查询来填充DBA组。 但是,使更新立即生效是不切实际的。 例如,如果某人被授予Oracle中的DBA角色,则可能需要一整天的时间来刷新权利报告,然后再安装该策略。

    使用REST API,可以在授予DBA角色权限后将syslog事件发送给接收者,然后该接收者可以触发一些API调用来更新管理用户组并重新安装策略。 这将大大减少更新权限和提高用户日志记录级别之间的时间间隔。 或者,您可以使用Java实现自定义警报器,以直接从Guardium系统本身触发调用。

  • 要求对一组用户(例如IT用户)进行不同于其他用户的跟踪。 您可以从LDAP导入用户列表来满足此要求,但是可以通过在入职应用程序期间进行REST API调用(例如在企业目录中建立钩子)来消除延迟。
  • 减轻因离职人员的时间延迟而导致的风险并吊销其证书。 如果有人离开了组织,则通常可能需要很长时间才能从数据库中撤消其凭据。 InfoSphere Guardium可以立即隔离用户。 可以将REST API调用作为外部应用程序的一部分,以在预期发生此事件时对其帐户进行隔离。

重要的是要了解REST API对于在线界面非常有用,例如检索特定报表的数据,添加策略规则,管理组或定义数据源。 这不是处理大量数据的正确方法。

基础

REST Web服务使用HTTP方法(动词)GET,POST,PUT和DELETE。 他们使用JSON作为有效载荷格式,因为它比XML轻得多。

现有的Guardium API函数已映射到适当的动词和资源,因此您可以构造REST URL。 例如,Guardium的一项基本任务是管理组及其成员。 对于REST API, 组是资源,适当的REST动词取决于所需的操作。 表1显示了一个示例。

表1.将组函数映射到REST动词和资源
功能名称 REST动词 REST资源
list_group_by_desc 得到
创建组 开机自检
delete_group_by_desc 删除

为了管理组的成员,我们将成员定义为资源,如表2所示。

表2.将成员函数映射到REST动词和资源
功能名称 REST动词 REST资源
list_group_members_by_desc 得到 会员
create_member_to_group_by_desc 开机自检 会员
delete_member_from_group_by_desc 删除 会员

策略也是使用InfoSphere Guardium的关键。 您可以使用策略来确定要监视的活动以及在某些情况下(例如对敏感数据的未授权访问或未知连接的访问​​)采取的措施。 策略可以随着条件的变化而更新,并且不同的策略可以在不同的时间生效。 表3显示了围绕策略的REST API功能的示例。 (表4实际上具有更新策略或更改策略使用的组后将用于安装策略的API。)

表3.将策略功能映射到REST动词和资源。
功能名称 REST动词 REST资源
create_policy 开机自检 政策
update_policy 政策
delete_policy 删除 政策
list_policy 得到 政策

表4具有一些附加功能,其中资源与现有GRDAPI函数名称相同。

表4.资源与函数名称相同
功能名称 REST动词 REST资源
policy_install 开机自检 policy_install
patch_install patch_install
reset_unit_utilization_data reset_unit_utilization_data
stop_audit_process stop_audit_process

有数百种API函数。 为了您的方便,我们公开了REST API资源,以允许查询(GET)可用资源及其参数。 为此,您确实需要一个授权令牌,如“ 授权流程”中所述 。 清单1显示了查询资源的示例。

重要说明 :为了便于阅读,所有curl命令都已中断; 单行输入实际命令。

清单1.查询资源的示例
Request: 
curl -k -i --header "Authorization:Bearer 80cdcfa3-e02e-4bd6-829a-6b656beaa90a" 
	https://10.10.9.248:8443/restAPI/restapi
Response:  
[
  {
    "resource_id": 1,
    "api_function_name": "create_datasource",
    "resourceName": "datasource",
    "verb": "POST"
  },
  {
    "resource_id": 2,
    "api_function_name": "list_datasource_by_id",
    "resourceName": "datasource",
    "verb": "GET"
  },.....

输出包括GrdAPI函数名称以供参考。

清单2中指定withParameters=true的请求返回详细描述,包括REST API函数的参数。

清单2.查询资源以包含参数详细信息withParameters=true
Request: 
curl -k -i --header "Authorization: Bearer 8f8e5634-5714-4d3b-bcd8-a2f26bc768f3" 
        https://10.10.9.248:8443/restAPI/restapi?withParameters=true        
Response:
 [
   {	
    "resource_id": 678,
    "api_function_name": "list_classifier_policy",
    "resourceName": "classifier_policy",
    "verb": "GET",
    "parameters": [
      {
        "parameterName": "policyName",
        "parameterType": "java.lang.String",
        "isRequired": false
      },
      {
        "parameterName": "ruleName",
        "parameterType": "java.lang.String",
        "isRequired": false
      },
      {
        "parameterName": "actionName",
        "parameterType": "java.lang.String",
        "isRequired": false
      },
      {
        "parameterName": "recursive",
        "parameterType": "java.lang.Boolean",
        "isRequired": false
      },
      {
        "parameterName": "api_target_host",
        "parameterType": "java.lang.String",
        "isRequired": false
      }
    ]
  },
  {
    "resource_id": 670,
    "api_function_name": "update_classifier_policy",
    "resourceName": "classifier_policy",
    "verb": "PUT",
    "parameters": [
      {
        "parameterName": "policyName",
        "parameterType": "java.lang.String",
        "isRequired": true
      },
      {..........

要获得特定API函数的参数列表,可以为该函数指定资源ID,如清单3所示。我们请求资源ID 678的信息,该信息与上一个清单中的API list_classifier_policy相对应。

清单3.使用资源ID查询资源
Request: 
curl -k -i --header "Authorization: Bearer 1ece8a8a-e60d-47a3-a4f4-d7703bb7c7c9" 
        https://10.10.9.248:8443/restAPI/restapi?resourceId=678
Response:
[
  {
    "parameterName": "policyName",
    "parameterType": "java.lang.String",
    "isRequired": false
  },
  {
    "parameterName": "ruleName",
    "parameterType": "java.lang.String",
    "isRequired": false
  },
  {
    "parameterName": "actionName",
    "parameterType": "java.lang.String",
    "isRequired": false
  },
  {
    "parameterName": "recursive",
    "parameterType": "java.lang.Boolean",
    "isRequired": false
  },
  {
    "parameterName": "api_target_host",
    "parameterType": "java.lang.String",
    "isRequired": false
  }
]

授权流程

当允许外部接口连接到InfoSphere Guardium系统时,安全性是一个主要问题。 以交互方式或通过脚本使用API​​时,CLI或GUI框架可确保正确的身份验证。

当API作为Web服务公开时,有必要对每个请求进行身份验证和授权。 我们选择OAuth2作为授权协议,并使用已建立的Spring Security框架来实现它。 请参阅相关主题有关的OAuth2和Spring Security框架的信息。

图2显示了授权流程的概述。

图2.授权流程
下文中描述了流程中的每个步骤

以下编号步骤与图2中的编号相对应。

  1. Guardium管理员必须使用经过本地CLI认证的会话才能为客户端应用程序生成客户端密码。
  2. 将客户端机密存储在安全的地方。
  3. 然后,客户端应用程序将客户端秘密用于请求与有效Guardium用户关联的访问令牌。
  4. 客户端应用程序保存该访问令牌,该令牌的默认有效期为三小时。
  5. 后续的API调用必须指定令牌,并将具有授予与令牌关联的用户的权限。 令牌过期后的所有请求都将失败,并且客户端应用程序必须生成一个新令牌。

您可以使用API​​函数getOAuthTokenExpirationTimesetOAuthTokenExpirationTime来显示和修改令牌的有效期限。 此设置是全局设置,并且会影响所有令牌。 这些API函数不会作为REST API公开,只能由具有admin角色的用户通过经过身份验证的CLI会话来调用。

可以使用revokeOauthToken API函数来撤销访问令牌。 可以使用revokeOauthClient API函数撤销客户端ID(使所有活动令牌无效)。

注册为InfoSphere Guardium服务器的客户机应用程序

要使用REST API,应用程序必须具有适当的凭据。 InfoSphere Guardium使用OAuth流程来提供客户端机密,稍后将其用于获取适当的凭证。 使用Guardium API命令向服务器注册新应用程序时,会生成一次性的客户端密码。

注册API函数接受client_id并返回可用于生成访问令牌的客户端密钥。 CLI用户可以在本地执行此操作,也可以通过CLI用户通过与Guardium设备的SSH会话来执行此操作。 您不能使用REST API进行注册。 必须对将由客户端应用程序访问的每个Guardium设备进行此注册。

清单4显示了调用Guardium API命令注册客户端应用程序的示例。 请注意, client_id参数用于标识客户端,并且应该是一个有意义的名称。

清单4.调用Guardium API命令来注册客户端应用程序
v9GA.ibm.com> grdapi register_oauth_client client_id=client_id1 
ID=0
{"client_id":"client_id1","client_secret":"3ac89782-ce55-4f24-b795-b6c76ecc4045",
 "grant_types":"password","scope":"read,write","redirect_uri":"https://joeApp"}
ok

在上面的输出中,您可以忽略除client_secret所有内容。

client_secret非常重要,应适当保护 。 在该过程的下一阶段,您将需要它来请求访问令牌,以便您的应用程序可以使用REST发出grdAPI命令。

申请访问令牌

可以从具有client_secret的系统上,从有效的Guardium用户作为REST API请求来调用访问令牌。

您可以根据自己的喜好使用各种编程语言。 对于本文中的示例,我们使用curl来调用请求。 在-d选项之后,在http请求正文中,我们包括了OAuth请求所需的所有不同的GrdAPI参数,如下所示。

  • client_id = client_id1 ,注册客户端时指定的客户端名称。
  • client_secret = 3ac89782-ce55-4f24-b795-b6c76ecc4045 ,即注册此客户端时获得的客户端密码。
  • username = admin ,是有效的Guardium门户网站用户,有权调用我们要调用的API函数。
  • password = <password> ,用于Guardium的密码。

清单5显示了如何请求访问令牌和响应。 (由于空间限制,添加了换行符。)

清单5.请求访问令牌
Request:
curl -k -X POST -d 
'client_id=client_id1&grant_type=password&
client_secret=3ac89782-ce55-4f24-b795-b6c76ecc4045&username=admin&password=guardium' 
		         https://10.10.9.248:8443/oauth/token
Response:
{"access_token":"80cdcfa3-e02e-4bd6-829a-6b656beaa90a",
  "token_type":"bearer","expires_in":10799,"scope":"read write"}

在该示例中,Guardium设备IP地址为10.10.9.248。

现在,清单5中以粗体显示的访问令牌可用于验证其余REST API请求的真实性,直到过期为止。 如下所示,在grdAPI请求的标头中使用此access_token非常重要。

"Authorization: Bearer 80cdcfa3-e02e-4bd6-829a-6b656beaa90a "

使用REST API

本节包含使用REST API调用Guardium函数的示例。 这些示例使用curl作为Web客户端,但是在实际环境中,外部系统将发出Web请求。

  • 请求的授权令牌在标头中指定为Authorization:Bearer
  • 请求的操作由以下HTTP方法之一指定: PUTGETPOSTDELETE
  • 在URL上指定执行操作的资源。
  • GET请求中,在URL上指定了其他参数。
  • 在所有其他请求上,其他参数将出现在-d之后,并格式化为JSON表示法。

创建一个数据源( datasource

数据源通常在Guardium中用于为运行分类过程(有时称为敏感数据查找器),安全评估,S-TAP验证过程等指定数据库服务器。 此REST API示例使用POST操作在Guardium设备上创建数据源。 它与安全评估相关联,安全评估是InfoSphere Guardium漏洞评估产品的一部分。

如清单6所示,该命令采用诸如应用程序,数据库服务器主机,数据库名称,所有者,密码等参数。 有关参数的详细情况在InfoSphere Guardium的信息中心(请参阅相关信息 ),也可以查询restapi如上所述资源。

清单6.创建一个数据源
Request:
curl -k --header "Authorization:Bearer 80cdcfa3-e02e-4bd6-829a-6b656beaa90a" -i -H
	 "Content-Type: application/json" -X POST -d 
'{application:"Security Assessment",host:10.10.9.252,name:"MSSQL252",
	user:admin,password:"p$ssWOrd",port:1433,shared:true,severity:MED,
		type:"MS SQL SERVER (DataDirect)",user:sa}'
		 https://10.10.9.248:8443/restAPI/datasource
Response: HTTP/1.1 200 OK Set-Cookie: JSESSIONID=8C90021B43CCAF324FD72D498B0D4C93; Path=/; Secure; HttpOnly Content-Type: application/json;charset=ISO-8859-1 Content-Length: 36 Date: Fri, 01 Nov 2013 23:59:38 GMT Server: SQL Guard {"ID":20007,"Message":"ID=20007"}

该响应表明该数据源已成功添加,并且该数据源的ID为20007。此ID可用于后续命令中以操纵该数据源,因为您可以使用按对象名称(描述)或ID操纵对象的命令。 。

如果已经存在同名的数据源,则将返回错误响应,如清单7所示。

清单7.创建数据源时出错
Response:
{
  "ErrorCode": 102,

  "ErrorMessage": "create_datasource: ERR=102 Error creating Datasource, 
		a Datasource with the specified name already exists. "
}

如果错误阻止调用执行(错误或过期的访问令牌,错误的资源,错误的动词),则HTTP状态将指示错误。 如果执行请求并产生错误,例如缺少必需的参数,对象已存在,参数值错误等等,则HTTP状态为200(OK),并且错误指示将作为JSON对象显示在输出中,并带有ErrorCodeErrorMessage字段。

检索数据源( list_datasource_by_id

为了检索刚刚创建的数据源,该示例使用ID列表(而不是描述列表)来列出上一节中创建的数据源的属性。 对于GET请求,参数位于URL上,如清单8所示。

清单8.列出数据源
Request:delete_datasource_by_id
curl -k --header "Authorization:Bearer 80cdcfa3-e02e-4bd6-829a-6b656beaa90a" -i -H "Content-Type: application/json" -X GET https://10.10.9.252:8443/restAPI/datasource?id=20007
Response: HTTP/1.1 200 OK Set-Cookie: JSESSIONID=42308503264EAEF37EC1B724DF5F3F40; Path=/; Secure; HttpOnly X-UA-Compatible: IE=edge X-FRAME-OPTIONS: SAMEORIGIN Access-Control-Allow-Methods: POST, GET, PUT, DELETE Access-Control-Allow-Headers: authorization, origin, X-Requested-With, Content-Type, Accept Access-Control-Max-Age: 18000 Content-Type: application/json;charset=UTF-8 Content-Length: 740 Date: Sat, 08 Mar 2014 18:38:58 GMT Server: SQL Guard [ { "DatasourceId": "https://qav9-vm01.guard.swg.usma.ibm.com:8443/restAPI/datasource?id=20000", "DatasourceTypeId": "4", "Name": "MSSQL252", "Description": "null", "Host": "10.10.9.252", "Port": "1433", "ServiceName": "", "UserName": "sa", "Password": "[B@72d272d2", "PasswordStored": "true", "DbName": "null", "LastConnect": "null", "Timestamp": "2014-03-08 13:38:51.0", "ApplicationId": "8", "Shared": "true", "ConProperty": "null", "OsUsername": "null", "DbHomeDir": "null", "CustomUrl": "null", "Severity": "5", "DbDriverId": "4", "CompatibilityMode": "", "DatasourceType": "MS SQL SERVER", "ApplicationType": "SecurityAssessment" } ]

删除数据源( delete_datasource_by_id

如清单9所示,该示例使用ID删除(而不是描述删除)来删除在上一节中创建的数据源。

清单9.删除数据源
Request:
curl -k --header "Authorization:Bearer 80cdcfa3-e02e-4bd6-829a-6b656beaa90a" 
-i -H "Content-Type: application/json" -X DELETE -d '{id:20007}'
	 https://10.10.9.248:8443/restAPI/delete_datasource_by_id
Response: HTTP/1.1 200 OK Set-Cookie: JSESSIONID=354039539B475B50EBBFD00892A2F66A; Path=/; Secure; HttpOnly Content-Type: application/json;charset=ISO-8859-1 Content-Length: 36 Date: Sat, 02 Nov 2013 00:09:27 GMT Server: SQL Guard {"ID":20007,"Message":"ID=20007"}

消息{"ID":20007,"Message":"ID=20007"}表示命令已成功执行。

执行报告并获取结果( online_report

InfoSphere Guardium具有数百个预构建的报告以及一个报告构建工具,可让您创建自定义报告。 无论哪种情况,报告都非常灵活,因为您可以在运行时指定参数以过滤报告输出并指定显示特征,例如一次在屏幕上显示多少行。

要查看报表运行时参数,请单击“ 自定义”图标,它看起来像一支蓝色铅笔。 此图标在报表portlet标题上,如图3所示。

图3.访问报告定制器
铅笔图标突出显示

图4显示了运行时参数,这些运行时参数用于修改名为AuditTrailSample的报告以按日期缩小(现在为10天),并且仅包括DBUSER为Newuser的那些记录,无论使用哪个OSUser名称。 Fetchsize为20。

图4.报告运行时参数
上面的文本描述了定制器中的字段。

图5显示了实际的定制报告。 对于有关REST API的示例,报告的内容并不重要。

图5. InfoSphere Guardium报告的示例
示例报告。实际内容对于理解本文并不重要

InfoSphere Guardium现在包括一个REST API函数,该函数模拟了称为online_report的在线报告功能。 该示例指定报告名称(AuditTrailSample), indexFrom规范以及报告参数规范的列表,例如QUERY_FROM_DATEQUERY_TO_DATE ,等等。 注意资源是online_report 。 该API函数返回一定数量的结果记录。 默认值为20,但是您可以使用可选的FetchSize参数指定一个最大为30000的值。

您可以使用indexFrom参数进行分页,如清单10所示。如果指定了0,则将获取报告的前20行。 如果指定了20,则将获取第20-39行,依此类推。

清单10.获取报告结果
Request:
curl -k --header "Authorization: Bearer f8839909-5dd9-4cd3-b53e-abe1d4b2d445" 
	-i -H "Content-Type: application/json" -X POST -d 
'{"reportName":"AuditTrailSample","indexFrom":"1","reportParameter":
{"QUERY_FROM_DATE":"2012-12-01","QUERY_TO_DATE":"2013-12-04","OSUser":"%",
"DBUser":"newuser","SHOW_ALIASES":"TRUE","REMOTE_SOURCE":"%"}}' 
	https://10.148.54.136:8443/restAPI/online_report
Response: HTTP/1.1 200 OK Server: Apache-Coyote/1.1 Set-Cookie: JSESSIONID=65D5D93675858A4E66A7DBDF1B3C21BB; Path=/; Secure; HttpOnly Content-Type: application/json;charset=UTF-8 Content-Length: 6339 Date: Thu, 02 Jan 2014 17:12:40 GMT [ { "Date": "2013-12-03 10:00:00.0", "Instance Id": "7967702005115017", "Session Id": "7967777401785489", "Construct Id": "df2aeb4a38ed9fe51ec043badeab9548b93d3f3f", "Total access": "5868", "Failed Sqls": "0", "DB2 i Current User": "", "Timestamp": "2013-12-03 10:59:59.0", "DB User Name": "newuser", "OS User": "da39a3ee5e6b4b0d3255bfef95601890afd80709", "Source Program": "PORTAL", "Server IP": "10.10.177.111", "Client IP": "10.10.152.179", "Service Name": "SYB30", "Client Host Name": "fd342cd47d2bfa4243d6670c646db6fb0d6347d8", "Server Type": "SYBASE" }, { "Date": "2013-12-03 10:00:00.0", "Instance Id": "7967702005115025", "Session Id": "7967777401785489", "Construct Id": "14a81f3de2e5e3693f9d9cca71e6a50a4d021b00", "Total access": "5320", "Failed Sqls": "0", "DB2 i Current User": "", "Timestamp": "2013-12-03 10:59:47.0", "DB User Name": "newuser", "OS User": "da39a3ee5e6b4b0d3255bfef95601890afd80709", "Source Program": "PORTAL", "Server IP": "10.10.177.111", "Client IP": "10.10.152.179", "Service Name": "SYB30", "Client Host Name": "fd342cd47d2bfa4243d6670c646db6fb0d6347d8", "Server Type": "SYBASE" }, { "Date": "2013-12-03 10:00:00.0", "Instance Id": "7967702005115090", "Session Id": "7967777401785489", "Construct Id": "d621684048e1d5dada7be27db66ed5950722a3e3", "Total access": "6437", "Failed Sqls": "0", "DB2 i Current User": "", "Timestamp": "2013-12-03 10:59:59.0", "DB User Name": "newuser", "OS User": "da39a3ee5e6b4b0d3255bfef95601890afd80709", "Source Program": "PORTAL", "Server IP": "10.10.177.111", "Client IP": "10.10.152.179", "Service Name": "SYB30", "Client Host Name": "fd342cd47d2bfa4243d6670c646db6fb0d6347d8", "Server Type": "SYBASE" }, .

如果报告结果为空,则响应类似于清单11中的结果。

清单11.报告结果为空时的响应
{
  "ID": 0,
  "Message": "ID=0 The Query did not retrieve any records"
}

如果indexFrom参数指定的数字大于结果中的记录数,则响应如清单12所示。

清单12.当indexFrom大于result中的记录时的响应
{
  "ID": 0,
  "Message": "ID=0 No More Records Found"
}

提示:每个报告的online_report资源报告参数都不同。 restapi资源仅指定一个名为reportParameter的参数,而未指定内部参数结构。 查找所需报告参数的一种方法是查看该报告的定制器屏幕(请参见图4 )。 另一种方法是使用空的reportParameter调用API; 响应中的错误消息指定了缺少的参数,如清单13所示。

清单13.调用带有空reportParameter报告以发现所需的报告参数
Request:
curl -k   --header "Authorization: Bearer 1ece8a8a-e60d-47a3-a4f4-d7703bb7c7c9"  
-i -H "Content-Type: application/json" -X POST -d 
'{"reportName":"Guardium Logins","indexFrom":"10","reportParameter":{}}'
	 https://10.10.9.248:8443/restAPI/online_report

Response:
{

  "ErrorCode": 1001,
  "ErrorMessage": "create_online_report: ERR=1001 One or more report parameters missing
	 - QUERY_FROM_DATE,QUERY_TO_DATE,SHOW_ALIASES,REMOTE_SOURCE,HostnameLike"

}

可以对报告结果进行排序。 如果指定了sortColumn ,则必须是报告字段之一的列标题。 sortType必须为ascdesc

如果使用了这些参数,则会对在线报告api请求的结果进行相应的排序。 例如,以下命令按组类型以升序对结果进行排序。

清单14.对报告结果进行排序
Request:

curl -k --header "Authorization:Bearer b440a718-9dea-40cb-b59a-8a7c427e25d2" -i
-H "Content-Type: application/json" -X POST -d '{"reportName":"Guardium Group
Details","indexFrom":"1","reportParameter":
{"QUERY_FROM_DATE":"2014-05-08","QUERY_TO_DATE":"2014-09-10","Group
Description":"%","Group Type":"%","SHOW_ALIASES":"TRUE","REMOTE_SOURCE":"%"}
,"fetchSize":"10000","sortColumn":"Group Type","sortType":"asc"}'
https://localhost:8443/restAPI/online_report

结论

我们希望本文引起了您对某些新REST API的兴趣,并且您正在考虑它们在您的环境和解决方案中如何有用。 我们希望听到使用这些API的任何项目,以及任何进一步增强其功能的建议。

致谢

作者要感谢Joe DiPietro和John Haldeman的有见地的评论。


翻译自: https://www.ibm.com/developerworks/data/library/techarticle/dm-1404guardrestapi/index.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值