Azure Key Vault 與 Azure 事件方格的整合可在密鑰保存庫中儲存的秘密狀態變更時,啟用使用者通知。 如需此功能的概觀,請參閱使用事件方格監視 Key Vault。
本指南說明如何透過事件方格接收 Key Vault 通知,以及如何透過 Azure 自動化響應狀態變更。
先決條件
- Azure 訂用帳戶。 如尚未擁有 Azure 訂用帳戶,請在開始之前先建立免費帳戶。
- Azure 訂用帳戶中的密鑰保存庫。 您可以遵循 使用 Azure CLI 從 Azure Key Vault 設定和擷取秘密中的步驟,快速建立新的密鑰保存庫。
概念
事件方格是雲端的事件服務。 遵循本指南中的步驟,您將訂閱 Key Vault 的事件,並將事件路由至自動化系統。 當密鑰保存庫中的其中一個秘密即將到期(定義為到期日之前的 30 天)時,事件方格會收到狀態變更的通知,並將 HTTP POST 傳送至端點。 接著,Web 勾子會觸發 PowerShell 腳本的自動化執行。
建立自動化帳戶
透過 Azure 入口網站建立自動化帳戶:
移至 portal.azure.com 並登入您的訂用帳戶。
在搜尋方塊中,輸入 自動化帳戶。
在搜尋列上下拉式清單的 [ 服務 ] 區段下,選取 [ 自動化帳戶]。
選取 ,然後新增。
在 [ 新增自動化帳戶 ] 窗格中輸入必要資訊,然後選取 [ 建立]。
建立 Runbook
自動化帳戶準備就緒之後,請建立運行手冊。
選取您建立的自動化帳戶。
在 [程序自動化] 下方,選取 [Runbook]。
選取 [建立 Runbook]。
命名您的 Runbook 並選取 PowerShell 作為 Runbook 的類型。
選取您建立的運行手冊,然後選取 [編輯] 按鈕。
輸入下列程式代碼(用於測試目的),然後選取 [ 發佈] 按鈕。 這個動作會傳回所接收 POST 要求的結果。
param
(
[Parameter (Mandatory = $false)]
[object] $WebhookData
)
#If runbook was called from Webhook, WebhookData will not be null.
if ($WebhookData) {
#rotate secret:
#generate new secret version in key vault
#update db/service with generated secret
#Write-Output "WebhookData <$WebhookData>"
Write-Output $WebhookData.RequestBody
}
else
{
# Error
write-Error "No input data found."
}
建立 Webhook
建立 Webhook,以觸發新建立的 Runbook。
從您發佈 Runbook 的 [資源] 區段中選取 [Webhook]。
選取 [新增 Webhook]。
選擇 建立新的 Webhook。
命名 Webhook、設定到期日,然後複製 URL。
這很重要
建立 URL 之後,您無法檢視該 URL。 請務必將複本儲存在安全的位置,您可以在本指南的其餘部分存取該複本。
選取 [參數] 並執行設定 ,然後選取 [ 確定]。 請勿輸入任何參數。 [ 建立] 按鈕將會啟用。
選取 [確定 ],然後選取 [ 建立]。
建立事件方格訂閱
透過 Azure 入口網站建立事件方格訂用帳戶。
移至您的金鑰保存庫,然後選取 [ 事件] 索引標籤。
選取 [ 事件訂閱] 按鈕。
建立訂用帳戶的描述性名稱。
選擇 [事件方格架構]。
主題資源 應該是您想要監視狀態變更的金鑰保存庫。
針對 [篩選至事件類型],讓所有選項保持選取 (已選取 9 項)。
針對 [端點類型],選取 [Webhook]。
選擇 [選取端點]。 在新的內容窗格中,將 [ 建立 Webhook 步驟] 中的 Webhook URL 貼到 [ 訂閱者端點 ] 字段。
在內容窗格中選取 [確認選取項目]。
選取 ,創建。
測試和驗證
確認您的事件方格訂用帳戶已正確設定。 此測試假設您已在建立 Event Grid 訂閱中訂閱「秘密新版本已建立」通知,並且您具有在密鑰保存庫中建立秘密新版本的必要許可權。
移至 Azure 入口網站上您的金鑰保存庫。
建立新的秘密。 為了進行測試,請將到期日設定為第二天。
在密鑰保存庫中的 [ 事件] 索引標籤上,選取您建立的事件方格訂用帳戶。
在 [計量] 下,檢查是否已擷取事件。 預期有兩個事件:SecretNewVersion 和 SecretNearExpiry。 這些事件會驗證事件方格已成功擷取密鑰保存庫中秘密的狀態變更。
移至自動化帳戶。
選取 [Runbook] 索引標籤,然後選取您建立的 Runbook。
選取 [Webhook] 索引標籤,並確認當您建立新秘密時,「上次觸發」時間戳是在 60 秒內。 這個結果可確認事件方格已使用金鑰保存庫中狀態變更的事件詳細資料對 Webhook 進行 POST,然後觸發 Webhook。
返回您的 Runbook,然後選取 [概觀] 索引標籤。
查看 [最近的作業 ] 清單。 您應會看到已建立一項作業,且狀態為 [完成]。 這會確認 Webhook 觸發了 Runbook 來開始執行其指令碼。
選取最近的作業,並查看從事件方格傳送至 Webhook 的 POST 要求。 檢查 JSON,並確定您金鑰保存庫和事件類型的參數均正確無誤。 如果 JSON 物件中的 「event type」 參數符合金鑰保存庫中發生的事件(在此範例中,Microsoft.KeyVault.SecretNearExpiry),則測試成功。
故障排除
您無法建立事件訂用帳戶
在您的 Azure 訂用帳戶資源提供者中重新註冊事件方格和金鑰保存庫提供者。 請參閱 Azure 資源提供者和類型。
後續步驟
祝賀! 如果您已正確遵循上述所有步驟,您現在已準備好以程式設計方式回應密鑰保存庫中所儲存秘密的狀態變更。
如果您已使用輪詢型系統來搜尋金鑰保存庫中祕密的狀態變更,現在可以開始使用此通知功能。 您也可以將執行手冊中的測試腳本替換為程式碼,當機密資訊即將過期時以程式方式更新。
瞭解更多資訊: