啟用 Key Vault 記錄

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

會記錄什麼內容:

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

必要條件

若要完成本教學課程,必須具備下列項目:

  • 所使用的現有金鑰保存庫。
  • Azure Cloud Shell - Bash 環境。
  • 足夠的 Azure 儲存體以儲存金鑰保存庫記錄。

在本文中,命令會針對 Cloud Shell 格式化,並以 Bash 作為環境。

連線至您的 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>"

為您的記錄建立儲存體帳戶

雖然您可以使用現有儲存體帳戶來儲存記錄,但在此您將建立專用於 Key Vault 記錄的新儲存體帳戶。

為了進一步簡化管理,您也可以使用包含金鑰保存庫的同一個資源群組。 在 Azure CLI 快速入門Azure PowerShell 快速入門中,此資源群組命名為 myResourceGroup,且位置為 eastus。 請視情況將這些值替換成您自己的值。

您也必須提供儲存體帳戶名稱。 儲存體帳戶名稱必須是唯一的,長度介於 3 到 24 個字元,且只能使用數字和小寫字母。 最後,請建立 Standard_LRS SKU 的儲存體帳戶。

使用 Azure CLI 時,請使用 az storage account create 命令。

az storage account create --name "<your-unique-storage-account-name>" -g "myResourceGroup" --sku "Standard_LRS"

使用 Azure PowerShell 時,請使用 New-AzStorageAccount Cmdlet。 您將需要提供對應至資源群組的位置。

 New-AzStorageAccount -ResourceGroupName myResourceGroup -Name "<your-unique-storage-account-name>" -Type "Standard_LRS" -Location "eastus"

無論是何種情況,均請記下儲存體帳戶的識別碼。 Azure CLI 作業會在輸出中傳回識別碼。 若要使用 Azure PowerShell 取得識別碼,請使用 Get-AzStorageAccount,然後將輸出指派給變數 $sa。 接著,您可以使用 $sa.id 來查看儲存體帳戶。 (本文稍後也會使用 $sa.Context 屬性。)

$sa = Get-AzStorageAccount -Name "<your-unique-storage-account-name>" -ResourceGroup "myResourceGroup"
$sa.id

儲存體帳戶的識別碼採用下列格式:"/subscriptions/your-subscription-ID/resourceGroups/myResourceGroup/providers/Microsoft.Storage/storageAccounts/your-unique-storage-account-name"。

注意

如果您決定使用現有儲存體帳戶,該帳戶必須使用與金鑰保存庫相同的訂用帳戶。 必須使用 Azure Resource Manager 部署模型,而非傳統部署模型。

取得您的金鑰保存庫資源識別碼

CLI 快速入門PowerShell 快速入門中,您已建立具有唯一名稱的金鑰。 請在下列步驟中再次使用該名稱。 如果您不記得金鑰保存庫的名稱,可以使用 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 時,請使用 Gt-AzStorageBlobs 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