Aracılığıyla paylaş


Talep kümeleri

Microsoft Azure Doğrulama kullanılarak kuşatmaların kanıtlanması sürecinde oluşturulan talepler şu kategorilere ayrılabilir:

  • Gelen talepler: Kanıtlama kanıtını ayrıştırdıktan sonra Microsoft tarafından oluşturulan talepler Azure Doğrulama ve ilke yazarları tarafından özel ilkede yetkilendirme kuralları tanımlamak için kullanılabilir

  • Giden talepler: Azure Doğrulama tarafından oluşturulan ve kanıtlama belirtecinde bulunan talepler

  • Özellik talepleri: Azure Doğrulama tarafından çıkış olarak oluşturulan talepler. Raporun kodlaması, raporun geçerlilik süresi vb. gibi kanıtlama belirtecinin özelliklerini temsil eden tüm talepleri içerir.

Gelen talepler

SGX kanıtlama

İlke yazarları tarafından SGX kanıtlama ilkesinde yetkilendirme kurallarını tanımlamak için kullanılacak talepler:

  • x-ms-sgx-is-debuggable: Kapanım hata ayıklamanın etkinleştirilip etkinleştirilmediğini gösteren boole değeri.

    SGX kuşatmaları, hata ayıklama devre dışı bırakılmış veya etkinleştirilmiş olarak yüklenebilir. Bayrağı kapanımda true olarak ayarlandığında, kapanım kodu için hata ayıklama özelliklerini etkinleştirir. Bu, kapanım belleğine erişme özelliğini içerir. Bu nedenle bayrağının yalnızca geliştirme amacıyla true olarak ayarlanması önerilir. Üretim ortamında etkinleştirilirse, SGX güvenlik garantileri korunmaz.

    Azure Doğrulama kullanıcılar kanıtlama ilkesini kullanarak SGX kapanım için hata ayıklamanın devre dışı bırakılıp bırakılmadığını doğrulayabilir. İlke kuralı eklendikten sonra, kötü amaçlı bir kullanıcı kapanım içeriğine erişim kazanmak için hata ayıklama desteğini açtığında kanıtlama başarısız olur.

  • x-ms-sgx-product-id: SGX kapanım ürün kimliğini gösteren bir tamsayı değeri.

    Kapanım yazarı her kapanıma bir Ürün Kimliği atar. Ürün Kimliği, kapanım yazarının aynı MRSIGNER kullanılarak imzalanan kuşatmaları segmentlere ayırmasını sağlar. Kanıtlama ilkesine bir doğrulama kuralı ekleyerek müşteriler amaçlanan kuşatmaları kullanıp kullanmadıklarını denetleyebiliyor. Kapanım ürün kimliği, kapanım yazarı tarafından yayımlanan değerle eşleşmezse kanıtlama başarısız olur.

  • x-ms-sgx-mrsigner: SGX kapanım yazarını tanımlayan dize değeri.

    MRSIGNER, kapanım ikili dosyasını imzalamak için kullanılan özel anahtarla ilişkili olan kapanım yazarının ortak anahtarının karmasıdır. Müşteriler, mrsigner'ı kanıtlama ilkesi aracılığıyla doğrulayarak güvenilen ikili dosyaların bir kapanım içinde çalışıp çalışmadığını doğrulayabilir. İlke talebi kapanım yazarının MRSIGNER değeriyle eşleşmediğinde, kapanım ikili dosyasının güvenilir bir kaynak tarafından imzalanmadığı ve kanıtlamanın başarısız olduğu anlamına gelir.

    Kapanım yazarı güvenlik nedeniyle MRSIGNER'ı döndürmeyi tercih ettiğinde, ikili dosyalar güncelleştirilmeden önce Azure Doğrulama ilkenin yeni ve eski MRSIGNER değerlerini destekleyecek şekilde güncelleştirilmiş olması gerekir. Aksi takdirde yetkilendirme denetimleri başarısız olur ve kanıtlama hatalarına neden olur.

    Kanıtlama ilkesi aşağıdaki biçim kullanılarak güncelleştirilmelidir.

    Tuş döndürmeden önce

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

    Anahtar döndürme sırasında

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

    Anahtar döndürmeden sonra

      version= 1.0;
      authorizationrules 
      { 
      [ type=="x-ms-sgx-is-debuggable", value==false]&& 
      [ type=="x-ms-sgx-mrsigner", value=="mrsigner2"] => permit(); 
      };
    
  • x-ms-sgx-mrenclave: Kapanım belleğine yüklenen kodu ve verileri tanımlayan dize değeri.

    MRENCLAVE, kapanım ikili dosyalarını doğrulamak için kullanılabilecek enklav ölçümlerinden biridir. Bu, kapanım içinde çalışan kodun karmasıdır. Ölçü, kapanım ikili kodundaki her değişiklikle birlikte değişir. Müşteriler, bir kanıtlama ilkesi aracılığıyla MRENCLAVE'i doğrulayarak hedeflenen ikili dosyaların bir kapanım içinde çalışıp çalışmadığını doğrulayabilir. Ancak, MRENCLAVE'in mevcut kodda yapılan önemsiz değişikliklerle sık sık değişmesi beklendiğinden, kanıtlama ilkesinde MRSIGNER doğrulaması kullanarak kapanım ikili dosyalarının doğrulanması önerilir.

  • x-ms-sgx-svn: SGX kapanım güvenlik sürüm numarasını gösteren bir tamsayı değeri

    Kapanım yazarı, SGX kapanımının her sürümüne bir Güvenlik Sürüm Numarası (SVN) atar. Kapanım kodunda bir güvenlik sorunu bulunduğunda, kapanım yazarı güvenlik açığı düzeltmesi sonrasında SVN değerini artırır. Güvenli olmayan kapanım koduyla etkileşime geçilmesini önlemek için müşteriler kanıtlama ilkesine bir doğrulama kuralı ekleyebilir. Kapanım kodunun SVN'si, kapanım yazarı tarafından önerilen sürümle eşleşmiyorsa kanıtlama başarısız olur.

Bu talepler kullanım dışı olarak kabul edilir ancak tam olarak desteklenir ve gelecekte de dahil edilmeye devam eder. Kullanım dışı bırakılan talep adlarının kullanılması önerilir:

Kullanım dışı talep Önerilen talep
$is hata ayıklanabilir x-ms-sgx-is-debuggable
$product kimliği x-ms-sgx-product-id
$sgx-mrsigner x-ms-sgx-mrsigner
$sgx-mrenclave x-ms-sgx-mrenclave
$svn x-ms-sgx-svn

TPM kanıtlama

İlke yazarları tarafından bir TPM kanıtlama ilkesinde yetkilendirme kurallarını tanımlamak için kullanılacak talepler:

  • aikValidated: Kanıtlama Kimlik Anahtarı (AIK) sertifikası doğrulandıysa veya doğrulanmadıysa bilgileri içeren Boole değeri
  • aikPubHash: base64(SHA256(DER biçiminde AIK ortak anahtarı)) içeren dize
  • tpmVersion: Güvenilen Platform Modülü (TPM) ana sürümünü içeren tamsayı değeri
  • secureBootEnabled: Güvenli önyüklemenin etkinleştirilip etkinleştirilmediğini belirten Boole değeri
  • iommuEnabled: Giriş çıkış bellek yönetim biriminin (Iommu) etkinleştirilip etkinleştirilmediğini belirten Boole değeri
  • bootDebuggingDisabled: Önyükleme hata ayıklamanın devre dışı bırakılıp bırakılmadiğini belirten Boole değeri
  • notSafeMode: Windows'un güvenli modda çalışıp çalışmadığını belirten Boole değeri
  • notWinPE: Windows'un WinPE modunda çalışıp çalışmadığını gösteren Boole değeri
  • vbsEnabled: VBS'nin etkin olup olmadığını gösteren Boole değeri
  • vbsReportPresent: VBS kapanım raporunun kullanılabilir olup olmadığını gösteren Boole değeri

VBS kanıtlama

TPM kanıtlama ilkesi taleplerine ek olarak, bu talepler bir VBS kanıtlama ilkesinde yetkilendirme kurallarını tanımlamak için ilke yazarları tarafından kullanılabilir:

  • enclaveAuthorId: Kapanım yazar kimliğinin Base64Url kodlanmış değerini içeren dize değeri-Kapanım için birincil modülün yazar tanımlayıcısı
  • enclaveImageId: Kapanım Görüntü kimliği'nin Base64Url kodlanmış değerini içeren dize değeri-Kapanım için birincil modülün görüntü tanımlayıcısı
  • enclaveOwnerId: Kapanım Sahibi kimliğinin Base64Url kodlanmış değerini içeren dize değeri-Kapanım sahibinin tanımlayıcısı
  • enclaveFamilyId: Enclave Aile Kimliğinin Base64Url kodlanmış değerini içeren dize değeri. Kapanım için birincil modülün aile tanımlayıcısı
  • enclaveSvn: Kapanım için birincil modülün güvenlik sürüm numarasını içeren tamsayı değeri
  • enclavePlatformSvn: Kapanım barındıran platformun güvenlik sürüm numarasını içeren tamsayı değeri
  • enclaveFlags: enclaveFlags talebi, kapanım için çalışma zamanı ilkesini açıklayan Bayraklar içeren bir Tamsayı değeridir

Giden talepler

Tüm kanıtlama türleri için ortak

Azure Doğrulama tüm kanıtlama türleri için kanıtlama belirtecinde şu talepleri içerir:

  • x-ms-ver: JWT şema sürümü ("1.0" olması bekleniyor)
  • x-ms-attestation-type: Kanıtlama türünü temsil eden dize değeri
  • x-ms-policy-hash: BASE64URL (SHA256(UTF8(BASE64URL(UTF8(ilke metni)))) olarak hesaplanan Azure Doğrulama değerlendirme ilkesinin karması
  • x-ms-policy-signer: Müşterinin kendi ilkesini imzalamak için kullandığı anahtarı temsil eden "jwk" üyesine sahip JSON nesnesi. Bu, müşteri imzalı bir ilkeyi karşıya yüklediğinde geçerlidir
  • x-ms-runtime: Test edilen ortamda tanımlanan ve oluşturulan "talepler" içeren JSON nesnesi. Bu, "kapanımda tutulan veriler" kavramının özel olarak utf-8 kodlaması olarak iyi biçimlendirilmiş JSON olarak biçimlendirildiği bir uzmanlık alanıdır
  • x-ms-inittime: Test edilen ortamın başlatma zamanında tanımlanan ve doğrulanan "talepler" içeren JSON nesnesi

IETF JWT belirtiminden aşağıdaki talep adları kullanılır

  • "jti" (JWT ID) Talebi - JWT için benzersiz tanımlayıcı
  • "iss" (Veren) Talebi - JWT'yi veren sorumlu
  • "iat" (Verilen) Talep - JWT'nin verildiği saat
  • "exp" (Süre Sonu) Talebi - JWT'nin işlenmesi için kabul edilmemesi gereken süre sonu
  • "nbf" (Önce Değil) Talebi - JWT'nin işlenmek üzere kabul edilmemesi gereken zamandan önce değil

Bu talep adları IETF EAT taslak belirtiminden kullanılır:

  • "Nonce talebi" (nonce) - İstemci tarafından sağlanan isteğe bağlı bir nonce değerinin çevrilmemiş doğrudan kopyası

Aşağıdaki talepler kullanım dışı olarak kabul edilir ancak tam olarak desteklenir ve gelecekte de dahil edilmeye devam eder. Kullanım dışı bırakılan talep adlarının kullanılması önerilir.

Kullanım dışı talep Önerilen talep
Ver x-ms-ver
tee x-ms-kanıtlama-türü
policy_hash x-ms-policy-hash
maa-policyHash x-ms-policy-hash
policy_signer x-ms-policy-signer
rp_data Nonce

SGX kanıtlama

Bu caim'ler SGX kanıtlama hizmeti tarafından oluşturulur ve kanıtlama belirtecinde bulunur:

  • x-ms-sgx-is-debuggable: Kapanımda hata ayıklamanın etkinleştirilip etkinleştirilmediğini gösteren Boole değeri
  • x-ms-sgx-product-id: SGX kapanım ürün kimliği değeri
  • x-ms-sgx-mrsigner: teklifin "mrsigner" alanının onaltılık kodlanmış değeri
  • x-ms-sgx-mrenclave: alıntının "mrenclave" alanının onaltılık kodlanmış değeri
  • x-ms-sgx-svn: teklifte kodlanmış güvenlik sürümü numarası
  • x-ms-sgx-ehd: enclave held data formatted as BASE64URL(enclave held data)
  • x-ms-sgx-collateral: Kanıtlama gerçekleştirmek için kullanılan teminatı açıklayan JSON nesnesi. x-ms-sgx-collateral talebi için değer, aşağıdaki anahtar/değer çiftlerine sahip iç içe bir JSON nesnesidir:
    • qeidcertshash: Sertifika veren Sertifikalar için Alıntı Oluşturma Kapanım (QE) Kimliğinin SHA256 değeri
    • qeidcrlhash: QE Identity sertifika veren CRL listesinin SHA256 değeri
    • qeidhash: QE Identity yardımcısının SHA256 değeri
    • quotehash: Değerlendirilen teklifin SHA256 değeri
    • tcbinfocertshash: TCB Bilgisi veren sertifikaların SHA256 değeri
    • tcbinfocrlhash: Sertifikalar CRL listesini veren TCB Bilgisinin SHA256 değeri
    • tcbinfohash: TCB Bilgi yardımcısının SHA256 değeri
  • x-ms-sgx-report-data: SGX kapanım rapor veri alanı (genellikle SHA256 karması x-ms-sgx-ehd)

Bu talepler yalnızca Intel® Xeon® Ölçeklenebilir işlemci tabanlı sunucu platformları için oluşturulan kanıtlama belirtecinde görünür. SGX kapanımı Anahtar Ayırma ve Paylaşım Desteği ile yapılandırılmadıysa talepler görünmez. Talep tanımları burada bulunabilir:

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

Bu talepler kullanım dışı olarak kabul edilir, ancak tam olarak desteklenir ve gelecekte de dahil edilmeye devam eder. Kullanım dışı bırakılan talep adlarının kullanılması önerilir:

Kullanım dışı talep Önerilen talep
$is-hata ayıklanabilir x-ms-sgx-is-debuggable
$product kimliği 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-kanıtlamasütunal x-ms-sgx-collateral

SEV-SNP kanıtlama

Aşağıdaki talepler ayrıca SevSnpVm kanıtlama türü tarafından da desteklenir:

  • x-ms-sevsnpvm-authorkeydigest: Yazar imzalama anahtarının SHA384 karması
  • x-ms-sevsnpvm-bootloader-svn :AMD önyükleme yükleyicisi güvenlik sürüm numarası (SVN)
  • x-ms-sevsnpvm-familyId: Konak Uyumluluk Katmanı (HCL) ailesi tanımlama dizesi
  • x-ms-sevsnpvm-guestsvn: HCL güvenlik sürüm numarası (SVN)
  • x-ms-sevsnpvm-hostdata: VM başlatma zamanında konak tarafından tanımlanan rastgele veriler
  • x-ms-sevsnpvm-idkeydigest: Kimlik imzalama anahtarının SHA384 karması
  • x-ms-sevsnpvm-imageId: HCL görüntü tanımlama
  • x-ms-sevsnpvm-is-debuggable: AMD SEV-SNP hata ayıklamanın etkinleştirilip etkinleştirilmediğini gösteren Boole değeri
  • x-ms-sevsnpvm-launchmeasurement: Başlatılan konuk görüntüsünün ölçümü
  • x-ms-sevsnpvm-microcode-svn: AMD mikro kod güvenlik sürüm numarası (SVN)
  • x-ms-sevsnpvm-migration-allowed: AMD SEV-SNP geçiş desteğinin etkinleştirilip etkinleştirilmediğini gösteren Boole değeri
  • x-ms-sevsnpvm-reportdata: Aktarım anahtarı ve VM yapılandırmasının doğru olduğunu doğrulamak için HCL tarafından rapora dahil etmek üzere geçirilen veriler
  • x-ms-sevsnpvm-reportid: Konuğun rapor kimliği
  • x-ms-sevsnpvm-smt-allowed: Konakta SMT'nin etkinleştirilip etkinleştirilmediğini gösteren Boole değeri
  • x-ms-sevsnpvm-snpfw-svn: AMD üretici yazılımı güvenlik sürüm numarası (SVN)
  • x-ms-sevsnpvm-tee-svn: AMD güvenilen yürütme ortamı (TEE) güvenlik sürüm numarası (SVN)
  • x-ms-sevsnpvm-vmpl: Bu raporu oluşturan VMPL (HCL için 0)

TPM ve VBS kanıtlama

  • cnf (Onay):"cnf" talebi, sahiplik kanıtı anahtarını tanımlamak için kullanılır. RFC 7800'de tanımlanan onay talebi, JSON Web Anahtarı (JWK) nesnesi (RFC 7517) olarak temsil edilen doğrulanmış kapanım anahtarının ortak bölümünü içerir
  • rp_data (bağlı olan taraf verileri): Varsa, istekte belirtilen bağlı taraf verileri, bağlı olan taraf tarafından raporun güncelliğini garanti etmek için bir nonce olarak kullanılır. rp_data yalnızca rp_data varsa eklenir

Özellik talepleri

TPM ve VBS kanıtlama

  • report_validity_in_minutes: Belirtecin ne kadar süre geçerli olduğunu gösteren bir tamsayı talebi.
    • Varsayılan değer (saat):Dakika cinsinden bir gün.
    • Maksimum değer (süre):Dakika cinsinden bir yıl.
  • omit_x5c: hizmet orijinalliği kanıtı sağlamak için kullanılan sertifikayı Azure Doğrulama atıp atmadığını belirten boole talebi. True ise, kanıtlama belirtecine x5t eklenir. false(varsayılan) ise, kanıtlama belirtecine x5c eklenir.

Sonraki adımlar