Share via


Attesteringsprincipversion 1.0

Instansägare kan använda principen Azure Attestation för att definiera vad som måste verifieras under attesteringsflödet. Den här artikeln beskriver hur attesteringstjänsten och principmotorn fungerar. Varje attesteringstyp har en egen attesteringsprincip. Grammatik och bearbetning som stöds är i stort sett desamma.

Principversion 1.0

Den lägsta versionen av principen som stöds av tjänsten är version 1.0.

Ett diagram som visar Azure Attestation med principversion 1.0.

Attesteringstjänstens flöde är följande:

  • Plattformen skickar attesteringsbeviset i attest-anropet till attesteringstjänsten.
  • Attesteringstjänsten parsar bevisen och skapar en lista över anspråk som används i attesteringsutvärderingen. Dessa anspråk kategoriseras logiskt som inkommande anspråksuppsättningar.
  • Den uppladdade attesteringsprincipen används för att utvärdera bevis över reglerna som skapats i attesteringsprincipen.

Principversion 1.0 har tre segment:

  • version: Versionen är versionsnumret för grammatiken som följs.
  • authorizationrules: En samling anspråksregler som kontrolleras först för att avgöra om attesteringen ska fortsätta till utfärdanderegler. Använd det här avsnittet för att filtrera bort anrop som inte kräver att utfärdandereglerna tillämpas. Inga anspråk kan utfärdas från det här avsnittet till svarstoken. Dessa regler kan användas för att misslyckas med attestering.
  • utfärdanderegler: En samling anspråksregler som utvärderas för att lägga till information i attesteringsresultatet enligt definitionen i principen. Anspråksreglerna gäller i den ordning de definieras. De är också valfria. Dessa regler kan användas för att lägga till i den utgående anspråksuppsättningen och svarstoken. Dessa regler kan inte användas för attestering som misslyckas.

Följande anspråk stöds av principversion 1.0 som en del av inkommande anspråk.

TPM-attestering

Använd dessa anspråk för att definiera auktoriseringsregler i en TPM-attesteringsprincip (Trusted Platform Module):

  • aikValidated: Det booleska värdet som innehåller information om attesteringsidentitetsnyckelcertifikatet (AIK) har verifierats eller inte.
  • aikPubHash: Strängen som innehåller den offentliga AIK-nyckeln base64 (SHA256) i DER-format.
  • tpmVersion: Heltalsvärdet som innehåller TPM-huvudversionen.
  • secureBootEnabled: Det booleska värdet som anger om säker start är aktiverat.
  • iommuEnabled:Det booleska värdet som anger om minneshanteringsenheten för indatautdata är aktiverad.
  • bootDebuggingDisabled: Det booleska värdet som anger om startfelsökning är inaktiverat.
  • notSafeMode: Det booleska värdet som anger om Windows inte körs i felsäkert läge.
  • notWinPE: Det booleska värdet som anger om Windows inte körs i WinPE-läge.
  • vbsEnabled: Det booleska värdet som anger om virtualiseringsbaserad säkerhet (VBS) är aktiverat.
  • vbsReportPresent: Det booleska värdet som anger om en VBS-enklavrapport är tillgänglig.

VBS-attestering

Använd följande anspråk för att definiera auktoriseringsregler i en VBS-attesteringsprincip:

  • enclaveAuthorId: Strängvärdet som innehåller base64Url-kodat värde för enklavens författar-ID. Det är författarens identifierare för den primära modulen för enklaven.
  • enclaveImageId: Strängvärdet som innehåller det Base64Url-kodade värdet för enklavens avbildnings-ID. Det är bildidentifieraren för den primära modulen för enklaven.
  • enclaveOwnerId: Strängvärdet som innehåller det Base64Url-kodade värdet för enklavens ägar-ID. Det är identifieraren för ägaren till enklaven.
  • enclaveFamilyId: Strängvärdet som innehåller det Base64Url-kodade värdet för enklavens familje-ID. Det är familjeidentifieraren för den primära modulen för enklaven.
  • enclaveSvn: Heltalsvärdet som innehåller säkerhetsversionsnumret för den primära modulen för enklaven.
  • enclavePlatformSvn: Heltalsvärdet som innehåller säkerhetsversionsnumret för plattformen som är värd för enklaven.
  • enclaveFlags: EnklavenFlags-anspråket är ett heltalsvärde som innehåller flaggor som beskriver körningsprincipen för enklaven.

Exempelprinciper för olika attesteringstyper

Exempelprincip för TPM:

version=1.0;

authorizationrules { 
    => permit();
};


issuancerules
{
[type=="aikValidated", value==true]&& 
[type=="secureBootEnabled", value==true] &&
[type=="bootDebuggingDisabled", value==true] && 
[type=="notSafeMode", value==true] => issue(type="PlatformAttested", value=true);
};