啟用 Key Vault 記錄

在建立一或多個金鑰保存庫之後,您可能會想要監視金鑰保存庫的存取方式、時間和存取者。 如需此功能的完整詳細資料,請參閱 Azure Key Vault 記錄

會記錄什麼內容:

  • 所有已驗證的 REST API 要求,包括因為存取權限、系統錯誤或要求錯誤而發生的失敗要求。
  • 對金鑰保存庫本身所執行的作業,包括建立、刪除、設定金鑰保存庫存取原則,以及更新金鑰保存庫屬性 (例如標記)。
  • 金鑰保存庫中的金鑰和祕密作業,包括:
    • 建立、修改或刪除這些金鑰或祕密。
    • 簽署、驗證、加密、解密、包裝和解除包裝金鑰、取得秘密,以及列出金鑰和祕密 (及其版本)。
  • 產生 401 回應的未經驗證要求。 範例是缺少持有人權杖、格式不正確或過期或權杖無效的要求。
  • 下列情況的 Azure 事件方格通知事件:已過期、即將到期和已變更的保存庫存取原則 (不會記錄新版本事件)。 即使在金鑰保存庫上建立了事件訂用帳戶,也會記錄事件。 如需詳細資訊,請參閱以 Azure Key Vault 作為事件方格來源

必要條件

若要完成此教學課程,您需要 Azure 金鑰保存庫。 您可以使用下列其中一種方法來建立新的金鑰保存庫:

您也需要記錄的目的地。 目的地可以是現有的或新的 Azure 儲存體帳戶和/或 Log Analytics 工作區。

您可以使用下列其中一種方法來建立新的 Azure 儲存體帳戶:

您可以使用下列其中一種方法來建立新的 Log Analytics 工作區:

連線至 Key Vault 訂用帳戶

如果您有多個與帳戶相關聯的訂用帳戶,設定金鑰記錄的第一個步驟,是連線至包含金鑰保存庫的訂用帳戶。

使用 Azure CLI 時,您可以使用 az account list 命令來檢視您所有的訂用帳戶。 然後,您可以使用 az account set 命令連線至其中一個訂用帳戶:

az account list

az account set --subscription "<subscriptionID>"

使用 Azure PowerShell 時,您可以先使用 Get-AzSubscription Cmdlet 列出訂用帳戶。 然後,您可以使用 Set-AzContext Cmdlet 連線至其中一個訂用帳戶:

Get-AzSubscription

Set-AzContext -SubscriptionId "<subscriptionID>"

取得資源識別碼

若要在金鑰保存庫上啟用記錄,您需要金鑰保存庫的資源識別碼,以及目的地 (Azure 儲存體或 Log Analytics 帳戶)。

如果您不記得金鑰保存庫的名稱,可以使用 Azure CLI az keyvault list 命令或 Azure PowerShell Get-AzKeyVault Cmdlet 來找到該名稱。

使用金鑰保存庫名稱來尋找其資源識別碼。 使用 Azure CLI 時,請使用 az keyvault show 命令。

az keyvault show --name "<your-unique-keyvault-name>"

使用 Azure PowerShell 時,請使用 Get-AzKeyVault Cmdlet。

Get-AzKeyVault -VaultName "<your-unique-keyvault-name>"

金鑰保存庫的資源識別碼採用下列格式:"/subscriptions/your-subscription-ID/resourceGroups/myResourceGroup/providers/Microsoft.KeyVault/vaults/your-unique-keyvault-name。 請將其記下以供後續步驟使用。

啟用 記錄

您可以使用 Azure CLI、Azure PowerShell 或 Azure 入口網站來啟用 Key Vault 的記錄。

Azure CLI

使用 Azure CLI az monitor diagnostic-settings create 命令、儲存體帳戶識別碼,和金鑰保存庫資源識別碼,如下所示:

az monitor diagnostic-settings create --storage-account "<storage-account-id>" --resource "<key-vault-resource-id>" --name "Key vault logs" --logs '[{"category": "AuditEvent","enabled": true}]' --metrics '[{"category": "AllMetrics","enabled": true}]'

您可以選擇性地設定記錄的保留原則,以便在經過指定的時間後自動刪除較舊的記錄。 例如,您可以將保留原則設定為自動刪除超過 90 天的記錄。

使用 Azure CLI 時,請使用 az monitor diagnostic-settings update 命令。

az monitor diagnostic-settings update --name "Key vault retention policy" --resource "<key-vault-resource-id>" --set retentionPolicy.days=90

存取記錄

Key Vault 記錄位於您所提供之儲存體帳戶的 insights-logs-auditevent 容器中。 若要查看記錄,您必須下載 Blob。

首先,列出容器中的所有 Blob。 使用 Azure CLI 時,請使用 az storage blob list 命令。

az storage blob list --account-name "<your-unique-storage-account-name>" --container-name "insights-logs-auditevent"

使用 Azure PowerShell 時,請使用 Get-AzStorageBlob。 若要列出此容器中的所有 Blob,請輸入:

Get-AzStorageBlob -Container "insights-logs-auditevent" -Context $sa.Context

在 Azure CLI 命令或 Azure PowerShell Cmdlet 的輸出中,您可以看到 Blob 的名稱格式如下:resourceId=<ARM resource ID>/y=<year>/m=<month>/d=<day of month>/h=<hour>/m=<minute>/filename.json。 日期和時間值會使用國際標準時間。

因為您可以使用相同的儲存體帳戶收集多個資源的記錄,所以 Blob 名稱中的完整資源識別碼適合用來只存取或下載所需 Blob。

但先請下載所有 Blob。 使用 Azure CLI 時,請使用 az storage blob download 命令傳遞 Blob 的名稱,以及要用來儲存結果之檔案的路徑。

az storage blob download --container-name "insights-logs-auditevent" --file <path-to-file> --name "<blob-name>" --account-name "<your-unique-storage-account-name>"

使用 Azure PowerShell 時,請使用 Get-AzStorageBlob Cmdlet 取得 Blob 的清單。 然後,將清單輸送至 Get-AzStorageBlobContent Cmdlet,以將記錄下載至您選擇的路徑。

$blobs = Get-AzStorageBlob -Container "insights-logs-auditevent" -Context $sa.Context | Get-AzStorageBlobContent -Destination "<path-to-file>"

在 PowerShell 中執行這第二個 Cmdlet 時,Blob 名稱中的 / 分隔符號會在目的地資料夾下建立完整資料夾結構。 您將使用此結構來下載 Blob 並儲存為檔案。

若要有所選擇地下載 blob,請使用萬用字元。 例如:

  • 如果您有多個金鑰保存庫,並且只想下載其中的 CONTOSOKEYVAULT3 金鑰保存庫的記錄:

    Get-AzStorageBlob -Container "insights-logs-auditevent" -Context $sa.Context -Blob '*/VAULTS/CONTOSOKEYVAULT3
    
  • 如果您有多個資源群組,並且只想下載其中某個資源群組的記錄,請使用 -Blob '*/RESOURCEGROUPS/<resource group name>/*'

    Get-AzStorageBlob -Container "insights-logs-auditevent" -Context $sa.Context -Blob '*/RESOURCEGROUPS/CONTOSORESOURCEGROUP3/*'
    
  • 如果您想下載 2019 年 1 月份當月的所有記錄,請使用 -Blob '*/year=2019/m=01/*'

    Get-AzStorageBlob -Container "insights-logs-auditevent" -Context $sa.Context -Blob '*/year=2016/m=01/*'
    

使用 Azure 監視器記錄

您可以使用 Azure 監視器記錄中的 Key Vault 解決方案來檢閱 Key Vault 的 AuditEvent 記錄。 在 Azure 監視器記錄中,您可以使用記錄查詢來分析資料,並取得所需的資訊。 如需詳細資訊,請參閱監視 Key Vault

下一步

  • 如需概念性資訊 (包括如何解譯 Key Vault 記錄),請參閱 Key Vault 記錄
  • 若要深入瞭解如何在金鑰保存庫上使用 Azure 監視器,請參閱監視 Key Vault