create_computed_attribute

此 API 用于创建根据指定表达式计算的定制属性。 然后,该计算属性可用于报告。

为帮助阻止 SQL 注入攻击,在计算属性中不允许使用下列字和字符:

ALTER、CREATE、DELETE、DROP、INSERT、TRUNCATE、UPDATE、分号 (;)、双短划线 (--) 以及斜杠与星号 (/*)。

要替换不允许使用的字符,可以使用 MySQL char 函数。 例如,假设您想创建一个包含分号的计算属性。 包含分号的 API 调用如下所示:
grdapi create_computed_attribute 
attributeLabel="app_user" entityLabel="Access Period" 
expression="SUBSTRING_INDEX(APP_USER_NAME,';',1)" 
将返回以下错误:
create_computed_attribute:
ERR=2410
Error Creating New Computed Attribute - Invalid Expression Or
expression includes not allowed characters
要更正该示例,请使用 MySQL char 函数(其中 59 是分号的代码):
grdapi create_computed_attribute 
attributeLabel="app_user" entityLabel="Access Period" 
expression="SUBSTRING_INDEX(APP_USER_NAME,char(59),1)"
这将返回以下信息:
ID=20000
Attribute for Expression SUBSTRING_INDEX(APP_USER_NAME,char(59),1) Created

char () 等效项显示在 表 1中。

表 1. MySQL 等价字符
字符 MySQL char()
; (分号) char(59)
-- (双短划线) char(45,45)
/* (斜杠星号) char(47,42)

此 API 在 Guardium V9.5 及更高版本中可用。

此 REST API 在 Guardium V11.0 及更高版本中可用。

REST API 语法

此 API 可通过 POST 方法,以 REST 服务的形式使用。 请按如下方式调用此 API:
POST https://[Guardium hostname or IP address]:8443/restAPI/computed_attribute

GuardAPI 语法

create_computed_attribute parameter=value

参数

参数 值类型 描述
attributeLabel 字符串 必需。 显示在报告中的计算属性名称。
entityLabel 字符串 必需。 与属性相关联的主实体的名称,例如,Session、Object 或 FULL_SQL。
expression 字符串 必需。 用于为新属性生成计算值的 SQL 表达式。
api_target_host 字符串

指定执行 API 所在的目标主机。有效值:
  • all_managed:在所有受管单元上执行,但不在中央管理器上执行
  • all:在所有受管单元和中央管理器上执行
  • group:<group name>: 在 <group name> 标识的所有受管单元上执行
  • 受管单元的主机名或 IP 地址:从中央管理器指定,以便在受管单元上执行。 例如,api_target_host=10.0.1.123
  • 中央管理器的主机名或 IP 地址:从受管单元指定,以便在中央管理器上执行。 例如,api_target_host=10.0.1.123

IP 地址必须符合网络的 IP 方式。 在双重 IP 方式下,请使用向中央管理器注册受管单元时使用的 IP 协议。 例如,如果该注册使用的是 IPv6,请指定 IPv6 地址。 主机名与 IP 方式无关,可以在任何方式下使用。

示例

要创建与 Access Period 实体相关联的计算属性 app_user:

grdapi create_computed_attribute 
attributeLabel="app_user" entityLabel="Access Period" 
expression="SUBSTRING_INDEX(APP_USER_NAME,char(59),1)"
要创建与 Session 实体相关联的 Oracle_OS_user 属性:
grdapi create_computed_attribute 
attributeLabel="Oracle_OS_User" entityLabel="Session" 
expression="SUBSTRING_INDEX(  SUBSTRING(REPLACE(UID_CHAIN,' ',''),1,LENGTH(REPLACE(UID_CHAIN,' ','')) 
-  LOCATE('lqsi,',REVERSE(REPLACE(UID_CHAIN,' ','')))-4),',',-1)"