自定义条件规则的基本元素说明

配置审计使用自定义条件规则作为规则部署实施的方式之一,自定义条件规则由资源(Resource)、条件(Condition)、调试(DryRun)等基本元素组成。

条件(Condition)是自定义条件规则的重点元素,由条件子句构成,多个子句之间可以通过逻辑与(and)和逻辑或(or) 一起构成更为复杂的逻辑结构。由逻辑符串联的一组子句称为条件组。子句是整个条件组的精华,由特征(featurePath)、操作符(operator)和预期值(desiredValue) 组成。

元素名称

是否必选

描述

特征(featurePath)

资源特征。取自资源(Resource)的属性或其相关的来源特征,通过JSONPath描述,例如:资源状态属性为Status, 用特征描述为$.Status

特征来源(featureSource)

资源特征的来源。

操作符(operator)

条件的操作符。

预期值(desired)

一目操作符的情况。允许为空,例如:操作符为IsStringEmpty。

特征(featurePath)

权限策略支持JSONPath格式。当您创建或更新权限策略时,配置审计会检查JSONPath格式的正确。您也可以使用第三方JSONPath格式验证器和编辑器自行检查JSONPath格式的正确性。关于JSONPath语法标准,请参见JSONPath

JSONPath

Description

$

the root object/element

@

the current object/element

. or []

child operator

..

recursive descent. JSONPath borrows this syntax from E4X.

*

wildcard. All objects/elements regardless their names.

[]

subscript operator. XPath uses it to iterate over element collections and for predicates. In Javascript and JSON it is the native array operator.

[,]

Union operator in XPath results in a combination of node sets. JSONPath allows alternate names or array indices as a set.

[start:end:step]

array slice operator borrowed from ES4.

?()

applies a filter (script) expression.

()

script expression, using the underlying script engine.

  • 示例1:ACS::ECS::Instance状态特征$.Status 类型判定为String,会推荐String类型的操作符。

  • 示例2:ACS::ECS::Instance标签特征$.Tags[*].TagKey,结果为Array。

  • 示例3:ACS::ECS::SecurityGroup安全组权限配置特征$.Permissions.Permission[?(@.Policy=='Accept')][?(@.IpProtocol=='TCP' || @.IpProtocol=='UDP')][?(@.SourceCidrIp=='0.0.0.0/0')].PortRange,表示允许条目为TCP或UDP协议且来源IP为任意IP的端口,可以配置端口是否包括22和3389等。

    {
          "featureSource": "CONFIGURATION",
          "desired": "21/21,22/22,23/23,3389/3389,445/445,-1/-1",
          "children": [],
          "operator": "ExcludeAll",
          "featurePath": "$.Permissions.Permission[?(@.Policy=='Accept')][?(@.IpProtocol=='TCP' || @.IpProtocol=='UDP')][?(@.SourceCidrIp=='0.0.0.0/0')].PortRange"
        }

特征来源(featureSource)

资源特征的来源,具体如下:

  • CONFIGURATION(默认值):资源属性配置。空值也按照资源属性处理。

  • RESOURCE_RELATIONSHIP_${targetResourceType}:资源关系,例如:RESOURCE_RELATIONSHIP_ACS::ECS::DISK

操作符(operator

操作符包括逻辑操作符和计算操作符,逻辑操作符包括逻辑与(and)和逻辑或(or),计算操作符如下表所示。

操作符

描述

SizeLess

数组元素个数小于

DistinctSizeGreater

元素去重后个数大于

AllGreaterOrEquals

元素全部大于等于

InAllItem

所有元素包含

AllLessOrEquals

元素全部小于等于

AllGreater

元素全部大于

SizeGreater

数组元素个数大于

NotContainsIP

数组中不包含指定的IP地址

ContainsIP

数组中包含指定的IP地址

ContainsAny

数组中不包含目标数组中的任意对象

NotContainsNull

数组中不包含空元素

NotContainsInternetCidr

不包含公网IP地址段

IsNotEmpty

不为空

AllIn

全部存在

IsEmpty

为空

ExcludeAll

排除全部

ContainsAll

包含全部

NotIn

不存在

In

存在

NotContains

不包含

Contains

包含

NotBase64Contains

不包含

Base64Contains

包含

NotBoolEquals

不等于

BoolEquals

等于

NotEquals

不等于

Equals

等于

LessOrEquals

小于等于

Less

小于

Greater

大于

GreaterOrEquals

大于等于

StringItemSizeGreater

字符串分割元素个数大于指定值

StringMatch

匹配正则

NotStringTrimIn

有效值不存在

StringTrimIn

有效值存在

IsNotStringEmpty

不为空

IsStringEmpty

为空

NotStringContains

不包含

StringContains

包含

NotStringIn

不存在

StringIn

存在

NotStringEquals

不等于

StringEquals

等于

预期值(desired)

允许为空,例如:操作符为IsStringEmpty。