採用 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 原則定義之間有緊密整合。

安全金鑰發行流程的圖表。

下列步驟適用於 AKV 進階。

步驟 1:建立由 HSM 支援的進階版金鑰保存庫

請參考此處使用 Az CLI 進行 AKV 建立的詳細說明

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

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

安全金鑰發行原則是 JSON 格式發行原則,如這裡所定義,除了發行金鑰的授權之外,還會指定一組必要的宣告。 此處的聲明是以 MAA 為基礎的聲明,相關內容可參見 SGX 的此處說明 以及 AMD 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 Enclaves、以 AMD SEV-SNP 為基礎的機密虛擬機器 (CVM),或在使用 AMD SEV-SNP 的 CVM Enclaves 中執行的機密容器等。

請參考下列 Azure 提供的各種 TEE 類型參考範例:

常見問題集 (FAQ)

我可以使用非機密運算服務來執行 SKR 嗎?

是。 安全金鑰釋放是 Azure Key Vault Premium 與 Managed HSM 的一項功能。 發布操作會驗證已簽署的 Microsoft Azure 證明(MAA)令牌,與金鑰的釋放政策無關,且不受計算類型影響。 機密運算產品(機密虛擬機、機密容器)是這些憑證最常見的來源,因為它們帶有硬體基礎的 TEE 聲明,但並非必須。 可信啟動 VM 也會產生 MAA 證明權杖,例如secureboot宣告,以及由 vTPM 測量的x-ms-azurevm-attested-pcr-values PCR 宣告;且有個可根據這些宣告來控管金鑰發行的發行原則。 如需了解權杖需求和宣告結構,請參閱 Azure Key Vault 安全金鑰釋放原則語法。 機密運算還會保護記憶體中釋放的金鑰資料,避免主機取得;當需要這種保護時,則使用機密運算產品。

我可以自備證明提供者或服務,並將那些宣告用於 AKV 以進行確認和發行嗎?

Microsoft Azure 證明 是原生整合的認證服務。 發布政策也能驗證來自其他認證機構的憑證,前提是該憑證符合預期結構、支援 OpenID Connect、攜帶預期的權利要求,且由憑證簽署,該憑證可連結至 金鑰保存庫 信任的公開憑證(目前為 DigiCert)。 欲了解更多資訊,請參閱 Azure Key Vault 安全金鑰釋放政策文法

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

是。 最新 SDK 已整合 7.3 AKV API 對 key RELEASE 的支援。

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

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

我可以將 SKR 類型的原則套用於憑證和機密嗎?

否。 目前不能。

參考資料

SKR 原則範例

在 Azure 容器執行個體上使用機密容器進行安全金鑰發行與容器邊車

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

具有 SKR 詳細資料的 AKV REST API

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

保護 Azure 虛擬機上的智慧財產權,並採用認證門檻的安全金鑰釋出

AKV SDK