Anspråksuppsättningar

Anspråk som genereras i processen för attestera enklaver som använder Microsoft Azure Attestation kan delas in i följande kategorier:

  • Inkommande anspråk: Anspråken som genereras av Microsoft Azure Attestation efter parsning av attesteringsbeviset och kan användas av principförfattare för att definiera auktoriseringsregler i en anpassad princip

  • Utgående anspråk: Anspråken som genereras av Azure Attestation och ingår i attesteringstoken

  • Egenskapsanspråk: Anspråken som skapas som utdata av Azure Attestation. Den innehåller alla anspråk som representerar egenskaperna för attesteringstoken, till exempel kodning av rapporten, rapportens giltighetstid och så vidare.

Inkommande anspråk

SGX-attestering

Anspråk som ska användas av principförfattare för att definiera auktoriseringsregler i en SGX-attesteringsprincip:

  • x-ms-sgx-is-debuggable: Ett booleskt värde som anger om enklavfelsökning är aktiverat eller inte.

    SGX-enklaver kan läsas in med felsökning inaktiverad eller aktiverad. När flaggan är inställd på true i enklaven aktiveras felsökningsfunktioner för enklavkoden. Detta inkluderar möjligheten att komma åt enklavens minne. Därför rekommenderar vi att du anger flaggan till true endast i utvecklingssyfte. Om det är aktiverat i produktionsmiljön behålls inte SGX-säkerhetsgarantier.

    Azure Attestation användare kan använda attesteringsprincipen för att kontrollera om felsökning är inaktiverat för SGX-enklaven. När principregeln har lagts till misslyckas attesteringen när en obehörig användare aktiverar felsökningsstödet för att få åtkomst till enklavens innehåll.

  • x-ms-sgx-product-id: Ett heltalsvärde som anger produkt-ID för SGX-enklaven.

    Enklavens författare tilldelar ett produkt-ID till varje enklav. Med produkt-ID:t kan enklavens författare segmentera enklaver som signerats med samma MRSIGNER. Genom att lägga till en verifieringsregel i attesteringsprincipen kan kunderna kontrollera om de använder de avsedda enklaver. Attesteringen misslyckas om enklavens produkt-ID inte matchar värdet som publicerats av enklavens författare.

  • x-ms-sgx-mrsigner: Ett strängvärde som identifierar författaren till SGX-enklaven.

    MRSIGNER är hashen för enklaven författarens offentliga nyckel som är associerad med den privata nyckeln som används för att signera enklaven binär. Genom att verifiera MRSIGNER via en attesteringsprincip kan kunderna kontrollera om betrodda binärfiler körs i en enklav. När principanspråket inte matchar enklavförfattarens MRSIGNER innebär det att enklavens binära fil inte är signerad av en betrodd källa och attesteringen misslyckas.

    När en enklavförfattare föredrar att rotera MRSIGNER av säkerhetsskäl måste Azure Attestation princip uppdateras för att stödja de nya och gamla MRSIGNER-värdena innan binärfilerna uppdateras. Annars misslyckas auktoriseringskontroller, vilket resulterar i attesteringsfel.

    Attesteringsprincipen måste uppdateras med hjälp av formatet nedan.

    Före nyckelrotation

      version= 1.0;
      authorizationrules 
      {
      [ type=="x-ms-sgx-is-debuggable", value==false]&&
      [ type=="x-ms-sgx-mrsigner", value=="mrsigner1"] => permit(); 
      };
    

    Under nyckelrotation

      version= 1.0;
      authorizationrules 
      {
      [ type=="x-ms-sgx-is-debuggable", value==false]&&
      [ type=="x-ms-sgx-mrsigner", value=="mrsigner1"] => permit(); 
      [ type=="x-ms-sgx-is-debuggable", value==false ]&& 
      [ type=="x-ms-sgx-mrsigner", value=="mrsigner2"] => permit(); 
      };
    

    Efter nyckelrotation

      version= 1.0;
      authorizationrules 
      { 
      [ type=="x-ms-sgx-is-debuggable", value==false]&& 
      [ type=="x-ms-sgx-mrsigner", value=="mrsigner2"] => permit(); 
      };
    
  • x-ms-sgx-mrenclave: Ett strängvärde som identifierar koden och data som läses in i enklavens minne.

    MRENCLAVE är en av enklavens mått som kan användas för att verifiera enklavens binärfiler. Det är hashen för koden som körs inuti enklaven. Mätningen ändras vid varje ändring av den binära enklavens kod. Genom att verifiera MRENCLAVE via en attesteringsprincip kan kunderna kontrollera om avsedda binärfiler körs i en enklav. Men eftersom MRENCLAVE förväntas ändras ofta med eventuella triviala ändringar av den befintliga koden, rekommenderar vi att du verifierar enklavens binärfiler med mrsigner-validering i en attesteringsprincip.

  • x-ms-sgx-svn: Ett heltalsvärde som anger säkerhetsversionsnumret för SGX-enklaven

    Enklavförfattaren tilldelar ett säkerhetsversionsnummer (SVN) till varje version av SGX-enklaven. När ett säkerhetsproblem identifieras i enklavkoden ökar enklavens författare SVN-värdet efter sårbarhetskorrigeringen. För att förhindra att interagera med osäker enklavkod kan kunder lägga till en verifieringsregel i attesteringsprincipen. Om SVN för enklavkoden inte matchar den version som rekommenderas av enklavens författare misslyckas attesteringen.

Dessa anspråk anses vara inaktuella men stöds fullt ut och kommer att fortsätta att ingå i framtiden. Vi rekommenderar att du använder de icke-inaktuella anspråksnamnen:

Inaktuellt anspråk Rekommenderat anspråk
$is kan felsökas x-ms-sgx-is-debuggable
$product-ID x-ms-sgx-product-id
$sgx-mrsigner x-ms-sgx-mrsigner
$sgx-mrenclave x-ms-sgx-mrenclave
$svn x-ms-sgx-svn

TPM-attestering

Anspråk som ska användas av principförfattare för att definiera auktoriseringsregler i en TPM-attesteringsprincip:

  • aikValidated: Booleskt värde som innehåller information om attesteringsidentitetsnyckelcertifikatet (AIK) har verifierats eller inte
  • aikPubHash: Sträng som innehåller base64(SHA256(offentlig AIK-nyckel i DER-format))
  • tpmVersion: Heltalsvärde som innehåller TPM-huvudversionen (Trusted Platform Module)
  • secureBootEnabled: Booleskt värde som anger om säker start är aktiverat
  • iommuEnabled: Booleskt värde som anger om minneshanteringsenhet för indatautdata (Iommu) är aktiverad
  • bootDebuggingDisabled: Booleskt värde som anger om startfelsökning är inaktiverat
  • notSafeMode: Booleskt värde som anger om Windows inte körs i felsäkert läge
  • notWinPE: Booleskt värde som anger om Windows inte körs i WinPE-läge
  • vbsEnabled: Booleskt värde som anger om VBS är aktiverat
  • vbsReportPresent: Booleskt värde som anger om VBS-enklavrapporten är tillgänglig

VBS-attestering

Förutom TPM-attesteringsprincipens anspråk kan dessa anspråk användas av principförfattare för att definiera auktoriseringsregler i en VBS-attesteringsprincip:

  • enclaveAuthorId: Strängvärde som innehåller det Base64Url-kodade värdet för enklavens författar-ID – författarens identifierare för den primära modulen för enklaven
  • enclaveImageId: Strängvärde som innehåller det Base64Url-kodade värdet för enklaven Image id-The image identifier of the primary module for the enclave (Avbildnings-ID för den primära modulen för enklaven)
  • enclaveOwnerId: Strängvärde som innehåller base64Url-kodat värde för enklavens ägar-ID– Identifieraren för ägaren för enklaven
  • enclaveFamilyId: Strängvärde som innehåller base64Url-kodat värde för enklavens familje-ID. Familjeidentifieraren för den primära modulen för enklaven
  • enclaveSvn: Heltalsvärde som innehåller säkerhetsversionsnumret för den primära modulen för enklaven
  • enclavePlatformSvn: Heltalsvärde 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

Utgående anspråk

Gemensamt för alla attesteringstyper

Azure Attestation innehåller dessa anspråk i attesteringstoken för alla attesteringstyper:

  • x-ms-ver: JWT-schemaversion (förväntas vara "1.0")
  • x-ms-attestation-type: Strängvärde som representerar attesteringstyp
  • x-ms-policy-hash: Hash för Azure Attestation utvärderingsprincip som beräknas som BASE64URL(SHA256(UTF8(BASE64URL(UTF8(principtext)))))
  • x-ms-policy-signer: JSON-objekt med en "jwk"-medlem som representerar nyckeln som en kund använde för att signera sin princip. Detta gäller när kunden laddar upp en signerad princip
  • x-ms-runtime: JSON-objekt som innehåller "anspråk" som definieras och genereras i den attesterade miljön. Detta är en specialisering av begreppet "enklaverhållna data", där "enklaven lagrade data" är specifikt formaterad som en UTF-8-kodning av välformulerad JSON
  • x-ms-inittime: JSON-objekt som innehåller "anspråk" som definieras och verifieras vid initieringstiden för den attesterade miljön

Anspråksnamnen nedan används från IETF JWT-specifikationen

  • Jti-anspråk (JWT ID) – unik identifierare för JWT
  • iss-anspråk (utfärdare) – huvudkontot som utfärdade JWT
  • "iat" (utfärdat vid) anspråk – den tidpunkt då JWT utfärdades kl.
  • "exp" (Expiration Time) Claim - Expiration time after which the JWT must not be accepted for processing
  • "nbf" (inte före) Anspråk – Inte före den tid innan vilken JWT inte får godkännas för bearbetning

Dessa anspråksnamn används från IETF EAT-utkastspecifikationen:

  • "Nonce claim" (nonce) – En otransformerad direkt kopia av ett valfritt nonce-värde som tillhandahålls av en klient

Anspråken nedan anses vara inaktuella men stöds fullt ut och kommer att fortsätta att inkluderas i framtiden. Vi rekommenderar att du använder de inaktuella anspråksnamnen.

Inaktuellt anspråk Rekommenderat anspråk
Ver x-ms-ver
Tee x-ms-attesteringstyp
policy_hash x-ms-policy-hash
maa-policyHash x-ms-policy-hash
policy_signer x-ms-policy-signer
rp_data Nonce

SGX-attestering

Dessa caims genereras och ingår i attesteringstoken av tjänsten för SGX-attestering:

  • x-ms-sgx-is-debuggable: Ett booleskt värde som anger om enklaven har felsökning aktiverat eller inte
  • x-ms-sgx-product-id: Produkt-ID-värdet för SGX-enklaven
  • x-ms-sgx-mrsigner: hexkodat värde för fältet "mrsigner" i offerten
  • x-ms-sgx-mrenclave: hexkodat värde för fältet "mrenclave" i offerten
  • x-ms-sgx-svn: säkerhetsversionsnummer kodat i offerten
  • x-ms-sgx-ehd: enklaven höll data formaterade som BASE64URL(enklaverhållna data)
  • x-ms-sgx-collateral: JSON-objekt som beskriver de säkerheter som används för attestering. Värdet för anspråket x-ms-sgx-collateral är ett kapslat JSON-objekt med följande nyckel/värde-par:
    • qeidcertshash: SHA256-värdet för QE-identitet (Quoting Enclave) som utfärdar certifikat
    • qeidcrlhash: SHA256-värdet för QE Identity som utfärdar listan över återkallade certifikat
    • qeidhash: SHA256-värdet för QE Identity-säkerheterna
    • quotehash: SHA256-värdet för den utvärderade offerten
    • tcbinfocertshash: SHA256-värdet för TCB Info som utfärdar certifikat
    • tcbinfocrlhash: SHA256-värdet för listan med certifikatutfärdare för TCB-information som utfärdar certifikat
    • tcbinfohash: SHA256-värdet för TCB Info-säkerheterna
  • x-ms-sgx-report-data: SGX enclave report data field (vanligtvis SHA256-hash för x-ms-sgx-ehd)

Dessa anspråk visas endast i attesteringstoken som genereras för Intel® Xeon® Scalable-processorbaserade serverplattformar. Anspråken visas inte om SGX-enklaven inte har konfigurerats med stöd för nyckelseparering och delning. Anspråksdefinitionerna finns här:

  • x-ms-sgx-config-id
  • x-ms-sgx-config-svn
  • x-ms-sgx-isv-extended-product-id
  • x-ms-sgx-isv-family-id

Dessa anspråk anses vara inaktuella, men stöds fullt ut och kommer att fortsätta att inkluderas i framtiden. Vi rekommenderar att du använder de icke-inaktuella anspråksnamnen:

Inaktuellt anspråk Rekommenderat anspråk
$is-debuggable x-ms-sgx-is-debuggable
$product-id x-ms-sgx-product-id
$sgx-mrsigner x-ms-sgx-mrsigner
$sgx-mrenclave x-ms-sgx-mrenclave
$svn x-ms-sgx-svn
$maa-ehd x-ms-sgx-ehd
$aas-ehd x-ms-sgx-ehd
$maa-attestationcollateral x-ms-sgx-collateral

SEV-SNP-attestering

Följande anspråk stöds dessutom av SevSnpVm-attesteringstypen:

  • x-ms-sevsnpvm-authorkeydigest: SHA384-hash för författarens signeringsnyckel
  • x-ms-sevsnpvm-bootloader-svn :AMD boot loader security version number (SVN)
  • x-ms-sevsnpvm-familyId: HCL-familjeidentifieringssträng (Host Compatibility Layer)
  • x-ms-sevsnpvm-guestsvn: HCL-säkerhetsversionsnummer (SVN)
  • x-ms-sevsnpvm-hostdata: Godtyckliga data som definieras av värden vid vm-starttiden
  • x-ms-sevsnpvm-idkeydigest: SHA384-hash för identifieringssigneringsnyckeln
  • x-ms-sevsnpvm-imageId: HCL-bildidentifiering
  • x-ms-sevsnpvm-is-debuggable: Booleskt värde som anger om AMD SEV-SNP-felsökning är aktiverat
  • x-ms-sevsnpvm-launchmeasurement: Mätning av den lanserade gästbilden
  • x-ms-sevsnpvm-microcode-svn: AMD microcode security version number (SVN
  • x-ms-sevsnpvm-migration-allowed: Booleskt värde som anger om AMD SEV-SNP-migreringsstöd är aktiverat
  • x-ms-sevsnpvm-reportdata: Data som skickas av HCL för att inkluderas i rapporten för att verifiera att överföringsnyckeln och vm-konfigurationen är korrekta
  • x-ms-sevsnpvm-reportid: Rapport-ID för gästen
  • x-ms-sevsnpvm-smt-allowed: Booleskt värde som anger om SMT är aktiverat på värden
  • x-ms-sevsnpvm-snpfw-svn: AMD säkerhetsversionsnummer för inbyggd programvara (SVN)
  • x-ms-sevsnpvm-tee-svn: SÄKERHETSversionsnummer för AMD-säkerhetsmiljö (TEE) (SVN)
  • x-ms-sevsnpvm-vmpl: VMPL som genererade den här rapporten (0 för HCL)

TPM- och VBS-attestering

  • cnf (bekräftelse): "cnf"-anspråket används för att identifiera nyckel för bevis på innehav. Bekräftelseanspråket som definieras i RFC 7800 innehåller den offentliga delen av den intygade enklavens nyckel som representeras som ett JSON-webbnyckelobjekt (JWK) (RFC 7517)
  • rp_data (förlitande partsdata): Förlitande partsdata, om sådana finns, angivna i begäran, som används av den förlitande parten som en nonce för att garantera rapportens färskhet. rp_data läggs bara till om det finns rp_data

Egenskapsanspråk

TPM- och VBS-attestering

  • report_validity_in_minutes: Ett heltalsanspråk som anger hur länge token är giltig.
    • Standardvärde(tid): En dag i minuter.
    • Maximalt värde(tid): Ett år i minuter.
  • omit_x5c: Ett booleskt anspråk som anger om Azure Attestation ska utelämna det certifikat som används för att tillhandahålla bevis på tjänstens äkthet. Om det är sant läggs x5t till i attesteringstoken. Om false(default) läggs x5c till i attesteringstoken.

Nästa steg