Sady deklarací identity

Deklarace identity vygenerované v procesu ověřování enklávy pomocí ověření identity Microsoft Azure je možné rozdělit do těchto kategorií:

  • Příchozí deklarace identity: Deklarace identity vygenerované ověřením identity Microsoft Azure po parsování důkazů ověření identity. Deklarace identity můžou autoři zásad použít k definování autorizačních pravidel ve vlastních zásadách.
  • Odchozí deklarace identity: Deklarace identity vygenerované službou Azure Attestation a zahrnuté v tokenu ověření identity.
  • Deklarace identity vlastností: Deklarace identity vytvořené jako výstup ověření identity Azure. Obsahuje všechny deklarace identity, které představují vlastnosti tokenu ověření identity, jako je kódování sestavy, doba trvání platnosti sestavy atd.

Příchozí deklarace identity

Ověření identity SGX

Deklarace identity, které autoři zásad používají k definování autorizačních pravidel v zásadách ověřování SGX:

  • x-ms-sgx-is-debuggable: logická hodnota, která označuje, jestli je ladění enklávy povolené, nebo ne.

    Enklávy SGX je možné načíst s vypnutým laděním nebo povoleno. Pokud je příznak nastaven na hodnotu true v enklávě, povolí funkce ladění pro kód enklávy, který zahrnuje možnost přístupu k paměti enklávy. Proto se doporučuje nastavit příznak na true pouze pro účely vývoje. Pokud je povolené v produkčním prostředí, nezachovají se záruky zabezpečení SGX.

    Uživatelé ověření identity Azure můžou pomocí zásad ověření identity ověřit, jestli je ladění pro enklávu SGX zakázané. Po přidání pravidla zásad selže ověření identity, když uživatel se zlými úmysly zapne podporu ladění, aby získal přístup k obsahu enklávy.

  • x-ms-sgx-product-id: Celočíselná hodnota, která označuje ID produktu enklávy SGX.

    Autor enklávy přiřadí id produktu jednotlivým enklávám. ID produktu umožňuje autorovi enklávy segmentovat enklávy podepsané pomocí stejného MRSIGNER. Zákazníci můžou do zásad ověření identity přidat ověřovací pravidlo a zkontrolovat, jestli používají zamýšlené enklávy. Ověření identity selže, pokud ID produktu enklávy neodpovídá hodnotě publikované autorem enklávy.

  • x-ms-sgx-mrsigner: Řetězcová hodnota, která identifikuje autora enklávy SGX.

    MRSIGNER je hodnota hash veřejného klíče autora enklávy, která je přidružená k privátnímu klíči použitému k podepsání binárního souboru enklávy. Ověřením MRSIGNER prostřednictvím zásad ověření identity můžou zákazníci ověřit, jestli jsou důvěryhodné binární soubory spuštěné uvnitř enklávy. Pokud deklarace identity zásad neodpovídá souboru MRSIGNER autora enklávy, znamená to, že binární soubor enklávy není podepsán důvěryhodným zdrojem a ověření identity selže.

    Pokud autor enklávy dává přednost obměně MRSIGNER z bezpečnostních důvodů, musí být zásada ověření identity Azure aktualizována tak, aby podporovala nové a staré hodnoty MRSIGNER před aktualizací binárních souborů. Jinak kontroly autorizace selžou, což vede k selhání ověření identity.

    Zásady ověření identity musí být aktualizovány pomocí následujícího formátu.

    Před obměnou klávesou

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

    Během obměně klíčů

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

    Po obměně klíčů

      version= 1.0;
      authorizationrules 
      { 
      [ type=="x-ms-sgx-is-debuggable", value==false]&& 
      [ type=="x-ms-sgx-mrsigner", value=="mrsigner2"] => permit(); 
      };
    
  • x-ms-sgx-mrenclave: Řetězcová hodnota, která identifikuje kód a data načtená v paměti enklávy.

    MRENCLAVE je jedním z měření enklávy, které lze použít k ověření binárních souborů enklávy. Jedná se o hodnotu hash kódu spuštěného uvnitř enklávy. Měření se změní při každé změně binárního kódu enklávy. Ověřením MRENCLAVE prostřednictvím zásad ověření identity můžou zákazníci ověřit, jestli jsou v enklávě spuštěné zamýšlené binární soubory. Vzhledem k tomu, že se očekává, že se MRENCLAVE často mění s jakoukoli triviální úpravou existujícího kódu, doporučuje se ověřit binární soubory enklávy pomocí ověřování MRSIGNER v zásadách ověření identity.

  • x-ms-sgx-svn: Celočíselná hodnota, která označuje číslo verze zabezpečení enklávy SGX

    Autor enklávy přiřadí číslo verze zabezpečení (SVN) každé verzi enklávy SGX. Když se v kódu enklávy zjistí problém se zabezpečením, autor enklávy zvýší hodnotu SVN po opravě ohrožení zabezpečení. Pokud chcete zabránit interakci s nezabezpečeným kódem enklávy, můžou zákazníci do zásad ověření identity přidat ověřovací pravidlo. Pokud SVN kódu enklávy neodpovídá verzi doporučené autorem enklávy, ověření identity selže.

Tyto deklarace identity se považují za zastaralé, ale jsou plně podporované a budou i nadále zahrnuté v budoucnu. Doporučuje se použít názvy neeprecated deklarací identity:

Zastaralá deklarace identity Doporučená deklarace identity
$is ladění x-ms-sgx-is-debuggable
id $product x-ms-sgx-product-id
$sgx-mrsigner x-ms-sgx-mrsigner
$sgx-mrenclave x-ms-sgx-mrenclave
$svn x-ms-sgx-svn

Osvědčení TPM

Deklarace identity, které autoři zásad používají k definování autorizačních pravidel v zásadách ověření identity TPM:

  • aikValidated: Logická hodnota obsahující informace, pokud certifikát AIK (Attestation Identity Key) ověří nebo ne.
  • aikPubHash: Řetězec obsahující base64(SHA256(veřejný klíč AIK ve formátu DER)).
  • tpmVersion: Celočíselná hodnota obsahující hlavní verzi TPM (Trusted Platform Module).
  • secureBootEnabled: Logická hodnota označující, jestli je povolené zabezpečené spouštění.
  • iommuEnabled: Logická hodnota označující, jestli je povolená jednotka pro správu paměti výstupu vstupu (Iommu).
  • bootDebuggingDisabled: Logická hodnota označující, jestli je ladění spouštění zakázané.
  • notSafeMode: Logická hodnota označující, jestli systém Windows není spuštěn v nouzovém režimu.
  • notWinPE: Logická hodnota označující, jestli windows není spuštěný v režimu WinPE.
  • vbsEnabled: Logická hodnota označující, jestli je povolená služba VBS.
  • vbsReportPresent: Logická hodnota označující, jestli je k dispozici sestava enklávy VBS.

Ověření identity VBS

Kromě deklarací zásad ověření identity čipem TPM můžou autoři zásad definovat autorizační pravidla v zásadách ověření identity VBS pomocí těchto deklarací identity:

  • enclaveAuthorId: Řetězcová hodnota obsahující zakódovanou hodnotu Base64Url id autora enklávy – identifikátor autora primárního modulu pro enklávu.
  • enclaveImageId: Řetězcová hodnota obsahující hodnotu s kódováním Base64Url id image enklave Image id-Identifikátor image primárního modulu pro enklávu.
  • enclaveOwnerId: Řetězcová hodnota obsahující zakódovanou hodnotu Base64Url id vlastníka enklávy- Identifikátor vlastníka enklávy.
  • enclaveFamilyId: Řetězcová hodnota obsahující zakódovanou hodnotu Base64Url ID rodiny enklávy. Identifikátor rodiny primárního modulu pro enklávu.
  • enclaveSvn: Celočíselná hodnota obsahující číslo verze zabezpečení primárního modulu pro enklávu.
  • enclavePlatformSvn: Celočíselná hodnota obsahující číslo verze zabezpečení platformy, která je hostitelem enklávy.
  • enclaveFlags: Deklarace identity enklaveFlags je celočíselná hodnota obsahující příznaky, které popisují zásady modulu runtime pro enklávu.

Odchozí deklarace identity

Společné pro všechny typy ověření identity

Ověření identity Azure zahrnuje tyto deklarace identity v tokenu ověření identity pro všechny typy ověření identity:

  • x-ms-ver: Verze schématu JWT (očekává se, že bude 1.0).
  • x-ms-attestation-type: Řetězcová hodnota představující typ ověření identity.
  • x-ms-policy-hash: Hodnota hash zásad vyhodnocení ověření identity Azure vypočítaná jako BASE64URL(SHA256(UTF8(BASE64URL(UTF8(text zásady)))))
  • x-ms-policy-signer: Objekt JSON s členem "jwk" představujícím klíč zákazníka, který použil k podepsání zásad, který platí pro nahrání podepsaných zásad zákazníkem.
  • x-ms-runtime: Objekt JSON obsahující deklarace identity, které jsou definovány a generovány v rámci ověřeného prostředí, specializace konceptu "enklave held data", kde je "enkláva uložená data" formátována jako kódování UTF-8 dobře formátovaného JSON.
  • x-ms-inittime: Objekt JSON obsahující deklarace identity, které jsou definovány a ověřeny při inicializaci ověřeného prostředí.

Tyto názvy deklarací identity se používají ze specifikace IETF JWT.

  • Deklarace identity jti (JWT ID) – jedinečný identifikátor JWT.
  • Deklarace identity iss (issuer) – objekt zabezpečení, který vydal JWT.
  • "iat" (vystaveno na) žádost - čas vydání JWT.
  • Deklarace identity "exp" (Čas vypršení platnosti) – doba vypršení platnosti, po které nesmí být JWT přijata ke zpracování.
  • "nbf" (Not Before) Claim - Not Before time before which the JWT must not be accepted for processing.

Tyto názvy deklarací identity se používají ze specifikace konceptu IETF EAT:

  • "Nonce claim" (nonce) – nepřepravená přímá kopie volitelné hodnoty, kterou poskytuje klient.

Níže uvedené deklarace identity se považují za zastaralé, ale jsou plně podporované a budou i nadále zahrnuté v budoucnu. Doporučujeme použít neepeprecated názvy deklarací identity.

Zastaralá deklarace identity Doporučená deklarace identity
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

Ověření identity SGX

Tyto deklarace identity se generují a zahrnou do tokenu ověření identity službou pro ověření identity SGX:

  • x-ms-sgx-is-debuggable: Logická hodnota, která označuje, jestli má enkláva povolené ladění, nebo ne.
  • x-ms-sgx-product-id: Hodnota ID produktu enklávy SGX.
  • x-ms-sgx-mrsigner: šestnáctkové zakódované hodnoty pole MRSIGNER uvozovky.
  • x-ms-sgx-mrenclave: šestnáctková hodnota pole MRSIGNER uvozovky.
  • x-ms-sgx-svn: číslo verze zabezpečení kódované v uvozovce.
  • x-ms-sgx-ehd: enkláva uložená data formátovaná jako BASE64URL(enkláva uložená data).
  • x-ms-sgx-zajištění: objekt JSON popisující zajištění používané k ověření identity. Hodnota deklarace identity x-ms-sgx-collateral je vnořený objekt JSON s následujícími páry klíč/hodnota:
    • qeidcertshash: hodnota SHA256 identity v uvozování enklávy (QE) Identity vydávající certifikáty.
    • qeidcrlhash: Hodnota SHA256 identity QE, která vydává seznam CRL certifikátů.
    • qeidhash: HODNOTA SHA256 zajištění identity QE.
    • quotehash: HODNOTA SHA256 vyhodnocené uvozovky.
    • tcbinfocertshash: SHA256 hodnota TCB Info vydávající certifikáty.
    • tcbinfocrlhash: SHA256 hodnota TCB Info vydávající seznam CRL certifikátů.
    • tcbinfohash: SHA256 hodnota zajištění TCB Info.
  • x-ms-sgx-report-data: Datové pole sestavy enklávy SGX (obvykle sha256 hash x-ms-sgx-ehd).

Tyto deklarace identity se zobrazují pouze v tokenu ověření identity vygenerovaném pro serverové platformy se škálovatelnými procesory Intel® Xeon®. Deklarace identity se nezobrazí, pokud není enkláva SGX nakonfigurovaná pro oddělení klíčů a podporu sdílení. Definice deklarací identity najdete tady:

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

Tyto deklarace identity se považují za zastaralé, ale jsou plně podporované a budou i nadále zahrnuté v budoucnu. Doporučuje se použít názvy neeprecated deklarací identity:

Zastaralá deklarace identity Doporučená deklarace identity
$is ladění x-ms-sgx-is-debuggable
id $product 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-zajištění

Ověření identity SEV-SNP

Následující deklarace identity jsou podporovány také typem ověření identity SevSnpVm:

  • x-ms-sevsnpvm-authorkeydigest: hash SHA384 podpisového klíče autora.
  • x-ms-sevsnpvm-bootloader-svn: Číslo verze zabezpečení zavaděče spouštění AMD (SVN).
  • x-ms-sevsnpvm-familyId: Řetězec identifikace řady HCL (Host Compatibility Layer).
  • x-ms-sevsnpvm-guestsvn: číslo verze zabezpečení HCL (SVN).
  • x-ms-sevsnpvm-hostdata: Libovolná data definovaná hostitelem při spuštění virtuálního počítače.
  • x-ms-sevsnpvm-idkeydigest: hash SHA384 identifikačního podpisového klíče.
  • x-ms-sevsnpvm-imageId: Identifikace obrázku HCL.
  • x-ms-sevsnpvm-is-debuggable: Logická hodnota označující, jestli je povolené ladění AMD SEV-SNP.
  • x-ms-sevsnpvm-launchmeasurement: Měření spuštěné image hosta.
  • x-ms-sevsnpvm-microcode-svn: AMD microcode security version number (SVN).
  • x-ms-sevsnpvm-migration-allowed: Logická hodnota označující, jestli je povolená podpora migrace AMD SEV-SNP.
  • x-ms-sevsnpvm-reportdata: Data předávaná seznamem HCL, která mají být součástí sestavy, a ověřte správnost přenosu klíče a konfigurace virtuálního počítače.
  • x-ms-sevsnpvm-reportid: ID sestavy hosta.
  • x-ms-sevsnpvm-smt-allowed: Logická hodnota označující, jestli je na hostiteli povolený SMT.
  • x-ms-sevsnpvm-snpfw-svn: Číslo verze zabezpečení firmwaru AMD (SVN).
  • x-ms-sevsnpvm-tee-svn: Číslo verze zabezpečení (SVN) důvěryhodného spouštěcího prostředí AMD (TEE).
  • x-ms-sevsnpvm-vmpl: VMPL, který vygeneroval tuto sestavu (0 pro HCL).

Ověření identity čipem TPM a VBS

  • cnf (Confirmation): Deklarace "cnf" se používá k identifikaci klíče o vlastnictví. Deklarace identity potvrzení definovaná v dokumentu RFC 7800 obsahuje veřejnou část potvrzeného klíče enklávy reprezentovaného jako objekt JSON Web Key (JWK) (RFC 7517).
  • rp_data (data předávající strany):: Data předávající strany, pokud jsou zadána v požadavku, kterou předávající strana používá jako nonce k zajištění aktuálnosti sestavy. rp_data se přidá jenom v případě, že existuje rp_data.

Deklarace vlastností

Ověření identity čipem TPM a VBS

  • report_validity_in_minutes: Celočíselná deklarace identity, která označuje, jak dlouho je token platný.
    • Výchozí hodnota(čas):Jeden den v minutách.
    • Maximální hodnota(čas): Jeden rok v minutách.
  • omit_x5c: Logická deklarace identity označující, jestli by ověření identity Azure nemělo vynechat certifikát použitý k ověření pravosti služby. Pokud je hodnota true, x5t se přidá do tokenu ověření identity. Pokud je false(výchozí), x5c se přidá do tokenu ověření identity.

Další kroky