證明原則 1.0 版
執行個體擁有者可以使用 Azure 證明原則來定義證明流程期間必須驗證的內容。 本文介紹了證明服務和原則引擎的工作原理。 每個證明類型都有自己的證明原則。 支援的文法和處理大致相同。
原則版本 1.0
服務所支援的最低原則版本為 1.0 版。
證明服務流程如下所示:
- 平台會將證明呼叫中的證明辨識項傳送至證明服務。
- 證明服務會剖析辨識項,並建立證明評估中所使用的宣告清單。 這些宣告會以邏輯方式分類為傳入宣告集。
- 上傳的證明原則用於評估證明原則中撰寫之規則的辨識項。
原則 1.0 版有三個區段:
- version:版本是所遵循文法的版本號碼。
- authorizationrules:會先檢查的宣告規則集,以判斷證明是否應該繼續處理 issuancerules。 使用本章節來篩選出不需要套用發行規則的呼叫。 無法從本章節發出任何宣告給回應權杖。 這些規則可用來失敗證明。
- issuancerules:評估為會將其他資訊新增至原則中定義的證明結果的宣告規則集合。 宣告規則會依照其定義的順序套用。 它們也是選擇性的。 這些規則可用來新增至傳出宣告集和回應權杖。 這些規則無法用來失敗證明。
原則 1.0 版支援下列宣告,做為傳入宣告的一部分。
TPM 證明
使用這些宣告在信賴平台模組 (TPM) 證明原則中定義授權規則:
- aikValidated:包含證明識別索引鍵 (AIK) 認證是否已經過驗證之資訊的布林值。
- aikPubHash:包含 DER 格式的 AIK 公開金鑰 base64 (SHA256) 的字串。
- tpmVersion:包含 TPM 主要版本的整數值。
- secureBootEnabled:指出是否啟用安全開機的布林值。
- iommuEnabled:指出是否已啟用輸入-輸出記憶體管理單位的布林值。
- bootDebuggingDisabled:指出是否停用開機偵錯的布林值。
- notSafeMode:指出 Windows 是否未在安全模式中執行的布林值。
- notWinPE:指出 Windows 是否在 WinPE 模式中執行的布林值。
- vbsEnabled:指出虛擬化型安全性 (VBS) 是否已啟用的布林值。
- vbsReportPresent:指出 VBS 記憶體保護區報表是否可用的布林值。
VBS 證明
使用以下宣告在 VBS 證明原則中定義授權規則:
- enclaveAuthorId:字串值,其中包含記憶體保護區作者識別碼的 Base64Url 編碼值。 記憶體保護區主要模組的作者識別碼。
- enclaveImageId:字串值,其中包含記憶體保護區影像識別碼的 Base64Url 編碼值。 記憶體保護區主要模組的影像識別碼。
- enclaveOwnerId:字串值,其中包含記憶體保護區擁有者識別碼的 Base64Url 編碼值。 它是記憶體保護區擁有者的識別碼。
- enclaveFamilyId:字串值,其中包含記憶體保護區系列識別碼的 Base64Url 編碼值。 這是記憶體保護區主要模組的系列識別碼。
- enclaveSvn:整數值,其中包含記憶體保護區主要模組的安全性版本號碼。
- enclavePlatformSvn:整數值,其中包含記憶體保護區所在平台的安全性版本號碼。
- enclaveFlags:enclaveFlags 宣告是一個整數值,其中包含描述記憶體保護區執行階段原則的旗標。
各種證明類型的範例原則
TPM 的範例原則:
version=1.0;
authorizationrules {
=> permit();
};
issuancerules
{
[type=="aikValidated", value==true]&&
[type=="secureBootEnabled", value==true] &&
[type=="bootDebuggingDisabled", value==true] &&
[type=="notSafeMode", value==true] => issue(type="PlatformAttested", value=true);
};