教學課程:使用 Azure 防火牆檢查私人端點流量
Azure 私人端點是 Azure Private Link 的基本建置組塊。 私人端點可讓部署在虛擬網路中的 Azure 資源與私人連結資源私下通訊。
私人端點可讓資源存取部署在虛擬網路中的私人連結服務。 透過虛擬網路對等互連與內部部署網路連線來存取私人端點,可擴充連線能力。
您可能需要檢查或封鎖透過私人端點來公開服務的用戶端流量。 使用 Azure 防火牆或協力廠商網路虛擬設備來完成此檢查。
如需涉及私人端點和 Azure 防火牆的詳細資訊和案例,請參閱用來檢查目的地為私人端點之流量的 Azure 防火牆案例。
在本教學課程中,您會了解如何:
- 為測試虛擬機器建立虛擬網路和堡壘主機。
- 建立私人端點虛擬網路。
- 建立測試虛擬機器。
- 部署 Azure 防火牆。
- 建立 Azure SQL 資料庫。
- 建立 Azure SQL 的私人端點。
- 建立私人端點的虛擬網路與測試虛擬機器的虛擬網路之間的網路對等互連。
- 將虛擬網路連結至私人 DNS 區域。
- 在 Azure 防火牆中設定適用於 Azure SQL 的應用程式規則。
- 透過 Azure 防火牆,在測試虛擬機器與 Azure SQL 之間路由傳送流量。
- 測試 Azure SQL 的連線,並在 Azure 防火牆記錄中進行驗證。
如果您沒有 Azure 訂用帳戶,請在開始前建立免費帳戶。
必要條件
具有有效訂用帳戶的 Azure 帳戶。
Log Analytics 工作區。 如需如何建立 Log Analytics 工作區的詳細資訊,請參閱在 Azure 入口網站中建立 Log Analytics 工作區 (機器翻譯)。
登入 Azure 入口網站
登入 Azure 入口網站。
建立虛擬網路和 Azure Bastion 主機
下列程序會建立具有資源子網路、Azure Bastion 子網路和 Bastion 主機的虛擬網路:
在入口網站中,搜尋並選取 [虛擬網路]。
在 [虛擬網路] 頁面上,選取 [+ 建立]。
在 [建立虛擬網路] 的 [基本] 索引標籤上,輸入或選取下列資訊:
設定 值 專案詳細資料 訂用帳戶 選取您的訂用帳戶。 資源群組 選取 [新建]
輸入 test-rg 作為名稱。
選取 [確定]。[執行個體詳細資料] 名稱 輸入 vnet-1。 區域 選取 [美國東部 2]。 選取 [下一步],繼續前往 [安全性] 索引標籤。
在 [Azure Bastion] 區段中,選取 [啟用 Azure Bastion]。
Bastion 會使用您的瀏覽器,透過安全殼層 (SSH) 或遠端桌面通訊協定 (RDP) 連線至虛擬網路中的 VM (使用其私人 IP 位址)。 VM 不需要公用 IP 位址、用戶端軟體或特殊設定。 如需詳細資訊,請參閱什麼是 Azure Bastion?。
在 Azure Bastion 中,輸入或選取下列資訊:
設定 值 Azure Bastion 主機名稱 輸入 bastion。 Azure Bastion 公用 IP 位址 選取 [建立公用 IP 位址]。
在 [名稱] 中輸入 public-ip-bastion。
選取 [確定]。選取 [下一步],繼續前往 [IP 位址] 索引標籤。
在 [子網路] 的 [位址空間] 方塊中,選取 [預設] 子網路。
在 [編輯子網路] 中,輸入或選取下列資訊:
設定 值 子網路用途 保留 Default 的預設值。 名稱 輸入 subnet-1。 IPv4 IPv4 位址範圍 保留 10.0.0.0/16 的預設值。 起始位址 保留預設值 [10.0.0.0]。 大小 保留 /24 (256 個位址) 的預設值。 選取 [儲存]。
選取視窗底部的 [檢閱 + 建立]。 通過驗證後,選取 [建立]。
建立私人端點的虛擬網路
下列程序會建立具有子網路的虛擬網路。
在入口網站中,搜尋並選取 [虛擬網路]。
在 [虛擬網路] 頁面上,選取 [+ 建立]。
在 [建立虛擬網路] 的 [基本] 索引標籤中,輸入或選取下列資訊:
設定 值 專案詳細資料 訂用帳戶 選取您的訂用帳戶。 資源群組 選取 [test-rg] [執行個體詳細資料] 名稱 輸入 vnet-private-endpoint。 區域 選取 [美國東部 2]。 選取 [下一步],繼續前往 [安全性] 索引標籤。
選取 [下一步],繼續前往 [IP 位址] 索引標籤。
選取具有垃圾桶圖示的 [刪除位址空間],以移除預設的位址空間。
選取 [新增 IPv4 位址空間]。
輸入 10.1.0.0,並讓下拉式方塊保留預設值 [/16 (65,536 個位址)]。
選取 [+ 新增子網路]。
在 [新增子網路] 中,輸入或選取下列資訊:
設定 值 子網路詳細資料 子網路範本 保留預設值 [Default]。 名稱 輸入 subnet-private。 起始位址 保留預設值 [10.1.0.0]。 子網路大小 保留預設值 /24(256 個位址)。 選取 [新增]。
選取畫面底部的 [檢閱 + 建立],然後在驗證通過時,選取 [建立]。
建立測試虛擬機器
下列程序會在虛擬網路中建立名為 vm-1 的測試虛擬機器 (VM)。
在入口網站中,搜尋並選取 [虛擬機器]。
在 [虛擬機器] 中,選取 [+ 建立],然後選取 [Azure 虛擬機器]。
在 [建立虛擬機器] 的 [基本] 索引標籤上,輸入或選取下列資訊:
設定 值 專案詳細資料 訂用帳戶 選取您的訂用帳戶。 資源群組 選取 [test-rg]。 [執行個體詳細資料] 虛擬機器名稱 輸入 vm-1。 區域 選取 [美國東部 2]。 可用性選項 選取 [不需要基礎結構備援]。 安全性類型 保留預設值 [標準]。 映像 選取 [Ubuntu Server 22.04 LTS - x64 Gen2]。 VM 架構 保留預設值 [x64]。 大小 選取大小。 系統管理員帳戶 驗證類型 選取 [密碼]。 使用者名稱 輸入 azureuser。 密碼 輸入密碼。 確認密碼 請重新輸入密碼。 輸入連接埠規則 公用輸入連接埠 選取 [無]。 選取頁面頂端的 [網路] 索引標籤。
在 [網路] 索引標籤中,輸入或選取以下資訊:
設定 值 網路介面 虛擬網路 選取 [vnet-1]。 子網路 選取 [subnet-1 (10.0.0.0/24)]。 公用 IP 選取 [無]。 NIC 網路安全性群組 選取進階。 設定網路安全性群組 選取 [新建]
輸入 nsg-1 作為名稱。
將其餘項目保留為預設值,然後選取 [確定]。將其餘設定保留為預設值,然後選取 [檢閱 + 建立]。
檢閱設定並選取 [建立]。
注意
虛擬網路中的虛擬機器 (具有 Bastion 主機) 不需要公用 IP 位址。 Bastion 會提供公用 IP,而 VM 會使用私人 IP 在網路內通訊。 您可以從裝載了 Bastion 的虛擬網路中,移除任何 VM 的公用 IP。 如需詳細資訊,請參閱中斷公用 IP 位址與 Azure VM 的關聯。
注意
無論是未獲指派公用 IP 位址的 VM,或位於內部基本 Azure 負載平衡器後端集區的 VM,Azure 都會為其提供預設輸出存取 IP。 預設輸出存取 IP 機制能提供無法自行設定的輸出 IP 位址。
發生下列其中一個事件時,會停用預設輸出存取 IP:
- 公用 IP 位址會指派給 VM。
- 無論有沒有輸出規則,都會將 VM 放在標準負載平衡器的後端集區中。
- Azure NAT 閘道資源會指派給 VM 的子網路。
您在彈性協調流程模式中使用虛擬機器擴展集建立的 VM 沒有預設輸出存取。
如需 Azure 中輸出連線的詳細資訊,請參閱 Azure 中的預設輸出存取與對輸出連線使用來源網路位址轉譯 (SNAT)。
部署 Azure 防火牆
在入口網站頂端的搜尋方塊中,輸入防火牆。 在搜尋結果中,選取 [防火牆]。
在 [防火牆] 中,選取 [+ 建立]。
在 [建立防火牆] 的 [基本] 索引標籤中,輸入或選取下列資訊:
設定 值 專案詳細資料 訂用帳戶 選取您的訂用帳戶。 資源群組 選取 [test-rg]。 [執行個體詳細資料] 名稱 輸入防火牆。 區域 選取 [美國東部 2]。 可用性區域 選取 [無]。 防火牆 SKU 選取 [標準]。 防火牆管理 選取 [使用防火牆原則管理此防火牆]。 防火牆原則 選取新增。
在 [原則名稱] 中輸入 firewall-policy。
在區域中選取 [美國東部 2]。
選取 [確定]。選擇虛擬網路 選取 [新建] 虛擬網路名稱 輸入 vnet-firewall。 位址空間 輸入 10.2.0.0/16。 子網路位址空間 輸入 10.2.1.0/26。 公用 IP 位址 選取新增。
在 [名稱] 中輸入 public-ip-firewall。
選取 [確定]。選取 [檢閱 + 建立]。
選取 建立。
等候防火牆部署完成,然後再繼續進行。
啟用防火牆記錄檔
在本節中,您會啟用防火牆記錄,並將其傳送至記錄分析工作區。
注意
您必須先在訂用帳戶中擁有記錄分析工作區,才能啟用防火牆記錄。 如需詳細資訊,請參閱必要條件。
在入口網站頂端的搜尋方塊中,輸入防火牆。 在搜尋結果中,選取 [防火牆]。
選取 [防火牆]。
在 [監視] 中,選取 [診斷設定]。
選取 +新增診斷設定。
在 [診斷設定] 中,輸入或選取下列資訊:
設定 值 診斷設定名稱 輸入 diagnostic-setting-firewall。 記錄 類別 選取 [Azure 防火牆應用程式規則 (舊版 Azure 診斷)] 和 [Azure 防火牆網路規則 (舊版 Azure 診斷)]。 目的地詳細資料 Destination 選取 [傳送至 Log Analytics 工作區]。 訂用帳戶 選取您的訂用帳戶。 Log Analytics 工作區 選取您的記錄分析工作區。 選取 [儲存]。
建立 Azure SQL 資料庫
在入口網站頂端的搜尋方塊中,輸入 SQL。 在搜尋結果中,選取 [SQL 資料庫]。
在 [SQL 資料庫] 中,選取 [+ 建立]。
在 [建立 SQL Database] 的 [基本] 索引標籤中,輸入或選取下列資訊:
設定 值 專案詳細資料 訂用帳戶 選取您的訂用帳戶。 資源群組 選取 [test-rg]。 [資料庫詳細資料] 資料庫名稱 輸入 sql-db。 伺服器 選取 [新建]
在 [伺服器名稱] 中,輸入 server-name (伺服器名稱必須是唯一的,請將 server-name 取代為唯一值)。
在 [位置] 中,選取 [(美國) 美國東部 2]。
選取 [使用 SQL 驗證]。
輸入伺服器管理員登入和密碼。
選取 [確定]。想使用 SQL 彈性集區嗎? 選取 否。 工作負載環境 保留預設值 [Production]。 [備份儲存體備援] [備份儲存體備援] 選取 [本地備援備份儲存體]。 選取 [下一步:網路]。
在 [建立 SQL Database] 的 [網路] 索引標籤中,輸入或選取下列資訊:
設定 值 網路連線 連線方法 選取 [私人端點]。 私人端點 選取 [+ 新增私人端點]。 建立私人端點 訂用帳戶 選取您的訂用帳戶。 資源群組 選取 [test-rg]。 Location 選取 [美國東部 2]。 名稱 輸入 private-endpoint-sql。 目標子資源 選取 SqlServer。 網路功能 虛擬網路 選取 [vnet-private-endpoint]。 子網路 選取 [subnet-private-endpoint]。 私人 DNS 整合 與私人 DNS 區域整合 選取 [是]。 私人 DNS 區域 保留預設值 [privatelink.database.windows.net]。 選取 [確定]。
選取 [檢閱 + 建立]。
選取 建立。
使用虛擬網路對等互連連線到虛擬網路
在本節中,您會將虛擬網路與虛擬網路對等互連連線。 vnet-1 網路和 vnet-private-endpoint 網路會連線到 vnet-firewall。 vnet-1 與 vnet-private-endpoint 之間沒有直接連線。
在入口網站頂端的搜尋方塊中,輸入「虛擬網路」。 選取搜尋結果中的 [虛擬網路]。
選取 [vnet-firewall]。
在 [設定] 中,選取 [對等互連]。
在 [對等互連] 中,選取 [+ 新增]。
在 [新增對等互連] 中,輸入或選取下列資訊:
設定 值 此虛擬網路 對等互連連結名稱 輸入 vnet-firewall-to-vnet-1。 連到遠端虛擬網路的流量 選取 [允許 (預設)]。 從遠端虛擬網路轉送的流量 選取 [允許 (預設)]。 虛擬網路閘道或路由伺服器 選取 [無 (預設)]。 遠端虛擬網路 對等互連連結名稱 輸入 vnet-1-to-vnet-firewall。 虛擬網路部署模型 選擇資源管理員。 訂用帳戶 選取您的訂用帳戶。 虛擬網路 選取 [vnet-1]。 連到遠端虛擬網路的流量 選取 [允許 (預設)]。 從遠端虛擬網路轉送的流量 選取 [允許 (預設)]。 虛擬網路閘道或路由伺服器 選取 [無 (預設)]。 選取 [新增]。
在 [對等互連] 中,選取 [+ 新增]。
在 [新增對等互連] 中,輸入或選取下列資訊:
設定 值 此虛擬網路 對等互連連結名稱 輸入 vnet-firewall-to-vnet-private-endpoint。 允許 'vnet-1' 存取 'vnet-private-endpoint' 保留已選取的預設值。 允許 'vnet-1' 接收來自 'vnet-private-endpoint' 的轉送流量 選取核取方塊。 允許 'vnet-1' 中的閘道將流量轉送到 'vnet-private-endpoint' 保留已清除的預設值。 讓 'vnet-1' 能夠使用 'vnet-private-endpoint' 遠端閘道 保留已清除的預設值。 遠端虛擬網路 對等互連連結名稱 輸入 vnet-private-endpoint-to-vnet-firewall。 虛擬網路部署模型 選擇資源管理員。 訂用帳戶 選取您的訂用帳戶。 虛擬網路 選取 [vnet-private-endpoint]。 允許 'vnet-private-endpoint' 存取 'vnet-1' 保留已選取的預設值。 允許 'vnet-private-endpoint' 接收來自 'vnet-1' 的轉送流量 選取核取方塊。 允許 'vnet-private-endpoint' 中的閘道將流量轉送至 'vnet-1' 保留已清除的預設值。 讓 'vnet-private-endpoint' 能夠使用 'vnet-1' 的遠端閘道 保留已清除的預設值。 選取 [新增]。
確認兩個網路對等互連的 [對等互連狀態] 都顯示 [已連線]。
將虛擬網路連結至私人 DNS 區域
在上一節中建立私人端點期間所建立的私人 DNS 區域必須連結到 vnet-1 和 vnet-firewall 虛擬網路。
在入口網站頂端的搜尋方塊中,輸入私人 DNS 區域。 在搜尋結果中,選取 [私人 DNS 區域]。
選取 [privatelink.database.windows.net]。
在 [設定] 中,選取 [虛擬網路連結]。
選取 + 新增。
在 [新增虛擬網路連結] 中,輸入或選取下列資訊:
設定 值 虛擬網路連結 虛擬網路連結名稱 輸入 link-to-vnet-1。 訂用帳戶 選取您的訂用帳戶。 虛擬網路 選取 [vnet-1 (test-rg)]。 組態 保留 [啟用自動註冊] 未核取的預設值。 選取 [確定]。
選取 + 新增。
在 [新增虛擬網路連結] 中,輸入或選取下列資訊:
設定 值 虛擬網路連結 虛擬網路連結名稱 輸入 link-to-vnet-firewall。 訂用帳戶 選取您的訂用帳戶。 虛擬網路 選取 [vnet-firewall (test-rg)]。 組態 保留 [啟用自動註冊] 未核取的預設值。 選取 [確定]。
建立 vnet-1 與 vnet-private-endpoint 之間的路由
vnet-1 與 vnet-private-endpoint 之間不存在網路連結。 您必須建立路由,以允許流量透過 Azure 防火牆在虛擬網路之間流動。
路由會透過 Azure 防火牆,將來自 vnet-1 的流量傳送至虛擬網路 vnet-private-endpoint 的位址空間。
在入口網站頂端的搜尋方塊中,輸入路由表。 在搜尋結果中,選取 [路由表]。
選取 + 建立。
在 [建立路由表] 的 [基本] 索引標籤中,輸入或選取下列資訊:
設定 值 專案詳細資料 訂用帳戶 選取您的訂用帳戶。 資源群組 選取 [test-rg]。 [執行個體詳細資料] 區域 選取 [美國東部 2]。 名稱 輸入 vnet-1-to-vnet-firewall。 散佈閘道路由 保留預設值 [是]。 選取 [檢閱 + 建立]。
選取 建立。
在入口網站頂端的搜尋方塊中,輸入路由表。 在搜尋結果中,選取 [路由表]。
選取 [vnet-1-to-vnet-firewall]。
在 [設定] 中,選取 [路由]。
選取 + 新增。
在 [新增路由] 中,輸入或選取下列資訊:
設定 值 路由名稱 輸入 subnet-1-to-subnet-private-endpoint。 目的地類型 選取 [IP 位址]。 目的地 IP 位址/CIDR 範圍 輸入 10.1.0.0/16。 下一個躍點類型 選取 [虛擬設備]。 下一個躍點位址 輸入 10.2.1.4。 選取 [新增]。
在 [設定] 中,選取 [子網路]。
選取 [+ 建立關聯]。
在 [關聯子網路] 中,輸入或選取下列資訊:
設定 值 虛擬網路 選取 [vnet-1(test-rg)]。 子網路 選取 [subnet-1]。 選取 [確定]。
在 Azure 防火牆中設定應用程式規則
建立應用程式規則,以允許從 vnet-1 到 Azure SQL 伺服器私人端點 server-name.database.windows.net 的通訊。 以 Azure SQL 伺服器的名稱取代 server-name。
在入口網站頂端的搜尋方塊中,輸入防火牆。 在搜尋結果中,選取 [防火牆原則]。
在 [防火牆原則] 中,選取 [firewall-policy]。
在 [設定] 中,選取 [應用程式規則]。
選取 [+ 新增規則集合]。
在 [新增規則集合] 中,輸入或選取下列資訊:
設定 值 名稱 輸入 rule-collection-sql。 規則集合類型 保留選取 [應用程式]。 優先順序 輸入 100。 規則集合動作 選取允許。 規則集合群組 保留預設值 [DefaultApplicationRuleCollectionGroup]。 規則 規則 1 名稱 輸入 SQLPrivateEndpoint。 來源類型 選取 [IP 位址]。 來源 輸入 10.0.0.0/16 通訊協定 輸入 mssql:1433 目的地類型 選取 [FQDN]。 Destination 輸入 server-name.database.windows.net。 選取 [新增]。
測試從虛擬機器到 Azure SQL 的連線
在入口網站頂端的搜尋方塊中,輸入虛擬機器。 在搜尋結果中,選取 [虛擬機器]。
選取 [vm-1]。
在 [作業] 中,選取 [Bastion]。
輸入虛擬機器的使用者名稱和密碼。
選取 Connect。
若要驗證私人端點的名稱解析,請在終端機視窗中輸入下列命令:
nslookup server-name.database.windows.net
您會收到類似以下範例的訊息。 傳回的 IP 位址是私人端點的私人 IP 位址。
Server: 127.0.0.53 Address: 127.0.0.53#53 Non-authoritative answer: sql-server-8675.database.windows.netcanonical name = sql-server-8675.privatelink.database.windows.net. Name:sql-server-8675.privatelink.database.windows.net Address: 10.1.0.4
從在 Linux 上安裝 SQL Server 命令列工具 sqlcmd 和 bcp 安裝 SQL Server 命令行工具。 安裝完成後,繼續進行後續步驟。
使用下列命令連線到您在先前步驟中建立的 SQL 伺服器。
以您在 SQL 伺服器建立期間輸入的管理員使用者名稱取代 <server-admin>。
以您在 SQL 伺服器建立期間輸入的管理員密碼取代 <admin-password>。
以 SQL 伺服器名稱取代 server-name。
sqlcmd -S server-name.database.windows.net -U '<server-admin>' -P '<admin-password>'
成功登入時,會顯示 SQL 命令提示字元。 輸入 exit 以結束 sqlcmd 工具。
驗證 Azure 防火牆記錄中的流量
在入口網站頂端的搜尋方塊中,輸入 Log Analytics。 在搜尋結果中,選取 [Log Analytics]。
選取您的記錄分析工作區。 在此範例中,工作區名為 log-analytics-workspace。
在 [一般設定] 中,選取 [記錄]。
在搜尋方塊的範例 [查詢] 中,輸入應用程式規則。 在 [網路] 中傳回的結果中,選取 [應用程式規則記錄資料] 的 [執行] 按鈕。
在記錄查詢輸出中,確認 FQDN 下列出 server-name.database.windows.net,而 Rule 下列出 SQLPrivateEndpoint。
使用完所建立的資源時,您可以刪除資源群組及其所有資源。
在 Azure 入口網站中,搜尋並選取 [資源群組]。
在 [資源群組] 頁面上,選取 [test-rg] 資源群組。
在 [test-rg] 頁面上,選取 [刪除資源群組]。
在 [輸入資源群組名稱以確認刪除] 中輸入 test-rg,然後選取 [刪除]。
下一步
請前往下一篇文章,以了解如何搭配 Azure 私人解析器使用私人端點: