自定義條件規(guī)則的基本元素說明
配置審計使用自定義條件規(guī)則作為規(guī)則部署實施的方式之一,自定義條件規(guī)則由資源(Resource)、條件(Condition)、調(diào)試(DryRun)等基本元素組成。
條件(Condition)是自定義條件規(guī)則的重點元素,由條件子句構(gòu)成,多個子句之間可以通過邏輯與(and)和邏輯或(or) 一起構(gòu)成更為復(fù)雜的邏輯結(jié)構(gòu)。由邏輯符串聯(lián)的一組子句稱為條件組。子句是整個條件組的精華,由特征(featurePath)、操作符(operator)和預(yù)期值(desiredValue) 組成。
元素名稱 | 是否必選 | 描述 |
是 | 資源特征。取自資源(Resource)的屬性或其相關(guān)的來源特征,通過JSONPath描述,例如:資源狀態(tài)屬性為Status, 用特征描述為 | |
是 | 資源特征的來源。 | |
是 | 條件的操作符。 | |
否 | 一目操作符的情況。允許為空,例如:操作符為IsStringEmpty。 |
特征(featurePath)
權(quán)限策略支持JSONPath格式。當(dāng)您創(chuàng)建或更新權(quán)限策略時,配置審計會檢查JSONPath格式的正確。您也可以使用第三方JSONPath格式驗證器和編輯器自行檢查JSONPath格式的正確性。關(guān)于JSONPath語法標(biāo)準(zhǔn),請參見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狀態(tài)特征
$.Status
類型判定為String,會推薦String類型的操作符。示例2:ACS::ECS::Instance標(biāo)簽特征
$.Tags[*].TagKey
,結(jié)果為Array。示例3:ACS::ECS::SecurityGroup安全組權(quán)限配置特征
$.Permissions.Permission[?(@.Policy=='Accept')][?(@.IpProtocol=='TCP' || @.IpProtocol=='UDP')][?(@.SourceCidrIp=='0.0.0.0/0')].PortRange
,表示允許條目為TCP或UDP協(xié)議且來源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(默認(rèn)值):資源屬性配置。空值也按照資源屬性處理。
RESOURCE_RELATIONSHIP_${targetResourceType}
:資源關(guān)系,例如:RESOURCE_RELATIONSHIP_ACS::ECS::DISK
。
操作符(operator)
操作符包括邏輯操作符和計算操作符,邏輯操作符包括邏輯與(and)和邏輯或(or),計算操作符如下表所示。
操作符 | 描述 |
SizeLess | 數(shù)組元素個數(shù)小于 |
DistinctSizeGreater | 元素去重后個數(shù)大于 |
AllGreaterOrEquals | 元素全部大于等于 |
InAllItem | 所有元素包含 |
AllLessOrEquals | 元素全部小于等于 |
AllGreater | 元素全部大于 |
SizeGreater | 數(shù)組元素個數(shù)大于 |
NotContainsIP | 數(shù)組中不包含指定的IP地址 |
ContainsIP | 數(shù)組中包含指定的IP地址 |
ContainsAny | 數(shù)組中不包含目標(biāo)數(shù)組中的任意對象 |
NotContainsNull | 數(shù)組中不包含空元素 |
NotContainsInternetCidr | 不包含公網(wǎng)IP地址段 |
IsNotEmpty | 不為空 |
AllIn | 全部存在 |
IsEmpty | 為空 |
ExcludeAll | 排除全部 |
ContainsAll | 包含全部 |
NotIn | 不存在 |
In | 存在 |
NotContains | 不包含 |
Contains | 包含 |
NotBase64Contains | 不包含 |
Base64Contains | 包含 |
NotBoolEquals | 不等于 |
BoolEquals | 等于 |
NotEquals | 不等于 |
Equals | 等于 |
LessOrEquals | 小于等于 |
Less | 小于 |
Greater | 大于 |
GreaterOrEquals | 大于等于 |
StringItemSizeGreater | 字符串分割元素個數(shù)大于指定值 |
StringMatch | 匹配正則 |
NotStringTrimIn | 有效值不存在 |
StringTrimIn | 有效值存在 |
IsNotStringEmpty | 不為空 |
IsStringEmpty | 為空 |
NotStringContains | 不包含 |
StringContains | 包含 |
NotStringIn | 不存在 |
StringIn | 存在 |
NotStringEquals | 不等于 |
StringEquals | 等于 |
預(yù)期值(desired)
允許為空,例如:操作符為IsStringEmpty。