Declaração e regras de declaração
Para entender a gramática das regras de declaração, primeiro você precisará entender as declarações de política de atestado.
Declaração
Uma declaração é um conjunto de propriedades agrupadas para fornecer informações relevantes. No Atestado do Azure, uma declaração contém as seguintes propriedades:
- type: um valor de cadeia de caracteres que representa o tipo da declaração.
- value: um valor booliano, um inteiro ou um valor de cadeia de caracteres que representa o valor da declaração.
- valueType: o tipo de dados das informações armazenadas na propriedade value. Os tipos compatíveis são String, Integer e Boolean. Se não for definido, o valor padrão será "String".
- issuer: informações sobre o emissor da declaração. O emissor é um dos tipos a seguir.
- AttestationService: algumas declarações são disponibilizadas para o autor da política pelo Atestado do Azure. O autor da política de atestado pode usá-las para criar a política apropriada.
- AttestationPolicy: a própria política (conforme definido pelo administrador) pode adicionar declarações à evidência de entrada durante o processamento. O emissor, nesse caso, é definido como "AttestationPolicy".
- CustomClaim: o atestador (cliente) também pode adicionar outras declarações à evidência de atestado. O emissor, nesse caso, é definido como "CustomClaim".
Se não for definido, o valor padrão será "CustomClaim".
Regra de declaração
O conjunto de declarações de entrada é usado pelo mecanismo de política para calcular o resultado do atestado. Uma regra de declaração é um conjunto de condições usadas para validar as declarações de entrada e executar a ação definida.
Conditions list => Action (Claim)
A avaliação do Atestado do Azure de uma regra de declaração envolve as seguintes etapas:
- Se a lista de condições não estiver presente, execute a ação com a declaração especificada. Caso contrário, avalie as condições na lista de condições.
- Se a lista de condições for avaliada como falsa, interrompa o procedimento. Caso contrário, continue.
As condições de uma regra de declaração são usadas para determinar se a ação precisa ser executada. A lista de condições é uma sequência de condições separadas pelo operador "&&".
A lista de condições é estruturada como:
Condition && Condition && ...
A condição é estruturada como:
Identifier:[ClaimPropertyCondition, ClaimPropertyCondition,…]
A lista de condições é composta por condições individuais em várias propriedades de uma declaração. Uma condição pode ter um identificador opcional, que pode ser usado para referenciar as declarações que atendem à condição. Essa referência pode ser usada em outras condições ou na ação da mesma regra.
Por exemplo,
F1:[type=="OSName" , issuer=="CustomClaim"] &&
[type=="OSName" , issuer=="AttestationService", value== F1.value ]
=> issueproperty(type="report_validity_in_minutes", value=1440);
F1:[type=="OSName" , issuer=="CustomClaim"] &&
C2:[type=="OSName" , issuer=="AttestationService", value== F1.value ]
=> issue(claim = C2);
Estes são os operadores que podem ser usados para verificar as condições:
Valuetype | Operações compatíveis |
---|---|
Integer | == (igual a), != (diferente de), <= (inferior ou igual a), < (menor que), >= (superior ou igual a), > (maior que) |
Cadeia de caracteres | == (igual a), != (diferente de) |
Boolean | == (igual a), != (diferente de) |
Avaliação da lista de condições:
- A presença do operador "&&" implica que uma lista de condições será avaliada como verdadeira somente se todas as condições da lista forem avaliadas como verdadeiras.
- Uma condição representa os critérios de filtragem no conjunto de declarações. A própria condição é considerada como verdadeira se há, pelo menos, uma declaração que atenda à condição.
- Uma declaração atende ao critério de filtragem representado pela condição se cada uma das propriedades atende às condições da propriedade de declaração correspondentes presentes na condição.
O conjunto de ações permitidas em uma política:
Verbo de ação | Descrição | Seções da política às quais elas se aplicam |
---|---|---|
permit() | O conjunto de declarações de entrada pode ser usado para calcular issuancerules. Não usa nenhuma declaração como parâmetro. | authorizationrules |
deny() | O conjunto de declarações de entrada não deve ser usado para calcular issuancerules. Não usa nenhuma declaração como parâmetro | authorizationrules |
add(claim) | Adiciona a declaração ao conjunto de declarações de entrada. Qualquer declaração adicionada ao conjunto de declarações de entrada está disponível para as próximas regras de declaração. | authorizationrules, issuancerules |
issue(claim) | Adiciona a declaração ao conjunto de declarações de entrada e saída. | issuancerules |
issueproperty(claim) | Adiciona a declaração ao conjunto de declarações de entrada da propriedade. | issuancerules |