Azure 監視器客戶自控金鑰
Azure 監視器中的資料會使用 Microsoft 管理的金鑰進行加密。 您可以使用自己的加密金鑰來保護工作區中的數據。 Azure 監視器中的客戶自控密鑰可讓您控制加密金鑰生命週期,以及存取記錄。 設定之後,內嵌至連結工作區的新數據會使用 Azure 金鑰保存庫 或 Azure 金鑰保存庫 受控 “HSM” 中的金鑰加密。
客戶自控金鑰概觀
待用 數據加密是組織中常見的隱私權和安全性需求。 您可以讓 Azure 完全管理待用加密,或使用各種選項來密切管理加密和加密密鑰。
Azure 監視器可確保所有資料和已儲存的查詢都會使用 Microsoft 管理的金鑰 (MMK) 在待用時加密。 Azure 監視器使用加密的方式與 Azure 儲存體加密的運作方式相同。
若要控制金鑰生命週期,並能夠撤銷存取數據、在 Azure 金鑰保存庫 或 Azure 金鑰保存庫 受控 「HSM」 中以您自己的金鑰加密數據。 客戶管理的金鑰功能可在專用叢集上使用,並提供較高層級的保護和控制。
擷取至專用叢集的數據會加密兩次-在服務層級使用Microsoft管理的密鑰或客戶管理的金鑰,以及在基礎結構層級使用兩種不同的加密演算法和兩個不同的密鑰。 雙重加密可防止其中一個加密演算法或密鑰遭到入侵的案例。 專用叢集也可讓您使用 Lockbox 來保護資料。
在過去 14 天內嵌 (或最近曾在查詢中使用) 的資料均會保留於 (由 SSD 支援的) 熱快取中,以提升查詢效率。 不論您是否設定客戶管理的密鑰,SSD 資料都會使用Microsoft管理的金鑰加密,但您對 SSD 存取的控制會遵守 密鑰撤銷。
重要
專用叢集會使用 每天至少 100 GB 的承諾層定價模式 。
客戶自控金鑰如何在 Azure 監視器中運作
Azure 監視器會使用受控識別,在 Azure 金鑰保存庫 中授與密鑰的存取權。 叢集層級支援Log Analytics叢集的身分識別。 為了在多個工作區上提供客戶管理的密鑰,Log Analytics 叢集資源會做為 金鑰保存庫 與 Log Analytics 工作區之間的中繼身分識別連線。 叢集的儲存體會使用與叢集相關聯的受控識別,透過 Microsoft Entra ID 向 Azure Key Vault 進行驗證。
叢集支援兩種受控識別類型:系統指派的和使用者指派的,您可以根據自己的情況在叢集中定義單一身分識別。
- 當 設定
SystemAssigned
為 時identity
type
,系統指派的受控識別會比較簡單,且會自動與叢集一起產生。 此身分識別稍後會用來將記憶體存取權授與數據加密和解密 金鑰保存庫。 - 使用者指派的受控識別可讓您在叢集建立時,於叢集建立時
identity
type
UserAssigned
設定客戶管理的密鑰,並在叢集建立之前授與 金鑰保存庫 的許可權。
您可以在新的叢集上設定客戶自控密鑰,或具有連結工作區內嵌數據的現有專用叢集。 同樣地,您可以隨時從叢集取消連結工作區。 擷取至連結工作區的新數據會使用您的密鑰加密,而較舊的數據仍會以Microsoft管理的密鑰加密。 設定不會中斷擷取或查詢,其中查詢會順暢地跨舊數據和新數據執行。 當您從叢集取消連結工作區時。 擷取的新數據會以Microsoft管理的密鑰加密。
重要
客戶自控金鑰功能是區域性的。 您的 Azure 金鑰保存庫、專用叢集和連結工作區必須位於相同的區域中,但可以位於不同的訂用帳戶中。
- 金鑰保存庫
- 擁有對 Key Vault 的權限的受控識別的 Log Analytics 叢集資源 - 此身分識別會傳播至基礎的專用叢集儲存體
- 專用叢集
- 連結至專用叢集的工作區
加密金鑰類型
儲存體資料加密牽涉到三種類型的金鑰:
- "KEK":金鑰加密金鑰 (您的客戶自控金鑰)
- "AEK":帳戶加密金鑰
- "DEK":資料加密金鑰
適用的規則如下:
- 叢集儲存體對於每個儲存體帳戶具有唯一的加密金鑰,也就是所謂的 "AEK"。
- "AEK" 會用來衍生 "DEK",其為用來加密寫入磁碟之每個資料區塊的金鑰。
- 在叢集中設定客戶管理的密鑰 “KEK” 時,叢集記憶體會對您的 金鑰保存庫 執行「包裝」和「解除包裝」要求,以進行「AEK」加密和解密。
- 您的 “KEK” 永遠不會離開您的 金鑰保存庫,而且,如果您在 Azure 金鑰保存庫 受控 “HSM” 中儲存密鑰,則永遠不會離開硬體。
- Azure 儲存體 使用與叢集相關聯的受控識別進行驗證。 它會透過 Microsoft Entra ID 存取 Azure Key Vault。
客戶自控金鑰佈建步驟
- 建立 Azure Key Vault 並儲存金鑰
- 建立專用叢集
- 授與 Key Vault 的權限
- 使用金鑰標識碼詳細數據更新專用叢集
- 連結工作區
目前 Azure 入口網站 不支援客戶管理的密鑰設定,而且可以透過 PowerShell、CLI 或 REST 要求執行佈建。
儲存加密金鑰 (KEK)
Azure 金鑰管理產品的組合會列出可使用的保存庫和受控 HSM。
在規劃叢集的區域中建立或使用現有的 Azure Key Vault。 在您的金鑰保存庫中,產生或匯入要用於記錄加密的金鑰。 Azure Key Vault 必須設定為可復原,才能保護您的金鑰和 Azure 監視器中對資料的存取權。 您可在 Key Vault 的 [屬性] 下確認此設定,其中應該已啟用 [虛刪除] 和 [清除保護]。
這些設定可以透過 CLI 和 PowerShell,在 Key Vault 中進行更新:
所需的權限
若要執行叢集相關動作,您需要下列權限:
動作 | 需要的權限或角色 |
---|---|
建立專用叢集 | 例如,Log Analytics 參與者內建角色提供的 Microsoft.Resources/deployments/* 和 Microsoft.OperationalInsights/clusters/write 權限 |
變更叢集屬性 | 例如,Log Analytics 參與者內建角色提供的 Microsoft.OperationalInsights/clusters/write 權限 |
將工作區連結至叢集 | 例如,Log Analytics 參與者內建角色提供的 Microsoft.OperationalInsights/clusters/write 、Microsoft.OperationalInsights/workspaces/write 和 Microsoft.OperationalInsights/workspaces/linkedservices/write 權限 |
檢查工作區連結狀態 | 例如,Log Analytics 讀者內建角色提供的工作區 Microsoft.OperationalInsights/workspaces/read 權限 |
取得叢集或檢查叢集的佈建狀態 | 例如,Log Analytics 讀者內建角色提供的 Microsoft.OperationalInsights/clusters/read 權限 |
更新叢集中的承諾用量層或 billingType | 例如,Log Analytics 參與者內建角色提供的 Microsoft.OperationalInsights/clusters/write 權限 |
授與所需的權限 | 具有 */write 權限的擁有者或參與者角色,或具有 Microsoft.OperationalInsights/* 權限的 Log Analytics 參與者內建角色 |
取消工作區與叢集的連結 | 例如,Log Analytics 參與者內建角色提供的 Microsoft.OperationalInsights/workspaces/linkedServices/delete 權限 |
刪除專用叢集 | 例如,Log Analytics 參與者內建角色提供的 Microsoft.OperationalInsights/clusters/delete 權限 |
建立叢集
叢集會使用受控識別,透過您的 Key Vault 進行資料加密。 設定 identity
type
或 建立叢集時的屬性SystemAssigned
UserAssigned
,以允許存取數據加密和解密作業 金鑰保存庫。
FOr 範例,在系統指派受控識別的要求主體中新增這些屬性
{
"identity": {
"type": "SystemAssigned"
}
}
注意
在建立叢集之後,可以變更身分識別類型,且不會中斷擷取或查詢,但有下列考慮
- 身分識別和金鑰無法在叢集中同時更新 — 連續兩個作業中更新
SystemAssigned
更新至UserAssigned
— 在 金鑰保存庫 中授UserAssign
與身分識別,然後在叢集中更新identity
UserAssigned
更新至SystemAssigned
— 在 金鑰保存庫 中授SystemAssigned
與身分識別,然後在叢集中更新identity
請遵循專用叢集一文中說明的程式。
授與 Key Vault 權限
Key Vault 中有兩種權限模型可授與叢集和基礎儲存體的存取權 — Azure 角色型存取控制 (Azure RBAC) 和保存庫存取原則 (舊版)。
指派您控制的 Azure RBAC (建議)
若要新增角色指派,您必須擁有具有
Microsoft.Authorization/roleAssignments/write
和Microsoft.Authorization/roleAssignments/delete
權限的角色,例如使用者存取系統管理員或擁有者。- 在 Azure 入口網站 中開啟您的 金鑰保存庫,然後選取 [設定>存取組態>] Azure 角色型訪問控制並套用
- 按兩下 [移至訪問控制(IAM)] 按鈕,然後新增 金鑰保存庫 加密服務加密使用者角色指派。
- 在 [成員] 索引標籤中選取 [受控識別 ],然後選取身分識別的訂用帳戶和身分識別作為成員
指派保存庫存取原則 (舊版)
在 Azure 入口網站中開啟您的 Key Vault,然後選取 [存取原則]>[保存庫存取原則]>[+ 新增存取原則],以使用以下這些設定建立原則:
- 金鑰權限:選取 [取得]、[包裝金鑰] 和 [將金鑰解除包裝]。
- 選取主體:根據叢集中使用的身分識別類型而定 (系統或使用者指派的受控識別)
- 系統指派的受控識別:輸入叢集名稱或叢集主體識別碼
- 使用者指派的受控識別:輸入身分識別名稱
需要 [取得] 權限,才能確認 Key Vault 已設定為可復原來保護金鑰和 Azure 監視器資料的存取權。
使用金鑰識別碼詳細資料更新叢集
叢集上的所有作業都需要 Microsoft.OperationalInsights/clusters/write
動作權限。 它可透過包含 */write
動作的擁有者或參與者,或透過包含動作的 Microsoft.OperationalInsights/*
Log Analytics 參與者角色來授與許可權。
此步驟使用金鑰和版本來更新專用叢集儲存體,以用於 "AEK" 包裝和解除包裝。
重要
- 密鑰輪替可以是自動或每個明確的金鑰版本,請參閱 密鑰輪替 以判斷適當的方法,再更新叢集中的密鑰標識碼詳細數據。
- 叢集更新不應在相同作業中同時包括身分識別和金鑰識別碼詳細資料。 如果您需要更新這兩者,則更新應該在兩個連續作業中進行。
使用金鑰識別碼詳細資料來更新叢集中的 KeyVaultProperties。
作業為非同步,而且可能需要一些時間才能完成。
將工作區連結至叢集
重要
只有在叢集佈建之後,才能執行此步驟。 如果在佈建之前連結工作區並內嵌資料,則內嵌的資料將遭到捨棄且無法復原。
遵循專用叢集一文中說明的程序。
從叢集取消連結工作區
遵循專用叢集一文中說明的程序。
金鑰撤銷
重要
- 撤銷資料存取權的建議方式是停用金鑰,或刪除 Key Vault 中的存取原則。
- 將叢集的
identity
type
設定為None
,也會撤銷資料的存取權,但不建議使用此方法,因為您無法在不連絡支援人員的情況下加以還原。
叢集的記憶體一律會遵循密鑰許可權在一小時內或更早的變更,且記憶體變得無法使用。 內嵌至連結工作區的新資料會被捨棄且無法復原。 這些工作區上的資料無法存取且查詢會失敗。 只要叢集和工作區未遭刪除,先前內嵌的資料就會保留在儲存體中。 無法存取的資料由資料保留原則所控管,且會在達到保留期時清除。 在過去 14 天內嵌的資料或最近曾在查詢中使用的資料也會保留於 (由 SSD 支援的) 熱快取中,以提升查詢效率。 SSD 上的資料會在金鑰撤銷作業中遭到刪除且變成無法存取。 叢集儲存體會嘗試定期連線到 Key Vault 以進行包裝和解除包裝,且在金鑰啟用後,解除包裝就會成功,SSD 資料會從儲存體中重新載入,且資料擷取和查詢均會在 30 分鐘內繼續。
金鑰輪替
金鑰輪替有兩種模式:
- 自動調整 — 更新
"keyVaultProperties"
叢集中的屬性並省略"keyVersion"
屬性,或將它設定為""
。 儲存體會自動使用最新的金鑰版本。 - 明確金鑰版本更新— 更新
"keyVaultProperties"
屬性,並在屬性中"keyVersion"
更新金鑰版本。 密鑰輪替需要明確更新"keyVersion"
叢集中的屬性。 如需詳細資訊,請參閱使用金鑰識別碼詳細資料更新叢集。 如果您在 Key Vault 中產生新的金鑰版本,但未更新叢集中的金鑰,則叢集儲存體會繼續使用您先前的金鑰。 如果您先停用或刪除舊金鑰,然後再更新叢集中的新金鑰,則會進入金鑰撤銷狀態。
在金鑰輪替作業期間和之後,所有數據都會保持可存取。 資料一律使用帳戶加密金鑰 ("AEK") 進行加密,這會使用您在 Key Vault 中新的金鑰加密金鑰 ("KEK") 版本進行加密。
適用於已儲存查詢和記錄搜尋警示的客戶自控金鑰
Log Analytics 中使用的查詢語言具有表達性,而且可以在註解或查詢語法中包含敏感性資訊。 有些組織要求這類資訊要受到客戶自控金鑰原則所保護,而且您需要儲存使用金鑰進行加密的查詢。 Azure 監視器可讓您在連結至工作區時,將使用金鑰加密的已儲存查詢和記錄搜尋警示儲存在您自己的儲存體帳戶中。
活頁簿的客戶自控金鑰
Azure 監視器可讓您在活頁簿的「儲存」作業中選取 [將內容儲存至 Azure 儲存體帳戶],以將使用金鑰加密的活頁簿查詢儲存在您自己的儲存體帳戶中,惟須留意適用於已儲存查詢和記錄搜尋警示的客戶自控金鑰提及的注意事項。
注意
不論客戶自控金鑰設定為何,在下列案例中,查詢都會以 Microsoft 金鑰 ("MMK") 加密:Azure 儀表板、Azure 邏輯應用程式、Azure Notebooks 和自動化 Runbook。
連結已儲存查詢的儲存體帳戶時,服務會將已儲存查詢和記錄搜尋警示查詢儲存在您的儲存體帳戶中。 透過對儲存體帳戶待用加密原則的控制,您可以使用客戶自控金鑰來保護已儲存的查詢和記錄搜尋警示。 不過,您需負責支付與該儲存體帳戶相關聯的成本。
設定客戶自控金鑰進行查詢之前的考慮事項
- 您必須擁有工作區和儲存體帳戶的「寫入」權限。
- 請務必在 Log Analytics 工作區所在的相同區域中建立您的儲存體帳戶 (使用客戶自控金鑰加密)。 這是很重要的,因為已儲存的查詢會儲存在資料表儲存體中,且只能在儲存體帳戶建立時進行加密。
- 儲存在查詢套件中的查詢不會使用客戶自控金鑰加密。 請在儲存查詢時改為選取 [另存為舊版查詢],以使用客戶自控金鑰保護查詢。
- 儲存體中的儲存查詢會被視為服務成品,且其格式可能會變更。
- 連結用於查詢的儲存體帳戶,會從工作區中移除現有的儲存查詢。 進行此設定之前,請先複製您所需的儲存查詢。 您可以使用 PowerShell 來檢視已儲存的查詢。
- 連結儲存體帳戶進行查詢時,不支援查詢「歷程記錄」和「釘選到儀表板」。
- 您可以將單一儲存體帳戶連結至已儲存查詢和記錄搜尋警示查詢的工作區。
- 記錄搜尋警示儲存在 Blob 儲存體中,客戶自控金鑰加密可在儲存體帳戶建立時設定,或是稍後再設定。
- 引發的記錄搜尋警示將不會包含搜尋結果或警示查詢。 您可以使用警示維度來取得引發警示中的內容。
為已儲存的查詢設定 BYOS
連結用於查詢的儲存體帳戶,以將已儲存的查詢保留在儲存體帳戶中。
設定之後,任何新的「已儲存的搜尋」查詢都將儲存於您的儲存體中。
為記錄搜尋警示查詢設定 BYOS
連結用於警示的儲存體帳戶,以將記錄搜尋警示查詢保留在儲存體帳戶中。
設定之後,任何新的警示查詢都將儲存於您的儲存體中。
客戶加密箱
加密箱讓您能夠在支援要求期間,可以控制是否要核准或拒絕 Microsoft 工程師存取您資料的要求。
加密箱提供於 Azure 監視器中的專用叢集,其中,會在訂用帳戶層級授與您對資料的存取權限。
深入了解適用於 Microsoft Azure 的客戶加密箱
客戶自控金鑰作業
客戶自控金鑰會在專用叢集上提供,而這些作業已在專用叢集一文中加以參考
- 取得資源群組中的所有叢集
- 取得訂用帳戶中的所有叢集
- 更新叢集中的「容量保留」
- 更新叢集中的「billingType」
- 取消工作區與叢集的連結
- 刪除叢集
限制和條件約束
每個區域和訂用帳戶中最多可以建立五個作用中的叢集。
每個區域和訂用帳戶中最多可以存在七個保留叢集 (作用中或最近刪除的叢集)。
最多可將 1,000 個 Log Analytics 工作區連結至叢集。
在特定工作區上,最多允許在 30 天內執行兩個工作區連結作業。
目前不支援將叢集移至另一個資源群組或訂用帳戶。
叢集更新不應在相同作業中同時包含身分識別和金鑰識別碼詳細資料。 如果您需要更新這兩者,則更新應該在兩個連續作業中進行。
加密箱目前不適用於中國。
Lockbox 不適用於具有輔助方案的資料表。
系統會自動針對自 2020 年 10 月在支援的區域中建立的叢集設定雙重加密。 您可以在叢集上傳送 GET 要求,並針對已啟用雙重加密的叢集,觀察
isDoubleEncryptionEnabled
值是否為true
,以驗證已將叢集設定為雙重加密。- 如果您建立叢集並收到錯誤:「region-name 不支援針對叢集使用雙重加密」,您仍然可以透過在 REST 要求本文中新增
"properties": {"isDoubleEncryptionEnabled": false}
,來建立不含雙重加密的叢集。 - 建立叢集後,就無法變更雙重加密設定。
- 如果您建立叢集並收到錯誤:「region-name 不支援針對叢集使用雙重加密」,您仍然可以透過在 REST 要求本文中新增
客戶自控金鑰加密會在設定時間之後套用到新的內嵌資料。 設定之前內嵌的資料會持續以 Microsoft 金鑰加密。 您可以順暢地查詢在客戶自控金鑰設定前後內嵌的資料。
Azure Key Vault 必須設定為可復原。 這些屬性預設不會啟用,且應該使用 CLI 或 PowerShell 來設定:
您的 Azure Key Vault、叢集和工作區必須位於相同區域和相同的 Microsoft Entra 租用戶中,但可位於不同的訂用帳戶中。
將叢集的
identity
type
設定為None
,也會撤銷資料的存取權,但不建議使用此方法,因為您無法在不連絡支援人員的情況下加以還原。 撤銷資料存取權的建議方式是金鑰撤銷。如果您的 Key Vault 位於 Private-Link (vNet) 中,就無法將客戶自控金鑰與使用者指派的受控識別搭配使用。 在此案例中,您可以使用系統指派的受控識別。
輔助資料表方案不支援客戶自控金鑰。 使用輔助方案之資料表中的資料會使用 Microsoft 管理的金鑰加密,即使您使用自己的加密金鑰來保護 Log Analytics 工作區中其餘部分的資料也一樣。
疑難排解
每個 Key Vault 可用性的行為:
正常作業:儲存體會在短時間內快取 "AEK",並定期回到 Key Vault 以解除包裝。
Key Vault 連線錯誤 — 儲存體藉由允許金鑰在可用性問題發生期間保留於快取中來處理暫時性錯誤 (逾時、連線失敗、"DNS" 問題),並克服短暫中斷和可用性問題。 查詢和擷取功能會繼續進行,而不會中斷。
Key Vault 存取速率 (叢集儲存體存取 Key Vault 來進行包裝和解除包裝的頻率) 介於 6 到 60 秒之間。
如果您在叢集處於佈建狀態或更新狀態時更新叢集,更新就會失敗。
如果在建立叢集時發生衝突錯誤,可能是有同名的叢集已在過去 14 天內刪除,但仍保留。 刪除的叢集名稱會在刪除的 14 天後變成可用名稱。
如果工作區連結到另一個叢集,則將工作區連結到叢集會失敗。
如果您建立一個叢集並立即指定 KeyVaultProperties,則該作業可能會失敗,直到將身分識別指派給該叢集並將其授與給 Key Vault 為止。
如果您使用 KeyVaultProperties 更新現有叢集,且 Key Vault 中缺少 'Get' 金鑰存取原則,則作業會失敗。
如果無法部署叢集,請驗證您的 Azure Key Vault、叢集及連結的工作區均位於相同區域。 但其可位於不同的訂用帳戶中。
如果您在 Key Vault 中輪替金鑰,但未在叢集中將新的金鑰識別碼詳細資料更新,則叢集會繼續使用先前的金鑰,且資料將變得無法存取。 更新叢集中新的金鑰識別碼詳細資料,以繼續進行資料擷取和查詢。 您可以使用 "''" 更新金鑰版本,讓儲存體一律自動使用最新的金鑰版本。
有些作業是長時間執行的,且可能需要一些時間才能完成,例如叢集建立、叢集金鑰更新和叢集刪除。 您可以將 GET 要求傳送至叢集或工作區,並觀察回應,以檢查作業狀態。 例如,未連結的工作區在features 下方不會有 clusterResourceId。
錯誤訊息
叢集更新
- 400 - 叢集處於刪除中的狀態。 非同步作業正在進行中。 叢集必須先完成其作業,然後才能執行任何更新作業。
- 400 - KeyVaultProperties 並非空白,但格式不正確。 請參閱金鑰識別碼更新。
- 400 - 無法在 Key Vault 中驗證金鑰。 可能是因為權限不足,或金鑰不存在時。 驗證您已在 Key Vault 中設定金鑰和存取原則。
- 400 - 金鑰無法復原。 Key Vault 必須設定為虛刪除和清除保護。 請參閱 Key Vault 文件
- 400 - 無法立即執行作業。 請等候非同步作業完成,然後再試一次。
- 400 - 叢集處於刪除中的狀態。 請等候非同步作業完成,然後再試一次。
叢集取得
- 404--找不到叢集,叢集可能已遭刪除。 如果您嘗試使用該名稱來建立一個叢集但發生衝突,則表示該叢集正在刪除中。