Azure Cloud HSM 支援透過Log Analytics工作區進行作業事件記錄。 此功能可讓您集中收集、分析和監視雲端 HSM 資源中的記錄。
作業事件記錄對於硬體安全模組 (HSM) 的整體安全性至關重要。 其會為所有存取和作業提供透明且不可變的記錄,以協助確保責任和可追蹤性。
作業記錄可藉由擷取使用者活動、金鑰管理動作和系統事件等詳細資料,協助您偵測未經授權的存取、調查安全性事件,以及符合法規需求。 對於可能表示有潛在缺口或設定錯誤的異常狀況,其在這方面的識別上也扮演重要角色。 透過這種方式,其讓組織有更強的能力維護其密碼編譯作業的完整性和機密性。
在本教學課程中,您會:
- 設定作業事件記錄,包括建立儲存體帳戶和 Log Analytics 工作區。
- 查詢作業事件記錄以擷取特定的 HSM 作業事件。
- 取得 HSM 作業事件的完整清單。
這很重要
為了維護安全性和隱私權,記錄會排除敏感的詳細資料,例如金鑰識別碼、金鑰名稱,以及其他與金鑰、使用者或工作階段相關的可識別資訊。 記錄會擷取已執行的 HSM 作業、作業時間,以及相關的 HSM 中繼資料。
Azure 雲端 HSM 作業事件記錄無法判斷 HSM 作業成功與否。 它只能記錄執行作業的事實。
先決條件
- 具有有效訂閱的 Azure 帳戶。 您可以免費建立帳戶。
- 您已部署、初始化並設定的 Azure 雲端 HSM 資源。 如需相關資訊,請參閱 Azure 雲端 HSM 上線指南 (部分機器翻譯)。
設定作業事件記錄
請使用下列各節中的命令來設定您想要監視的資源。
建立儲存體帳戶以儲存 HSM 記錄
若要建立儲存體帳戶來儲存 HSM 記錄,您必須先建立資源群組。 您也需要在該資源群組內建立儲存體帳戶。 請使用下列命令建立這些項目:
az group create --name <ResourceGroupName> --location <RegionName>
az storage account create --name <StorageAccountName> --resource-group <ResourceGroupName> --location <RegionName> --sku Standard_LRS --kind StorageV2
建立 Log Analytics 工作區
若要建立 Log Analytics 工作區來儲存和分析 HSM 記錄,請使用下列命令:
az monitor log-analytics workspace create --resource-group <ResourceGroupName> --workspace-name <WorkspaceName>
如需如何為 Azure 監視器建立 Log Analytics 工作區的詳細資訊,請參閱建立 Log Analytics 工作區 (部分機器翻譯)。
使用 Azure CLI 或 Azure PowerShell 啟用診斷設定
若要設定變數並執行命令來啟用 Azure 雲端 HSM 作業事件記錄的診斷設定,請使用下列程式碼。 將 SubscriptionId、ResourceGroupName、HSMName、StorageAccountName 和 WorkspaceName 的預留位置取代為您的環境適用的值。
Azure CLI
$resourceId = "/subscriptions/<SubscriptionId>/resourceGroups/<ResourceGroupName>/providers/Microsoft.HardwareSecurityModules/cloudHsmClusters/<HSMName>"
$storageAccountId = "/subscriptions/<SubscriptionId>/resourceGroups/<ResourceGroupName>/providers/Microsoft.Storage/storageAccounts/<StorageAccountName>"
$workspaceId = "/subscriptions/<SubscriptionId>/resourcegroups/<ResourceGroupName>/providers/microsoft.operationalinsights/workspaces/<WorkspaceName>"
az monitor diagnostic-settings create --resource $resourceId -n "my-chsmAuditLogs" --storage-account $storageAccountId --logs "[{category:HsmServiceOperations,enabled:true}]" --workspace $workspaceId
Azure PowerShell
$resourceId = "/subscriptions/<SubscriptionId>/resourceGroups/<ResourceGroupName>/providers/Microsoft.HardwareSecurityModules/cloudHsmClusters/<HSMName>"
$storageAccountId = "/subscriptions/<SubscriptionId>/resourceGroups/<ResourceGroupName>/providers/Microsoft.Storage/storageAccounts/<StorageAccountName>"
$workspaceId = "/subscriptions/<SubscriptionId>/resourcegroups/<ResourceGroupName>/providers/microsoft.operationalinsights/workspaces/<WorkspaceName>"
New-AzDiagnosticSetting -ResourceId $resourceId -Name "my-chsmAuditLogs" -StorageAccountId $storageAccountId -WorkspaceId $workspaceId -Enabled $true -Category "HsmServiceOperations"
驗證雲端 HSM 記錄的設定
在建立診斷設定後,記錄便會在一兩分鐘內開始流動。
您可以透過 Log Analytics 工作區,從 Azure 入口網站查詢雲端 HSM 作業事件記錄。
您也可以使用 Azure CLI 和 Azure PowerShell 查詢雲端 HSM 作業事件記錄。 在此範例中,您會更新 ResourceGroupName 和 WorkspaceName:
$workspaceId = az monitor log-analytics workspace show --resource-group <ResourceGroupName> --workspace-name <WorkspaceName> --query customerId -o tsv
az monitor log-analytics query -w $workspaceId --analytics-query "CloudHsmServiceOperationAuditLogs | take 10"
註冊錯誤
如果您收到錯誤訊息「<訂用帳戶> 未註冊為使用 microsoft.insights」,則表示您的 Azure 訂用帳戶未註冊為使用 Microsoft.Insights 資源提供者。 若要解決此問題,您必須在訂用帳戶中向 Microsoft.Insights 提供者註冊。
若要使用 Azure CLI 註冊 Microsoft.Insights,請執行下列命令:
az provider register --namespace Microsoft.Insights
az provider show --namespace Microsoft.Insights --query "registrationState" --output table
若要使用 Azure PowerShell 註冊 Microsoft.Insights,請執行下列命令:
Register-AzResourceProvider -ProviderNamespace Microsoft.Insights
Get-AzResourceProvider -ProviderNamespace Microsoft.Insights | Select-Object ProviderNamespace, > RegistrationState
在執行命令後,請確定您已註冊資源提供者。 如果仍在註冊中,您可能需要稍候片刻,然後再次檢查。
查詢作業事件記錄
您可以使用下列命令來擷取作業記錄中所記錄的特定 HSM 作業事件。 若要列出所有作業事件,只要執行 CloudHsmServiceOperationAuditLogs 即可。
如需可查詢之其他作業的詳細資料,請參閱本文稍後的所記錄作業的完整清單。
登入和工作階段事件
// Find login and session events
CloudHsmServiceOperationAuditLogs
| where OperationName in ("CN_LOGIN", "CN_AUTHORIZE_SESSION")
| project OperationName, MemberId, CallerIpAddress, TimeGenerated
建立和刪除使用者的事件
// Find user creation and deletion events
CloudHsmServiceOperationAuditLogs
| where OperationName in ("CN_CREATE_USER", "CN_DELETE_USER")
| project OperationName, MemberId, CallerIpAddress, TimeGenerated
建立金鑰的事件
// Find key creation events
CloudHsmServiceOperationAuditLogs
| where OperationName in ("CN_GENERATE_KEY", "CN_GENERATE_KEY_PAIR")
| project OperationName, MemberId, CallerIpAddress, TimeGenerated
刪除金鑰的事件
// Find key deletion events
CloudHsmServiceOperationAuditLogs
| where OperationName == "CN_TOMBSTONE_OBJECT"
| project OperationName, MemberId, CallerIpAddress, TimeGenerated
作業詞彙
下列名稱與 HSM 作業事件有關。
azcloudhsm_util
| 作業名稱 | 命令名稱 | 說明 |
|---|---|---|
CN_LOGIN |
loginHSM |
登入 HSM。 |
CN_LOGOUT |
logoutHSM |
登出 HSM。 |
CN_GENERATE_KEY |
genSymKey |
產生對稱金鑰。 |
CN_GENERATE_KEY_PAIR |
genRSAKeyPair |
產生 RSA 金鑰組。 |
CN_GENERATE_KEY_PAIR |
genECCKeyPair |
產生 ECC 金鑰組。 |
CN_SHARE_OBJECT |
shareKey |
與其他使用者共用/取消共用現有金鑰。 |
CN_TOMBSTONE_OBJECT |
deleteKey |
刪除金鑰。 |
CN_FIND_OBJECTS_FROM_INDEX |
findSingleKey |
尋找單一金鑰。 |
CN_FIND_OBJECTS_USING_COUNT |
findKey |
尋找金鑰。 |
CN_GET_OBJECT_INFO |
getKeyInfo |
取得關於共用使用者/工作階段的金鑰資訊。 |
HASH_SINGLE_CALL |
sign |
產生簽章 (ME_PKCS_PKCS1v15_CRT_ENCRYPT)。 |
HASH_SINGLE_CALL |
verify |
驗證簽章 (ME_PKCS_PKCS1v15_DECRYPT)。 |
CN_LIST_TOKENS |
listTokens |
列出目前分割區中的所有權杖。 |
CN_GET_TOKEN |
getToken |
取得權杖。 |
CN_CREATE_USER |
createUser |
建立使用者。 |
CN_DELETE_USER |
deleteUser |
刪除使用者。 |
CN_LIST_USERS |
listUsers |
列出使用者。 |
CN_CHANGE_PSWD |
changePswd |
變更密碼。 |
CN_MODIFY_OBJECT |
setAttribute |
設定物件的屬性。 |
CN_GET_ATTRIBUTE_VALUECN_GET_ALL_ATTRIBUTE_VALUECN_GET_ATTRIBUTE_SIZECN_GET_ALL_ATTRIBUTE_SIZE |
getAttribute |
取得物件的屬性。 |
CN_TOKEN_INFO |
getHSMInfo |
取得 HSM 資訊。 |
CN_PARTITION_INFO |
getPartitionInfo |
取得分割區資訊。 |
| --- | getClusterInfo |
未記錄。 |
| --- | server |
未記錄。 |
azcloudhsm_mgmt
| 作業名稱 | 命令名稱 | 說明 |
|---|---|---|
CN_LOGIN |
loginHSM |
登入 HSM。 |
CN_LOGOUT |
logoutHSM |
登出 HSM。 |
CN_GENERATE_KEY |
genSymKey |
產生對稱金鑰。 |
CN_GENERATE_KEY_PAIR |
genRSAKeyPair |
產生 RSA 金鑰組。 |
CN_GENERATE_KEY_PAIR |
genECCKeyPair |
產生 ECC 金鑰組。 |
CN_SHARE_OBJECT |
shareKey |
與其他使用者共用/取消共用現有金鑰。 |
CN_TOMBSTONE_OBJECT |
deleteKey |
刪除金鑰。 |
CN_FIND_OBJECTS_FROM_INDEX |
findSingleKey |
尋找單一金鑰。 |
CN_FIND_OBJECTS_USING_COUNT |
findKey |
尋找金鑰。 |
CN_GET_OBJECT_INFO |
getKeyInfo |
取得關於共用使用者/工作階段的金鑰資訊。 |
HASH_SINGLE_CALL |
sign |
產生簽章 (ME_PKCS_PKCS1v15_CRT_ENCRYPT)。 |
HASH_SINGLE_CALL |
verify |
驗證簽章 (ME_PKCS_PKCS1v15_DECRYPT)。 |
CN_LIST_TOKENS |
listTokens |
列出目前分割區中的所有權杖。 |
CN_GET_TOKEN |
getToken |
取得權杖。 |
CN_CREATE_USER |
createUser |
建立使用者。 |
CN_DELETE_USER |
deleteUser |
刪除使用者。 |
CN_LIST_USERS |
listUsers |
列出使用者。 |
CN_CHANGE_PSWD |
changePswd |
變更密碼。 |
CN_MODIFY_OBJECT |
setAttribute |
設定物件的屬性。 |
CN_GET_ATTRIBUTE_VALUECN_GET_ALL_ATTRIBUTE_VALUECN_GET_ATTRIBUTE_SIZECN_GET_ALL_ATTRIBUTE_SIZE |
getAttribute |
取得物件的屬性。 |
CN_TOKEN_INFO |
getHSMInfo |
取得 HSM 資訊。 |
CN_PARTITION_INFO |
getPartitionInfo |
取得分割區資訊。 |
| --- | getClusterInfo |
未記錄。 |
| --- | server |
未記錄。 |
備份與還原
| 作業名稱 | 命令名稱 | 說明 |
|---|---|---|
/backup |
||
/restore |