將稽核寫入 VNet 和防火牆後方的儲存體帳戶

適用於:Azure SQL 資料庫Azure Synapse Analytics

Azure SQL 資料庫Azure Synapse Analytics 的稽核支援將資料庫事件寫入虛擬網路和防火牆後方的 Azure 儲存體帳戶

本文說明兩種方法,可設定適用於此選項的 Azure SQL 資料庫和 Azure 儲存體帳戶。 第一個方法是使用 Azure 入口網站,第二個方法則使用 REST。

背景

Azure 虛擬網路 (VNet) 是私人網路在 Azure 中的基本建置組塊。 VNet 可讓多種類型的 Azure 資源 (例如 Azure 虛擬機器 (VM)) 安全地彼此通訊,以及與網際網路和內部部署網路通訊。 VNet 與您自有資料中心內的傳統網路類似,但會有更多 Azure 基礎結構的好處,例如調整規模、可用性和隔離。

若要深入了解 VNet 概念、最佳做法等等,請參閱什麼是 Azure 虛擬網路

若要深入了解如何建立虛擬網路,請參閱快速入門:使用 Azure 入口網站建立虛擬網路

必要條件

若要讓稽核寫入 VNet 或防火牆後方的儲存體帳戶,需要下列必要條件:

  • 一般用途 v2 儲存體帳戶。 如果您有一般用途 v1 或 Blob 儲存體帳戶,請升級至一般用途 v2 儲存體帳戶。 如需詳細資訊,請參閱儲存體帳戶類型
  • 支援具有 BlockBlobStorage 的進階儲存體
  • 儲存體帳戶必須與邏輯 SQL 伺服器位於相同的租用戶與位置 (可以屬於不同的訂閱)。
  • Azure 儲存體帳戶需要 Allow trusted Microsoft services to access this storage account。 在儲存體帳戶上設定此項目:防火牆和虛擬網路
  • 您必須具有所選儲存體帳戶的 Microsoft.Authorization/roleAssignments/write 權限。 如需詳細資訊,請參閱 Azure 內建角色

注意

伺服器/資料庫上已啟用稽核儲存體帳戶,且目標儲存體帳戶移至防火牆後時,我們會失去儲存體帳戶的寫入權限,且稽核記錄會停止寫入儲存體帳戶。為了進行稽核工作,我們必須從入口網站重新儲存稽核設定。

在 Azure 入口網站中設定

使用您的訂用帳戶連線至 Azure 入口網站。 瀏覽至資源群組和伺服器。

  1. 按一下 [安全性] 標題下的 [稽核]。 選取 [開啟]。

  2. 選取 [儲存體] 。 選取要在其中儲存記錄的儲存體帳戶。 儲存體帳戶必須符合 [必要條件] 中列出的需求。

  3. 開啟 [儲存體詳細資料]

注意

如果選取的儲存體帳戶位於 VNet 後方,您會看到下列訊息:

You have selected a storage account that is behind a firewall or in a virtual network. Using this storage requires to enable 'Allow trusted Microsoft services to access this storage account' on the storage account and creates a server managed identity with 'storage blob data contributor' RBAC.

如果您看不到此訊息,則儲存體帳戶不在 VNet 後方。

  1. 選取保留週期的天數。 然後按一下 [確定]。 早於保留期限的記錄會予以刪除。

  2. 在您的稽核設定上選取 [儲存]。

您已成功設定稽核,以寫入 VNet 或防火牆後方的儲存體帳戶。

使用 REST 命令進行設定

除了使用 Azure 入口網站以外,您還可以使用 REST 命令來設定稽核,以在 VNet 和防火牆後方的儲存體帳戶上寫入資料庫事件。

本節中的範例指令碼會要求您在執行指令碼之前先加以更新。 取代指令碼中的下列值:

範例值 範例描述
<subscriptionId> Azure 訂用帳戶 ID
<resource group> 資源群組
<logical SQL Server> 伺服器名稱
<administrator login> 管理員帳戶
<complex password> 管理員帳戶的複雜密碼

若要設定 SQL Audit 以將事件寫入 VNet 或防火牆後方的儲存體帳戶:

  1. 使用 Microsoft Entra ID (先前稱為 Azure Active Directory) 註冊您的伺服器。 請使用 PowerShell 或 REST API。

    PowerShell

    Connect-AzAccount
    Select-AzSubscription -SubscriptionId <subscriptionId>
    Set-AzSqlServer -ResourceGroupName <your resource group> -ServerName <azure server name> -AssignIdentity
    

    REST API

    範例要求

    PUT https://management.azure.com/subscriptions/<subscription ID>/resourceGroups/<resource group>/providers/Microsoft.Sql/servers/<azure server name>?api-version=2015-05-01-preview
    

    要求本文

    {
    "identity": {
               "type": "SystemAssigned",
               },
    "properties": {
      "fullyQualifiedDomainName": "<azure server name>.database.windows.net",
      "administratorLogin": "<administrator login>",
      "administratorLoginPassword": "<complex password>",
      "version": "12.0",
      "state": "Ready"
      }
    }
    
  2. 將 [儲存體 Blob 資料參與者] 角色指派給託管資料庫的伺服器,也就是上一個步驟中向 Microsoft Entra ID 註冊的伺服器。

    如需詳細步驟,請參閱使用 Azure 入口網站指派 Azure 角色

    注意

    僅有具備「擁有者」權限的成員才能執行此步驟。 如需了解各種 Azure 內建角色,請參閱 Azure 內建角色

  3. 設定伺服器的 Blob 稽核原則,而不指定 storageAccountAccessKey:

    範例要求

      PUT https://management.azure.com/subscriptions/<subscription ID>/resourceGroups/<resource group>/providers/Microsoft.Sql/servers/<azure server name>/auditingSettings/default?api-version=2017-03-01-preview
    

    要求本文

    {
      "properties": {
       "state": "Enabled",
       "storageEndpoint": "https://<storage account>.blob.core.windows.net"
      }
    }
    

使用 Azure PowerShell

使用 Azure Resource Manager 範本

您可以使用 Azure Resource Manager 範本,設定稽核功能將資料庫事件寫入虛擬網路和防火牆後方的儲存體帳戶,如下列範例所示:

重要

若要使用虛擬網路和防火牆後方的儲存體帳戶,您必須將 isStorageBehindVnet 參數設為 true

注意

連結的範例位於外部公用存放庫,以「原樣」提供且沒有擔保,也不受任何 Microsoft 支援方案/服務的支援。

後續步驟