你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

声明和声明规则

若要了解声明规则的语法,必须首先了解证明策略声明。

声明

声明是组合在一起以提供相关信息的一组属性。 对于 Azure 证明,声明包含以下属性:

  • 类型:表示声明类型的字符串值。
  • value:表示声明值的布尔值、整数值或字符串值。
  • valueType:存储在 value 属性中的信息的数据类型。 支持的类型有 String、Integer 和 Boolean。 如果未定义,则默认值为“String”。
  • issuer:有关声明的颁发者的信息。 颁发者为以下类型之一。
    • AttestationService:某些声明由 Azure 证明提供给策略作者,证明策略作者可以使用这些声明来创建相应的策略。
    • AttestationPolicy:此策略(由管理员定义)本身可以在处理过程中向传入证据添加声明。 本例中的颁发者设置为“AttestationPolicy”。
    • CustomClaim:证明者(客户端)还可以向证明证据添加更多声明。 本例中的颁发者设置为“CustomClaim”。

如果未定义,则默认值为“CustomClaim”。

声明规则

策略引擎使用传入声明集来计算证明结果。 声明规则是一组条件,用于验证传入声明并执行定义的操作。

Conditions list => Action (Claim)

声明规则的 Azure 证明评估涉及以下步骤:

  • 如果条件列表不存在,请执行包含指定声明的操作。 如果存在,请评估条件列表中的条件。
  • 如果条件列表的评估结果为 false,则停止。 否则,请继续。

声明规则中的条件用于确定是否需要执行该操作。 条件列表是由“&&”运算符分隔的一系列条件。

条件列表的结构如下:

Condition && Condition && ...

条件结构如下:

Identifier:[ClaimPropertyCondition, ClaimPropertyCondition,…]

此条件列表由针对声明的各种属性的各个条件构成。 条件可以具有可选标识符,该标识符可用于引用满足条件的声明。 此引用可用于其他条件或同一规则的操作。

例如:

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);

下面是可用于检查条件的运算符:

Valuetype 支持的运算
Integer ==(等于)、!=(不等于)、<=(小于或等于)、<(小于)、>=(大于或等于)、>(大于)
字符串 ==(等于)、!=(不等于)
布尔型 ==(等于)、!=(不等于)

条件列表的评估:

  • 如果存在“&&”运算符,则表明仅当列表中的所有条件都评估为 true 时,条件列表才会评估为 true。
  • 条件表示对声明集的筛选条件。 如果至少找到了一个满足条件的声明,则条件本身的评估结果为 true。
  • 如果声明的每个属性都满足条件中存在的相应声明属性条件,则该声明满足条件所表示的筛选条件。

策略中允许的操作集:

操作谓词 说明 适用的策略部分
permit() 传入声明集可用于计算 issuancerules。 不采用任何声明作为参数。 authorizationrules
deny() 传入声明集不应用于计算 issuancerules。不采用任何声明作为参数 authorizationrules
add(claim) 向传入声明集添加声明。 向传入声明集添加的任何声明都可用于后续声明规则。 authorizationrulesissuancerules
issue(claim) 向传入和传出声明集添加声明。 issuancerules
issueproperty(claim) 向传入和属性声明集添加声明。 issuancerules

后续步骤