如何撰寫證明原則

證明原則是上傳至 Microsoft Azure 證明的檔案。 Azure 證明會提供以證明特定原則格式上傳原則的彈性。 或者,也可以上傳原則的編碼版本 (JSON Web 簽章格式)。 原則管理員負責撰寫證明原則。 在大部分的證明案例中,信賴憑證者扮演原則管理員。 進行證明呼叫的用戶端會傳送證明辨識項,服務會加以剖析並轉換成傳入宣告 (屬性集合,值)。 然後,服務會根據原則中定義的內容來處理宣告,並傳回計算的結果。

此原則包含的規則會決定授權準則、屬性及證明權杖的內容。 範例原則檔案如下所示:

version=1.0;
authorizationrules
{
   c:[type="secureBootEnabled", issuer=="AttestationService"]=> permit()
};

issuancerules
{
  c:[type="secureBootEnabled", issuer=="AttestationService"]=> issue(claim=c)
  c:[type="notSafeMode", issuer=="AttestationService"]=> issue(claim=c)
};

原則檔案有三個區段,如上所示:

  • version:版本是後續文法的版本號碼。

    version=MajorVersion.MinorVersion	
    

    目前唯一支援的版本為 1.0。

  • authorizationrules:將要先檢查的宣告規則集合,以判斷 Azure 證明是否應該繼續處理 issuancerules。 宣告規則會依照其定義的順序套用。

  • issuancerules:將要評估的宣告規則集合,以將其他資訊新增至原則中定義的證明結果。 宣告規則會依照其定義的順序套用,而且也是選擇性的。

如需詳細資訊,請參閱宣告和宣告規則

草擬原則檔案

  1. 建立新檔案。
  2. 新增檔案的版本。
  3. 新增 authorizationrulesissuancerules 的區段。
version=1.0;
authorizationrules
{
=>deny();
};

issuancerules
{
};

授權規則包含 deny() 動作,但不含任何條件,以確保不會處理任何發行規則。 或者,授權規則也可以包含 permit() 動作,以允許處理發行規則。

  1. 將宣告規則新增至授權規則
version=1.0;
authorizationrules
{
[type=="secureBootEnabled", value==true, issuer=="AttestationService"]=>permit();
};

issuancerules
{
};

如果傳入宣告集包含符合類型、值和簽發者的宣告,則 permit() 動作會告訴原則引擎處理 issuancerules

  1. 將宣告規則新增至 issuancerules
version=1.0;
authorizationrules
{
[type=="secureBootEnabled", value==true, issuer=="AttestationService"]=>permit();
};

issuancerules
{
=> issue(type="SecurityLevelValue", value=100);
};

傳出宣告集將包含具有下列內容的宣告:

[type="SecurityLevelValue", value=100, valueType="Integer", issuer="AttestationPolicy"]

複雜的原則可以用類似的方式製作。 如需詳細資訊,請參閱證明原則範例

  1. 儲存檔案。

以 JSON Web 簽章格式建立原則檔案

建立原則檔案之後,若要上傳 JWS 格式的原則,請遵循下列步驟。

  1. 使用原則 (utf-8 編碼) 產生 JWS、RFC 7515 作為承載

    • Base64Url 編碼原則的承載識別碼應為 "AttestationPolicy"。

    範例 JWT:

    Header: {"alg":"none"}
    Payload: {"AttestationPolicy":" Base64Url (policy)"}
    Signature: {}
    
    JWS format: eyJhbGciOiJub25lIn0.XXXXXXXXX.
    
  2. (選擇性) 簽署原則。 Azure 證明支援下列演算法:

    • :請勿簽署原則承載。
    • RS256:支援用來簽署原則承載的演算法
  3. 上傳 JWS 並驗證原則。

    • 如果原則檔案沒有語法錯誤,服務就會接受原則檔案。
    • 如果原則檔案包含語法錯誤,服務就會拒絕原則檔案。

後續步驟