分享方式:


如何撰寫證明原則

證明原則是上傳至 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() 動作,以允許處理發行規則。
  4. 將宣告規則新增至授權規則
    version=1.0;
    authorizationrules
    {
        [type=="secureBootEnabled", value==true, issuer=="AttestationService"]=>permit();
    };
    
    issuancerules
    {
    };
    
    如果傳入宣告集包含符合類型、值和簽發者的宣告,則 permit() 動作會告訴原則引擎處理 issuancerules
  5. 將宣告規則新增至 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"]
    
    複雜的原則可以用類似的方式製作。 如需詳細資訊,請參閱證明原則範例
  6. 儲存檔案。

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

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

  1. 使用原則 (utf-8 編碼) 產生 JWS、RFC7515 作為承載。 Base64Url 編碼原則的承載識別碼應為 "AttestationPolicy"。

    範例 JWT:

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

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

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

下一步