使用 Azure 證明為 Always Encrypted 設定證明

適用于:Azure SQL資料庫

Microsoft Azure 證明是證明受信任執行環境 (TEE) 的解決方案,包含 Intel Software Guard Extension (Intel SGX) 記憶體保護區。

若要使用 Azure 證明來證明在 Azure SQL Database 中具有安全記憶體保護區的 Always Encrypted 使用了 Intel SGX 記憶體保護區,您需要:

  1. 建立證明提供者,並以建議的證明原則來進行設定。

  2. 判斷證明 URL,並將該網址提供給應用程式系統管理員。

注意

設定證明是證明管理員的責任。 請參閱設定 SGX 記憶體保護區和證明時的角色和責任

建立及設定證明提供者

證明提供者是 Azure 證明中的資源,可針對證明原則評估證明要求,並核發證明權杖

指定證明原則時,使用的是宣告規則文法

重要

Intel SGX 記憶體保護區的證明提供者在建立時會採用預設原則,因此不會驗證在記憶體保護區內執行的程式碼。 Microsoft 強烈建議您針對具有安全記憶體保護區的 Always Encrypted 設定以下建議的原則,而不要使用預設的原則。

Microsoft 建議在證明 Azure SQL Database 中的 Always Encrypted 使用了 Intel SGX 記憶體保護區時,採取下列原則:

version= 1.0;
authorizationrules 
{
       [ type=="x-ms-sgx-is-debuggable", value==false ]
        && [ type=="x-ms-sgx-product-id", value==4639 ]
        && [ type=="x-ms-sgx-svn", value>= 0 ]
        && [ type=="x-ms-sgx-mrsigner", value=="e31c9e505f37a58de09335075fc8591254313eb20bb1a27e5443cc450b6e33e5"] 
    => permit();
};

上述的原則會驗證:

  • Azure SQL Database 內的記憶體保護區不支援偵錯。

    在啟用或停用偵錯的情況下都可以載入記憶體保護區。 偵錯支援功能是為了讓開發人員能對記憶體保護區中執行的程式碼進行疑難排解。 在實際生產系統中,偵錯讓系統管理員能夠檢查記憶體保護區的內容,而這會降低記憶體保護區所提供的保護層級。 建議的原則會停用偵錯功能,以確保有惡意的系統管理員嘗試透過接管記憶體保護區機器來開啟偵錯工具支援時,證明就會失敗。

  • 記憶體保護區的產品識別碼會比對指派給具有安全記憶體保護區之 Always Encrypted 的產品識別碼。

    每一個記憶體保護區都有唯一的產品識別碼,可用來區別不同的記憶體保護區。 指派給 Always Encrypted 記憶體保護區的產品識別碼為 4639。

  • 程式庫的安全性版本號碼 (SVN) 會大於 0。

    SVN 可讓 Microsoft 回應在記憶體保護區程式碼中發現的潛在安全性錯誤。 如果發現並修正了安全性問題,Microsoft 就會使用新的 (遞增) SVN 來部署新版記憶體保護區。 上述建議原則會更新,以反映新的 SVN。 您可以依據建議原則更新自己的原則,以確保有惡意的系統管理員嘗試載入較舊且不安全的記憶體保護區時,證明就會失敗。

  • 記憶體保護區中的程式庫已使用 Microsoft 簽署金鑰進行簽署 (x-ms-sgx-mrsigner 宣告的值是簽署金鑰的雜湊)。

    證明的主要目標之一是說服用戶端,在記憶體保護區中執行的二進位程式碼就是應該要執行的二進位程式碼。 證明原則為此一目的提供了兩種機制。 其中一個是 mrenclave 宣告,也就是應該要在記憶體保護區中執行的二進位雜湊。 Mrenclave 的問題在於,即便是對程式碼做了細微的變更,二進位雜湊也會隨之改變,讓記憶體保護區中執行的程式碼變得難以修改。 因此,建議您使用 mrsigner,這是用來簽署記憶體保護區二進位程式碼的金鑰雜湊。 當 Microsoft 對記憶體保護區進行修訂時,只要簽署金鑰沒有變更,則 mrsigner 也就維持不變。 如此一來,就可以在不中斷客戶應用程式的情況下,部署更新過的二進位碼。

重要

Microsoft 可能會需要輪替用於簽署 Always Encrypted 記憶體保護區二進位程式碼的金鑰,但這應該是很罕見的情況。 在使用新金鑰簽署的新版記憶體保護區二進位程式碼部署至 Azure SQL Database 之前,我們會更新本文章,以提供新的建議證明原則,以及您應如何在證明提供者中更新原則的指示,以確保應用程式可在不中斷的情況下持續運作。

如需如何建立證明提供者,以及使用證明原則來進行設定的指示,請參考:

判斷證明原則的證明 URL

在設定證明原則之後,您必須將證明 URL 提供給 Azure SQL Database 中在 Always Encrypted 使用安全記憶體保護區的應用程式系統管理員。 證明 URL 是包含證明原則之證明提供者的 Attest URI,看起來會像:https://MyAttestationProvider.wus.attest.azure.net

使用 Azure 入口網站來判斷證明 URL

在證明提供者的 [概觀] 窗格中,將 Attest URI 屬性的值複製到剪貼簿。

使用 PowerShell 判斷證明 URL

使用 Get-AzAttestation Cmdlet 擷取證明提供者的屬性,包括 AttestURI。

Get-AzAttestation -Name $attestationProviderName -ResourceGroupName $attestationResourceGroupName

如需詳細資訊,請參閱建立和管理證明提供者

後續步驟

另請參閱