啟用 Key Vault 記錄

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

記錄的內容:

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

必要條件

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

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

在本文中,命令的格式是以 Bash 作為環境 Cloud Shell

連接到您的 Key Vault 訂用帳戶

設定金鑰記錄的第一個步驟是連接到包含金鑰保存庫的訂用帳戶。 如果您有多個與帳戶相關聯的訂用帳戶,這點特別重要。

使用 Azure CLI,您可以使用 az account list 命令來查看所有訂用帳戶。 然後使用 az account set 命令來連接到其中一個:

az account list

az account set --subscription "<subscriptionID>"

使用 Azure PowerShell,您可以先使用 >select-azsubscription 指令程式來列出您的訂用帳戶。 然後,您可以使用 set-azcoNtext 指令程式來連接到其中一個:

Get-AzSubscription

Set-AzContext -SubscriptionId "<subscriptionID>"

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

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

為了更容易管理,您也會使用與包含金鑰保存庫的資源群組相同的資源群組。 在 Azure CLI 快速入門Azure PowerShell 快速入門中,此資源群組會命名為 myResourceGroup,且位置為 eastus。 視情況將這些值取代為您自己的值。

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

使用 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 的識別碼,請使用 new-azstorageaccount,然後將輸出指派給變數 $sa 。 然後,您可以使用來查看儲存體帳戶 $sa.id 。 ($sa.Context 屬性也會在本文稍後使用。 )

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

儲存體帳戶的識別碼採用下列格式:「/subscriptions/您的訂用帳戶 -識別碼/resourceGroups/myResourceGroup/providers/Microsoft.Storage/storageAccounts/您的唯一-儲存體帳戶名稱」。

注意

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

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

CLI 快速入門PowerShell 快速入門中,您已建立具有唯一名稱的金鑰。 請在下列步驟中再次使用該名稱。 如果您不記得金鑰保存庫的名稱,可以使用 Azure CLI az keyvault list 命令或 Azure PowerShell >new-azkeyvault Cmdlet 來列出它們。

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

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

使用 Azure PowerShell 時,請使用 >new-azkeyvault Cmdlet。

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

金鑰保存庫的資源識別碼格式如下:「/subscriptions/您的訂用帳戶 -識別碼/resourceGroups/myResourceGroup/providers/Microsoft.KeyVault/vaults/您的唯一 KeyVault 名稱。 請記下它以進行下一個步驟。

啟用記錄

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

Azure CLI

使用 Azure CLI az monitor 診斷設定建立 命令、儲存體帳戶識別碼和金鑰保存庫資源識別碼,如下所示:

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 診斷-settings update 命令。

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

存取記錄

您的 Key Vault 記錄位於您提供之儲存體帳戶的 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 時,請使用 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 下載 命令,將 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 時,請使用 AzStorageBlobs 指令程式 取得 blob 的清單。 然後將清單輸送至 >get-azstorageblobcontent 指令程式,以將記錄下載至您選擇的路徑。

$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 監視器記錄中,您可以使用記錄查詢來分析資料,並取得所需的資訊。

如需詳細資訊 (包括如何進行此設定),請參閱 Azure 監視器中的 Azure Key Vault

後續步驟