Talep kümeleri
Microsoft Azure Doğrulama kullanılarak kuşatmaları kanıtlama işleminde oluşturulan talepler şu kategorilere ayrılabilir:
- Gelen talepler: Microsoft tarafından oluşturulan talepler, kanıtlama kanıtını ayrıştırdıktan sonra Azure Doğrulama. Talepler, özel bir ilkede yetkilendirme kurallarını tanımlamak için ilke yazarları tarafından 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. Kanıtlama belirtecinin özelliklerini temsil eden, raporun kodlaması, raporun geçerlilik süresi gibi 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ılabilir veya etkinleştirilebilir. Bayrak, kapanımda true olarak ayarlandığında, kapanım kodu için, kapanım belleğine erişme özelliğini içeren hata ayıklama özelliklerini etkinleştirir. Bu nedenle bayrağı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ımda 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. Müşteriler, amaçlanan kuşatmaları kullanıp kullanmadıklarını denetlemek için kanıtlama ilkesine bir doğrulama kuralı ekleyebilir. Kapanım ürün kimliği, kapanım yazarı tarafından yayımlanan değerle eşleşmiyorsa kanıtlama başarısız olur.
x-ms-sgx-mrsigner: SGX kapanım yazarını tanımlayan dize değeri.
MRSIGNER, kapanım yazarının ortak anahtarının karmasıdır ve kapanım ikili dosyasını imzalamak için kullanılan özel anahtarla ilişkilendirilir. 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.
Bir 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.
Anahtar 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 kapanım ölçümlerinden biridir. Bu, kapanım içinde çalışan kodun karmasıdır. Ölçüm, kapanım ikili kodundaki her değişiklikle değişir. Bir kanıtlama ilkesi aracılığıyla MRENCLAVE doğrulayarak, müşteriler 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ının 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ışı talep adlarının kullanılması önerilir:
Kullanım dışı bırakılan 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ğrularsa veya doğrulamazsa 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 belirtmek için 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 etkinleştirilip etkinleştirilmediğini gösteren Boole değeri.
- vbsReportPresent: VBS kapanım raporunun kullanılabilir olup olmadığını gösteren Boole değeri.
VBS kanıtlama
İlke yazarları, TPM kanıtlama ilkesi taleplerine ek olarak, bir VBS kanıtlama ilkesinde yetkilendirme kurallarını tanımlamak için bu talepleri kullanabilir:
- 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üsünün 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: Kapanım 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 ilkesini imzalamak için kullandığı anahtarı temsil eden "jwk" üyesine sahip JSON nesnesi, müşteri imzalı bir ilkeyi karşıya yüklediğinde uygulanabilir.
- x-ms-runtime: Doğrulanmış ortamda tanımlanan ve oluşturulan "talepler" içeren JSON nesnesi, "tutulan verileri kuşatma" kavramının bir uzmanlığıdır ve burada "kapanım tutulan veriler" iyi biçimlendirilmiş JSON'un UTF-8 kodlaması olarak biçimlendirilir.
- x-ms-inittime: Test edilen ortamın başlatma zamanında tanımlanan ve doğrulanan "talepleri" içeren JSON nesnesi.
Bu talep adları IETF JWT belirtiminden kullanılır.
- "jti" (JWT ID) Talebi - JWT için benzersiz tanımlayıcı.
- "iss" (Veren) Talebi - JWT'yi veren sorumlu.
- "iat" (Verilen) Talebi - JWT'nin verildiği saat.
- "exp" (Süre Sonu) Talebi - JWT'nin işlenmek üzere kabul edilmemesi gereken süre sonu.
- "nbf" (Önceki Değil) Talebi - JWT'nin işlenmesi için 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 tamamen desteklenir ve gelecekte de dahil edilmeye devam eder. Kullanım dışı talep adlarının kullanılması önerilir.
Kullanım dışı bırakılan 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 talepler, SGX kanıtlama hizmeti tarafından oluşturulur ve kanıtlama belirtecinde yer alır:
- 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: teklifin MRSIGNER 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: BASE64URL (kapanım tutulan veriler) olarak biçimlendirilmiş tutulan verileri kuşatma.
- 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 yerleştirilmiş bir JSON nesnesidir:
- qeidcertshash: Sertifika veren Quoting Enclave (QE) Kimliğinin SHA256 değeri.
- qeidcrlhash: Sertifika CRL listesi veren QE Kimliği SHA256 değeri.
- qeidhash: QE Kimliğinin SHA256 değeri.
- quotehash: Değerlendirilen teklifin SHA256 değeri.
- tcbinfocertshash: TCB Bilgi veren sertifikaların SHA256 değeri.
- tcbinfocrlhash: Sertifikalar CRL listesini veren TCB Bilgisi'nin SHA256 değeri.
- tcbinfohash: TCB Bilgi yardımcısının SHA256 değeri.
- x-ms-sgx-report-data: SGX kapanım raporu veri alanı (genellikle sha256 karma 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ılmamışsa 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ışı talep adlarının kullanılması önerilir:
Kullanım dışı bırakılan 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ıtlamacollateral | x-ms-sgx-collateral |
SEV-SNP kanıtlama
Aşağıdaki talepler, 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ının ve VM yapılandırmasının doğru olduğunu doğrulamak için HCL tarafından rapora dahil edilen 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, bir JSON Web Anahtarı (JWK) nesnesi (RFC 7517) olarak temsil edilen onaylanan 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 yeniliğ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.
- En yüksek değer (süre):: Dakika cinsinden bir yıl.
- omit_x5c: Azure Doğrulama hizmet orijinalliği kanıtı sağlamak için kullanılan sertifikayı atlamanız gerekip gerekmediğini belirten Boole talebi. True ise, kanıtlama belirtecine x5t eklenir. False(varsayılan) ise, kanıtlama belirtecine x5c eklenir.