AWS WAF Modeling Rule

Modeling Rule

AWS WAF

Details

IDAWS_WAF_ModelingRule
From Version8.2.0
TagsAWS_WAF

Rules (XIF)

[MODEL: dataset="aws_waf_raw"]
alter
  headers = json_extract(httpRequest, "$.headers") -> []
| alter parameters = arraymap(headers ,concat("{","\"",json_extract_scalar("@element", "$.name"),"\"", ":", "\"",json_extract_scalar("@element", "$.value"),"\"", "}"))
| alter parameters = replace(arraystring(parameters, ","),"},{", ",") -> {}
| alter http_method=json_extract_scalar(httprequest, "$.httpMethod")

|alter xdm.observer.action=action,
xdm.source.ipv4=json_extract_scalar(httprequest, "$.clientIp"),
xdm.source.location.country=json_extract_scalar(httprequest, "$.country"),
xdm.network.http.method=if(http_method = "ACL", XDM_CONST.HTTP_METHOD_ACL, http_method = "BASELINE_CONTROL", XDM_CONST.HTTP_METHOD_BASELINE_CONTROL, http_method = "BIND", XDM_CONST.HTTP_METHOD_BIND, http_method = "CHECKIN", XDM_CONST.HTTP_METHOD_CHECKIN, http_method = "CHECKOUT", XDM_CONST.HTTP_METHOD_CHECKOUT, http_method = "CONNECT", XDM_CONST.HTTP_METHOD_CONNECT, http_method = "COPY", XDM_CONST.HTTP_METHOD_COPY, http_method = "DELETE", XDM_CONST.HTTP_METHOD_DELETE, http_method = "GET", XDM_CONST.HTTP_METHOD_GET, http_method = "HEAD", XDM_CONST.HTTP_METHOD_HEAD, http_method = "LABEL", XDM_CONST.HTTP_METHOD_LABEL, http_method = "LINK", XDM_CONST.HTTP_METHOD_LINK, http_method = "LOCK", XDM_CONST.HTTP_METHOD_LOCK, http_method = "MERGE", XDM_CONST.HTTP_METHOD_MERGE, http_method = "MKACTIVITY", XDM_CONST.HTTP_METHOD_MKACTIVITY, http_method = "MKCALENDAR", XDM_CONST.HTTP_METHOD_MKCALENDAR, http_method = "MKCOL", XDM_CONST.HTTP_METHOD_MKCOL, http_method = "MKREDIRECTREF", XDM_CONST.HTTP_METHOD_MKREDIRECTREF, http_method = "MKWORKSPACE", XDM_CONST.HTTP_METHOD_MKWORKSPACE, http_method = "MOVE", XDM_CONST.HTTP_METHOD_MOVE, http_method = "OPTIONS", XDM_CONST.HTTP_METHOD_OPTIONS, http_method = "ORDERPATCH", XDM_CONST.HTTP_METHOD_ORDERPATCH, http_method = "PATCH", XDM_CONST.HTTP_METHOD_PATCH, http_method = "POST", XDM_CONST.HTTP_METHOD_POST, http_method = "PRI", XDM_CONST.HTTP_METHOD_PRI, http_method = "PROPFIND", XDM_CONST.HTTP_METHOD_PROPFIND, http_method = "PROPPATCH", XDM_CONST.HTTP_METHOD_PROPPATCH, http_method = "PUT", XDM_CONST.HTTP_METHOD_PUT, http_method = "REBIND", XDM_CONST.HTTP_METHOD_REBIND, http_method = "REPORT", XDM_CONST.HTTP_METHOD_REPORT, http_method = "SEARCH", XDM_CONST.HTTP_METHOD_SEARCH, http_method = "TRACE", XDM_CONST.HTTP_METHOD_TRACE, http_method = "UNBIND", XDM_CONST.HTTP_METHOD_UNBIND, http_method = "UNCHECKOUT", XDM_CONST.HTTP_METHOD_UNCHECKOUT, http_method = "UNLINK", XDM_CONST.HTTP_METHOD_UNLINK, http_method = "UNLOCK", XDM_CONST.HTTP_METHOD_UNLOCK, http_method = "UPDATE", XDM_CONST.HTTP_METHOD_UPDATE, http_method = "UPDATEREDIRECTREF", XDM_CONST.HTTP_METHOD_UPDATEREDIRECTREF, http_method = "VERSION_CONTROL", XDM_CONST.HTTP_METHOD_VERSION_CONTROL, to_string(http_method)),
xdm.session_context_id=json_extract_scalar(httprequest, "$.requestId"),
xdm.target.resource.id=httpsourceid,
xdm.target.resource.name=httpsourcename,
xdm.network.rule=terminatingruleid,
xdm.network.http.url=json_extract_scalar(httprequest, "$.uri"),
xdm.target.host.hostname=json_extract_scalar(parameters, "$.Host"),
xdm.source.user_agent=json_extract_scalar(parameters, "$.User-Agent"),
xdm.network.http.referrer=json_extract_scalar(parameters, "$.Referer");

Schema

aws_waf_raw

Field Type Array?
action string
httpRequest string
httpsourceid string
httpsourcename string
parameters string
terminatingruleid string
timestamp string
Raw JSON
{
    "aws_waf_raw": {
      "httpRequest": {
        "type": "string",
        "is_array": false
      },
      "action": {
        "type": "string",
        "is_array": false
      },
      "httpsourceid": {
        "type": "string",
        "is_array": false
      },
      "httpsourcename": {
        "type": "string",
        "is_array": false
      },
      "terminatingruleid": {
        "type": "string",
        "is_array": false
      },
      "parameters": {
        "type": "string",
        "is_array": false
      },
      "timestamp": {
        "type": "string",
        "is_array": false
      }              
    }
  }