Läs på engelska

Dela via


Anspråksuppsättningar

Anspråk som genereras i processen för att intyga enklaver med Microsoft Azure-attestering kan delas in i följande kategorier:

  • Inkommande anspråk: De anspråk som genereras av Microsoft Azure Attestation efter parsning av attesteringsbeviset. Anspråken kan användas av principförfattare för att definiera auktoriseringsregler i en anpassad princip.
  • Utgående anspråk: De anspråk som genereras av Azure Attestation och ingår i attesteringstoken.
  • Egenskapsanspråk: Anspråken som skapas som utdata från Azure Attestation. Den innehåller alla anspråk som representerar egenskaperna för attesteringstoken, till exempel kodning av rapporten, varaktigheten för rapporten 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 möjliggör den felsökning av funktioner för enklavens kod, vilket innefattar möjligheten att komma åt enklavens minne. Därför rekommenderar vi att du anger flaggan till true endast för utvecklingsändamål. 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.

    Enklavförfattaren tilldelar ett produkt-ID till varje enklav. Med produkt-ID:t kan enklaverförfattaren segmentera enklaver som signerats med samma MRSIGNER. Kunder kan lägga till en verifieringsregel i attesteringsprincipen för att 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 enklavens offentliga nyckel, som är associerad med den privata nyckeln som används för att signera enklavens binära. 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 enklaverbinärfilen 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-principen 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 enklaverminnet.

    MRENCLAVE är en av de enklaver som kan användas för att verifiera enklavens binärfiler. Det är hashen för koden som körs i 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 en trivial ändring av den befintliga koden rekommenderar vi att du verifierar enklaverbinärfiler med hjälp av 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 enklaverkoden ökar enklavförfattaren SVN-värdet efter sårbarhetskorrigeringen. För att förhindra att du interagerar med osäker enklavkod kan kunderna lägga till en verifieringsregel i attesteringsprincipen. Om SVN för enklaverkoden inte matchar den version som rekommenderas av enklavförfattaren 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 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

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 attesteringsidentitetsnyckeln (AIK) verifierar eller inte.
  • aikPubHash: Sträng som innehåller den offentliga nyckeln base64(SHA256(AIK 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 anspråk på TPM-attesteringsprinciper kan principförfattare använda dessa anspråk för att definiera auktoriseringsregler i en VBS-attesteringsprincip:

  • enclaveAuthorId: Strängvärde som innehåller det Base64Url-kodade värdet för enklavförfattarens ID–Författarens identifierare för den primära modulen för enklaven.
  • enclaveImageId: Strängvärde som innehåller base64Url-kodat värde för enklaven Bild-ID-Bildidentifieraren 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-Identifierare 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: EnclaveFlags-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 utvärderingsprincipen för Azure Attestation 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, tillämpligt när kunden laddar upp en signerad princip.
  • x-ms-runtime: JSON-objekt som innehåller "anspråk" som definieras och genereras i den intygade miljön, en specialisering av begreppet "enklaverhållna data", där "enklaven lagrade data" formateras 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 intygade miljön.

Dessa anspråksnamn används från IETF JWT-specifikationen.

  • "jti" (JWT ID) Anspråk – unik identifierare för JWT.
  • "iss" (Issuer) Claim – det huvudnamn som utfärdade JWT.
  • "iat" (utfärdat vid) anspråk – den tidpunkt då JWT utfärdades.
  • "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 oöversatt 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 ingå i framtiden. Vi rekommenderar att du använder de icke-inaktuella anspråksnamnen.

Inaktuellt anspråk Rekommenderat anspråk
Ver x-ms-ver
tee x-ms-attestation-type
policy_hash x-ms-policy-hash
maa-policyHash x-ms-policy-hash
policy_signer x-ms-policy-signer
rp_data nonce

SGX-attestering

Dessa anspråk 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 MRSIGNER i offerten.
  • x-ms-sgx-svn: säkerhetsversionsnummer kodat i offerten.
  • x-ms-sgx-ehd: enklaver som lagras data formaterad som BASE64URL(enklaver som lagras data).
  • x-ms-sgx-collateral: JSON-objekt som beskriver den säkerhet 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-identitet som utfärdar certifikats CRL-lista.
    • qeidhash: SHA256-värdet för QE-identitetssäkerhet.
    • 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 TCB Info som utfärdar certifikats-CRL.
    • tcbinfohash: SHA256-värdet för TCB Info-säkerheten.
  • x-ms-sgx-report-data: SGX enclave report data field (vanligtvis SHA256 hash av 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 ingå i framtiden. Vi rekommenderar att du använder de 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 också av attesteringstypen SevSnpVm:

  • 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 security version number (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ästavbildningen.
  • 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 firmware security version number (SVN).
  • x-ms-sevsnpvm-tee-svn: SÄKERHETSversionsnummer för AMD Trusted Execution Environment (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 innehavsbevis. Bekräftelseanspråk som definierats i RFC 7800 innehåller den offentliga delen av den intygade enklavernyckeln som representeras som ett JWK-objekt (JSON Web Key) (RFC 7517).
  • rp_data (förlitande part): Förlitande partsdata, om några, som anges i begäran, 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 för att ange 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 certifikatet som används för att tillhandahålla bevis på tjänstens äkthet. Om sant läggs x5t till i attesteringstoken. Om false(default) läggs x5c till i attesteringstoken.

Nästa steg