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中。
| 字符 | 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 所在的目标主机。有效值:
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)"