《Windows Azure Platform 系列文章目錄》
我們在使用Azure PaaS服務的時候,經常會發現這些PaaS提供的是公網的DNS地址,且無法限制客戶端對這些PaaS DNS地址的訪問。所以我們只能通過虛擬機的方式來搭建自己的Azure公有云部署,通過把虛擬機都加入到虛擬網絡中,通過虛擬網絡的內網IP地址互相訪問。而不是採用PaaS服務。
後來微軟雲Azure做了功能的改進,允許我們限制對PaaS DNS的訪問。我們現在有兩種方式來進行限制,分別是
1.Service Endpoint,服務終結點
2.Private Link
這2個服務看起來非常類似,主要解決的問題都是:限制了誰可以鏈接到Azure的服務。
筆者將分別介紹這2種服務,我們首先從Service Endpoint開始。
Service Endpoint,筆者比較喜歡叫做VNet Integration。這是微軟雲Azure提供的比較早的服務。服務終結點允許您將對 PaaS 資源的訪問權限限制爲來自 Azure 虛擬網絡(Virtual Network)的流量。
使用Service Endpoint的時候,PaaS服務並不加入到Virtual Network中。而是通過安全隧道的方式,源地址的流量離開Virtual Network,通過Azure 主幹網,訪問到Azure PaaS服務。
並且PaaS服務配置可以識別出,源地址的流量來自於Virtual Network,並允許訪問。所以不需要在Azure PaaS服務上配置IP白名單。
在舉個更詳細的例子:
場景:1臺Azure VM加入到Virtual Network裏,該VM沒有公網IP,想訪問到Azure PaaS SQL Database,應該如何配置?
場景 | 解決方案 | VM訪問需要的IP | 缺點 |
場景一: 如果採用PaaS的IP白名單 |
1.在Azure VM上分配公網IP地址 2.在Azure PaaS SQL Database上,把Azure VM的公網IP地址加入到訪問的白名單裏 |
虛擬機的公網IP | Azure VM需要額外分配IP地址,增加安全隱患 |
場景二: 如果採用Service Endpoint |
1.不需要在Azure VM上分配公網IP地址 2.把Azure PaaS SQL Database加入到VM所在的Virtual Network裏,信任一個或者多個subnet發來的流量 |
虛擬機的內網IP |
總體架構圖如下:
Service Endpoint通過在虛擬網絡Virtual Network上啓用subnet或subnet來支持Service Endpoint來設置。設置完畢後,你可以將PaaS資源配置爲僅接受來自這些子網的流量。無需執行任何IP 白名單或者NAT。你告訴Azure PaaS資源,哪個VNet或者子網允許流量。啓用Service Endpoint後,PaaS資源會看到來自VNet專用IP的流量,而部署來自其公網IP的流量。
使用Service Endpoint的另一個優點是:流量以最佳方式路由到 Azure 資源。即使您的 subnet上有 UDR 將 Internet 流量路由回本地或通過防火牆設備,使用Servcie Endpoint也意味着流量會直接發送到 Azure 資源。
以下服務支持Servcie Endpoint
- Azure Storage
- Azure SQL 數據庫
- Azure SQL 數據倉庫
- PostgreSQL 的 Azure 數據庫
- MySQL 和 MariaDB 的 Azure 數據庫
- Azure Cosmos DB
- Azure KeyVault
- Azure Service Bus
- Azure 事件中心
- Azure 數據湖存儲(僅第 1 代)
- Azure 應用服務
- Azure 容器註冊表
服務終結點確實存在一些限制或缺點。首先,請記住,服務終結點(Service Endpoint)的流量仍在離開虛擬網絡,並且 Azure PaaS 資源仍在其公共地址上訪問。服務終結點不能由來自本地的流量(通過 VPN 或快速路由)使用,只能用於來自 Azure 虛擬網絡的流量。如果要允許,則需要訪問本地資源,以便將公共 IP 列入白名單。