Uma regra de condição personalizada consiste em elementos básicos como Resource, Condition e DryRun. O Cloud Config usa essas regras como uma das formas de implantar e aplicar políticas.
A condição é um elemento fundamental de uma regra de condição personalizada. Ela consiste em cláusulas combináveis com os operadores lógicos AND ou OR para formar estruturas lógicas mais complexas. Um conjunto de cláusulas unidas por operadores lógicos constitui um grupo de condições. Cada cláusula inclui os elementos featurePath, operator e desired.
|
Elemento |
Obrigatório |
Descrição |
|
Sim |
Característica do recurso descrita com sintaxe JSONPath. Por exemplo, a propriedade de status do recurso é representada como |
|
|
Sim |
Origem da característica do recurso. |
|
|
Sim |
Operador condicional usado na comparação. |
|
|
Não |
Valor esperado para comparação. Este campo pode ficar vazio ao usar um operador unário, como IsStringEmpty. |
featurePath
Ao crie ou atualize políticas, o Cloud Config valida os valores de featurePath conforme a sintaxe JSONPath. Você também pode usar validadores JSONPath de terceiros para verificar suas expressões. Para mais informações, consulte JSONPath.
|
JSONPath |
Descrição |
|
$ |
Objeto ou elemento raiz. |
|
@ |
Objeto ou elemento atual. |
|
. ou [] |
Operador filho. |
|
.. |
Descida recursiva. O JSONPath adota essa sintaxe do E4X. |
|
* |
Caractere curinga. Representa todos os objetos ou elementos, independentemente do nome. |
|
[] |
Operador de subscrito. No XPath, itera sobre coleções de elementos e defina predicados. Em JavaScript e JSON, funciona como operador nativo de array. |
|
[,] |
Operador de união do XPath que combina conjuntos de nós. No JSONPath, permite alternar nomes ou índices de array como um conjunto. |
|
[start:end:step] |
Operador de fatiamento de array herdado do ES4. |
|
?() |
Aplica uma expressão de filtro (script). |
|
() |
Expressão de script executada pelo mecanismo subjacente. |
Exemplo 1: A característica de status de ACS::ECS::Instance é
$.Status, cujo tipo é identificado como String. Use um operador compatível com String.Exemplo 2: A característica de tag de ACS::ECS::Instance é
$.Tags[*].TagKey, e o resultado é um Array.-
Exemplo 3: A característica de configuração de permissão de ACS::ECS::SecurityGroup é
$.Permissions.Permission[?(@.Policy=='Accept')][?(@.IpProtocol=='TCP' || @.IpProtocol=='UDP')][?(@.SourceCidrIp=='0.0.0.0/0')].PortRange. Essa expressão seleciona entradas cuja política seja Accept, com protocolo TCP ou UDP e bloco CIDR de source 0.0.0.0/0. Em seguida, verifique se o intervalo de portas inclui portas sensíveis, como 22 e 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
Origem da característica do recurso.
CONFIGURATION (valor padrão): configuração da propriedade do recurso. Se featureSource estiver vazio, o sistema usará a propriedade do recurso por padrão.
RESOURCE_RELATIONSHIP_${targetResourceType}: relacionamento entre recursos, comoRESOURCE_RELATIONSHIP_ACS::ECS::DISK.
operator
Os operadores dividem-se em lógicos e de cálculo. Os operadores lógicos incluem AND e OR. A tabela a seguir detalha os operadores de cálculo disponíveis.
|
Operador |
Descrição |
|
SizeLess |
Quantidade de elementos do array menor que o valor especificado. |
|
DistinctSizeGreater |
Quantidade de elementos distintos após deduplicação maior que o valor informado. |
|
AllGreaterOrEquals |
Todos os elementos são maiores ou iguais ao valor definido. |
|
InAllItem |
Todos os elementos contêm o valor especificado. |
|
AllLessOrEquals |
Cada elemento é menor ou igual ao limite estabelecido. |
|
AllGreater |
Todos os elementos excedem o valor de referência. |
|
SizeGreater |
Número de elementos do array superior ao valor indicado. |
|
NotContainsIP |
O array não contém o endereço IP especificado. |
|
ContainsIP |
O array inclui o endereço IP informado. |
|
ContainsAny |
Nenhum objeto do array de destino está presente no array avaliado. |
|
NotContainsNull |
Ausência de elementos vazios no array. |
|
NotContainsInternetCidr |
Não contém blocos CIDR públicos. |
|
IsNotEmpty |
Conteúdo não vazio. |
|
AllIn |
Todos os valores existem na lista. |
|
IsEmpty |
Conteúdo vazio. |
|
ExcludeAll |
Exclui todos os valores listados. |
|
ContainsAll |
Inclui todos os valores especificados. |
|
NotIn |
Valores inexistentes na lista. |
|
In |
Valores presentes na lista. |
|
NotContains |
Não contém o valor especificado. |
|
Contains |
Contém o valor especificado. |
|
NotBase64Contains |
Não contém o valor codificado em Base64. |
|
Base64Contains |
Contém o valor codificado em Base64. |
|
NotBoolEquals |
Diferente do valor booleano informado. |
|
BoolEquals |
Igual ao valor booleano informado. |
|
NotEquals |
Diferente do valor especificado. |
|
Equals |
Igual ao valor especificado. |
|
LessOrEquals |
Menor ou igual ao valor definido. |
|
Less |
Menor que o valor definido. |
|
Greater |
Maior que o valor definido. |
|
GreaterOrEquals |
Maior ou igual ao valor definido. |
|
StringItemSizeGreater |
Quantidade de elementos resultantes da divisão da string excede o valor especificado. |
|
StringMatch |
Correspondência via expressão regular. |
|
NotStringTrimIn |
Valores válidos ausentes após remoção de espaços. |
|
StringTrimIn |
Valores válidos presentes após remoção de espaços. |
|
IsNotStringEmpty |
String não vazia. |
|
IsStringEmpty |
String vazia. |
|
NotStringContains |
A string não contém o trecho especificado. |
|
StringContains |
A string contém o trecho especificado. |
|
NotStringIn |
Valor inexistente na lista de strings. |
|
StringIn |
Valor existente na lista de strings. |
|
NotStringEquals |
Diferente da string especificada. |
|
StringEquals |
Igual à string especificada. |
desired
O elemento desired pode permanecer vazio ao usar um operador unário, como IsStringEmpty.