針對適用於 MariaDB 的 Azure 資料庫使用虛擬網路服務端點和規則

重要

適用於 MariaDB 的 Azure 資料庫 位於淘汰路徑上。 強烈建議您移轉至 適用於 MySQL 的 Azure 資料庫。 如需移轉至 適用於 MySQL 的 Azure 資料庫 的詳細資訊,請參閱 適用於 MariaDB 的 Azure 資料庫 發生什麼事?

虛擬網路規則是一項防火牆安全性功能,可控制您的 適用於 MariaDB 的 Azure 資料庫 伺服器是否接受從虛擬網路中特定子網傳送的通訊。 本文說明為什麼虛擬網路規則功能有時是您安全允許與 適用於 MariaDB 的 Azure 資料庫 伺服器通訊的最佳選項。

若要建立虛擬網路規則,必須先 有虛擬網路 (VNet) 和 虛擬網路服務端點 ,規則才能參考。 下圖說明 虛擬網絡 服務端點如何與 適用於 MariaDB 的 Azure 資料庫 搭配運作:

Example of how a VNet Service Endpoint works

注意

此功能可在部署 適用於 MariaDB 的 Azure 資料庫 供一般用途和記憶體優化伺服器的所有 Azure 區域中使用。

您也可以考慮使用 Private Link 進行連線。 Private Link 會在 VNet 中為 適用於 MariaDB 的 Azure 資料庫 伺服器提供私人 IP 位址。

術語和描述

虛擬網路: 您可以有與 Azure 訂用帳戶相關聯的虛擬網路。

子網路:虛擬網路包含子網路。 您有的任何 Azure 虛擬機器 (VM) 會指派給子網路。 一個子網路可以包含多個 VM 或其他計算節點。 除非您將安全性設定為允許存取,否則虛擬網路外部的計算節點無法存取您的虛擬網路。

虛擬網絡 服務端點:虛擬網絡 服務端點是一個子網,其屬性值包含一或多個正式的 Azure 服務類型名稱。 在本文中,我們對 Microsoft.Sql 的類型名稱感興趣,其指的是名為 SQL 資料庫 的 Azure 服務。 此服務標籤也適用於 適用於 MariaDB 的 Azure 資料庫、MySQL 和 PostgreSQL 服務。 請務必注意將 Microsoft.Sql 服務標籤套用至 VNet 服務端點時,它會為所有 Azure SQL 資料庫、適用於 MariaDB 的 Azure 資料庫、適用於 MySQL 的 Azure 資料庫 和 適用於 PostgreSQL 的 Azure 資料庫 設定服務端點流量子網上的伺服器。

虛擬網路規則:適用於 MariaDB 的 Azure 資料庫 伺服器的虛擬網路規則是 適用於 MariaDB 的 Azure 資料庫 伺服器的訪問控制清單 (ACL) 中列出的子網。 若要位於 適用於 MariaDB 的 Azure 資料庫 伺服器的 ACL 中,子網必須包含 Microsoft.Sql 類型名稱。

虛擬網路規則會告訴您 適用於 MariaDB 的 Azure 資料庫 伺服器接受來自子網上每個節點的通訊。

虛擬網路規則的優點

在您採取動作之前,子網上的 VM 無法與 適用於 MariaDB 的 Azure 資料庫 伺服器通訊。 建立通訊的其中一個動作是建立虛擬網路規則。 選擇 VNet 規則方法的理由需要與防火牆所提供的競爭安全性選項相關的比較與對比討論。

A. 允許存取 Azure 服務

連線 ion 安全性窗格具有標示[允許存取 Azure 服務] 的 ON/OFF 按鈕。 ON 設定允許來自所有 Azure IP 位址和所有 Azure 子網的通訊。 這些 Azure IP 或子網可能不是您所擁有的。 此 ON 設定可能比您想要 適用於 MariaDB 的 Azure 資料庫 資料庫更開放。 虛擬網路規則功能提供更精細的控制。

B. IP 規則

適用於 MariaDB 的 Azure 資料庫 防火牆可讓您指定從中接受通訊到 適用於 MariaDB 的 Azure 資料庫 伺服器的IP位址範圍。 此方法對 Azure 私人網路外部的穩定 IP 位址很適合。 但 Azure 專用網內的許多節點都設定為 動態 IP 位址。 動態IP位址可能會變更,例如 VM 重新啟動時。 在生產環境中,請勿在防火牆規則中指定動態 IP 位址。

您可以藉由取得 VM 的 靜態 IP 位址來挽救 IP 選項。 如需詳細資訊,請參閱使用 Azure 入口網站 設定虛擬機的私人IP位址。

不過,靜態IP方法可能會變得難以管理,而且在大規模完成時成本很高。 虛擬網路規則更容易建立和管理。

虛擬網路規則的詳細數據

本節說明虛擬網路規則的數個詳細數據。

只有一個地理區域

每個 虛擬網絡 服務端點僅適用於一個 Azure 區域。 端點無法讓其他區域接受來自子網路的通訊。

任何虛擬網路規則都受限於其基礎端點適用的區域。

伺服器層級,而非資料庫層級

每個虛擬網路規則都會套用至整個 適用於 MariaDB 的 Azure 資料庫 伺服器,而不只是套用至伺服器上的一個特定資料庫。 換句話說,虛擬網路規則會在伺服器層級套用,而不是在資料庫層級套用。

安全性管理角色

虛擬網絡 服務端點的管理中,有安全性角色的區隔。 下列每個角色都需要採取動作:

  • 網路 管理員:開啟端點。
  • 資料庫 管理員:更新存取控制清單 (ACL),將指定的子網新增至 適用於 MariaDB 的 Azure 資料庫 伺服器。

Azure RBAC 替代方案:

網路 管理員 和資料庫 管理員 的角色具有比管理虛擬網路規則所需的更多功能。 只需要其功能的子集。

您可以選擇在 Azure 中使用 Azure 角色型存取控制 (Azure RBAC) 來建立只有必要功能子集的單一自定義角色。 您可以使用自定義角色,而不是牽涉到網路 管理員 或資料庫 管理員。如果您將使用者新增至自定義角色,而不是將使用者新增至其他兩個主要系統管理員角色,則安全性暴露的介面區較低。

注意

在某些情況下,適用於 MariaDB 的 Azure 資料庫 和 VNet 子網位於不同的訂用帳戶中。 在這些情況下,您必須確定下列設定:

  • 這兩個訂用帳戶都必須位於相同的 Microsoft Entra 租使用者中。
  • 使用者具有起始作業所需的許可權,例如啟用服務端點,並將 VNet 子網新增至指定的伺服器。
  • 請確定訂用帳戶都 已註冊 Microsoft.SqlMicrosoft.DBforMariaDB 資源提供者。 如需詳細資訊,請參閱 resource-manager-registration

限制

針對 適用於 MariaDB 的 Azure 資料庫,虛擬網路規則功能具有下列限制:

  • Web 應用程式可以對應至 VNet/子網中的私人 IP。 即使從指定的 VNet/子網開啟服務端點,從 Web 應用程式到伺服器的連線也會有 Azure 公用 IP 來源,而不是 VNet/子網來源。 若要啟用從 Web 應用程式到具有 VNet 防火牆規則的伺服器連線,您必須允許 Azure 服務存取伺服器上的伺服器。

  • 在 適用於 MariaDB 的 Azure 資料庫 的防火牆中,每個虛擬網路規則都會參考子網。 所有這些參考的子網都必須裝載在裝載 適用於 MariaDB 的 Azure 資料庫 的相同地理區域中。

  • 每個 適用於 MariaDB 的 Azure 資料庫 伺服器最多可以有128個ACL專案供任何指定的虛擬網路使用。

  • 虛擬網路規則僅適用於 Azure Resource Manager 虛擬網路;而不是傳統 部署模型 網路。

  • 使用 Microsoft.Sql 服務卷標開啟虛擬網路服務端點以 適用於 MariaDB 的 Azure 資料庫,也會啟用所有 Azure 資料庫服務的端點:適用於 MariaDB 的 Azure 資料庫、適用於 MySQL 的 Azure 資料庫、適用於 PostgreSQL 的 Azure 資料庫、Azure SQL 資料庫 和 Azure Synapse Analytics。

  • VNet 服務端點的支援僅適用於一般用途和記憶體優化伺服器。

  • 如果 子網中已啟用 Microsoft.Sql ,表示您只想使用 VNet 規則進行連線。 該子網中資源的非 VNet 防火牆規則 將無法運作。

  • 在防火牆上,IP 位址範圍會套用至下列網路專案,但虛擬網路規則不會:

ExpressRoute

如果您的網路是透過 ExpressRoute 連線到 Azure 網路,則每個線路都會在 Microsoft Edge 上設定兩個公用 IP 位址。 這兩個IP位址是用來使用 Azure 公用對等互連連線到 Microsoft 服務,例如 Azure 儲存體。

若要允許從線路通訊至 適用於 MariaDB 的 Azure 資料庫,您必須為線路的公用IP位址建立IP網路規則。 若要尋找 ExpressRoute 線路的公用 IP 位址,請使用 Azure 入口網站,以 ExpressRoute 開啟支援票證。

將 VNET 防火牆規則新增至您的伺服器,而不需開啟 VNET 服務端點

僅設定 VNet 防火牆規則並不會協助將伺服器保護至 VNet。 您也必須開啟 VNet 服務端點,安全性才會生效。 當您開啟服務端點時,VNet 子網會經歷停機,直到完成從關閉開啟的轉換為止。 特別是大型的 VNet,這會更明顯。 您可以使用 IgnoreMissingServiceEndpoint 旗 標來減少或消除轉換期間的停機時間。

您可以使用 Azure CLI 或入口網站來設定 IgnoreMissingServiceEndpoint 旗 標。

下一步

如需建立 VNet 規則的文章,請參閱: