採用 AKV 和 Azure 機密運算 (ACC) 的安全金鑰發行功能

安全金鑰發行 (SKR) 是 Azure Key Vault (AKV) 受控 HSM 和進階供應項目的功能。 安全金鑰發行可讓您將受 HSM 保護的金鑰從 AKV 發行至經過證明的受信任執行環境 (TEE),例如安全記憶體保護區、VM 型 TEE 等。SKR 會將另一層存取保護新增至您的資料解密/加密密鑰,您可以在其中以具有已知設定的應用程式 + TEE 執行階段環境為目標,以存取金鑰資料。 在建立可匯出金鑰時定義的 SKR 原則會控管這些密鑰的存取權。

AKV 供應項目的 SKR 支援

搭配 TEE 的整體安全金鑰發行流程

SKR 只能根據 Microsoft Azure 證明 (MAA) 產生的宣告釋放金輪。 MAA 宣告與 SKR 原則定義之間有緊密整合。

Diagram of Secure Key Release Flow.

下列步驟適用於 AKV 進階。

步驟 1:建立金鑰保存庫進階 (HSM 支援)

請遵循這裡的詳細資料來了解以 Az CLI 為基礎的 AKV 建立

請務必將 [--sku] to 的值設定為 "premium"。

步驟 2:建立安全金鑰發行原則

安全金鑰發行原則是 JSON 格式發行原則,如這裡所定義,除了發行金鑰的授權之外,還會指定一組必要的宣告。 此處的宣告是以 MAA 為基礎的宣告,如 SGXAMD SEV-SNP CVM 所引述。

如需詳細資訊,請瀏覽 TEE 專屬的範例頁面。 如需 SKR 原則文法的詳細資訊,請參閱 Azure Key Vault 安全金鑰發行原則文法

設定 SKR 原則之前,請務必透過遠端證明流程執行 TEE 應用程式。 本教學課程未涵蓋遠端證明。

範例

{
    "version": "1.0.0",
    "anyOf": [ // Always starts with "anyOf", meaning you can multiple, even varying rules, per authority.
        {
            "authority": "https://sharedweu.weu.attest.azure.net",
            "allOf": [ // can be replaced by "anyOf", though you cannot nest or combine "anyOf" and "allOf" yet.
                {
                    "claim": "x-ms-isolation-tee.x-ms-attestation-type", // These are the MAA claims.
                    "equals": "sevsnpvm"
                },
                {
                    "claim": "x-ms-isolation-tee.x-ms-compliance-status",
                    "equals": "azure-compliant-cvm"
                }
            ]
        }
    ]
}


步驟 3:在具有附加 SKR 原則的 AKV 中建立可匯出金鑰

您可以在這裡找到索引鍵類型和其他相關屬性的確切詳細資料。

az keyvault key create --exportable true --vault-name "vault name from step 1" --kty RSA-HSM --name "keyname" --policy "jsonpolicyfromstep3 -can be a path to JSON"

步驟 4:在 TEE 內執行的應用程式進行遠端證明

此步驟可能專屬於執行應用程式的 TEE 類型:Intel SGX 保護區或 AMD SEV-SNP 型機密虛擬機器 (CVM),或搭配 AMD SEV-SNP 等方式在 CVM 記憶體保護區中執行的機密容器。

請遵循下列參考範例,以取得 Azure 的各種 TEE 類型供應項目:

常見問題集 (FAQ)

我是否可以搭配非機密運算供應項目來執行 SKR?

否。 附加至 SKR 的原則只會了解與硬體型 TEE 相關聯的 MAA 宣告。

我可以自備證明提供者或服務,並使用 AKV 的宣告來驗證和發行嗎?

否。 AKV 目前只能了解並整合 MAA。

我可以使用 AKV SDK 來執行金鑰發行嗎?

是。 最新 SDK 已與 7.3 AKV API 的支援金鑰發行整合。

您可以分享金鑰發行原則的一些範例嗎?

是,TEE 類型的詳細範例都在這裡。

我可以附加具有憑證和祕密的 SKR 原則類型嗎?

否。 目前不能。

參考資料

SKR 原則範例

搭配容器側車使用機密容器安全密鑰發行的 Azure 容器執行個體

具有安全金鑰發行範例的 AMD SEV-SNP 應用程式上的 CVM

具有 SKR 詳細資料的 AKV REST API

Azure Key Vault 安全金鑰發行原則文法

AKV SDK