Azure提供了兩個類似但不同的服務,允許虛擬網路(VNet)資源私下連線到其他Azure服務。Azure VNet服務端點和Azure私有端點(由Azure私有連結提供支援)都透過允許VNet流量不透過internet與服務資源通訊來促進網路安全,但它們之間存在一些區別。這個由三部分組成的部落格系列詳細介紹了這兩種服務。
什麼是私有連結?什麼是私有端點?上面,VNet中的虛擬機器可以使用Azure私有連結私有端點連線到特定的SQL資料庫,就像它在VNet中一樣,即使NSG拒絕出站流量。私有端點使得流量可以從一個私有IP地址流到同一個VNet中的另一個私有IP——不需要internet遍歷。
Azure Private Link是一種服務,它允許虛擬網路資源私有地連線到其他資源,就好像它們是同一網路的一部分,透過Microsoft Azure主幹而不是internet傳輸流量。
要利用此服務,需要建立一個私有連結私有端點。私有端點是向服務提供私有IP地址的網路介面,通常VNet只能透過公共IP地址訪問該服務。
例如,每個儲存帳戶都有一個公共端點,預設情況下,該端點對任何網路上的客戶機都是開放的。透過私有端點,您可以從VNet為儲存帳戶分配私有IP地址,並且該VNet中的虛擬機器(VM)無需透過internet就可以訪問儲存帳戶。這很強大,因為這意味著您不需要在流量源或目的地使用公共IP地址。這就好像您將儲存帳戶帶入VNet中。
但這還不是全部。當然,儲存帳戶仍然有一個公共端點——它不會因為您沒有使用它而消失。因此,如果需要,您可以阻止所有到其公共端點的通訊,進一步保護它不受網路漏洞的影響。
私有端點可以為兩種不同類別的服務啟用:
Azure PaaS服務,如Azure儲存、Azure SQL資料庫、Azure金鑰庫等。點選這裡檢視完整列表。例如,您可以建立一個端點來安全地將私有子網中的VM連線到儲存帳戶。在為儲存帳戶建立私有IP地址後,你可以選擇阻止訪問它的公共端點,這樣唯一能到達它的流量來自透過私有端點的被批准的子網。如果沒有私有端點,就需要給虛擬機器分配一個公共IP地址,將其暴露給internet和伴隨它而來的所有威脅;子網將需要一個NAT或閘道器裝置,需要一個額外的配置步驟和潛在的減慢流量;儲存帳戶需要對任何網路上的客戶端開放,這樣如果憑據洩露,internet上的任何人都可以訪問它。不是很好!
您自己的服務,如果它執行在標準負載平衡器之後。這被稱為私有連結服務,如果您的客戶需要從他們自己的VNet中私有地連線到您的服務,那麼您將希望建立一個。在您啟用了私有連結服務之後,使用者在他們的虛擬網路中建立私有端點併發送連線到您的服務的請求。如果沒有私有端點,您的消費者將不得不透過internet訪問您的服務。同樣,它們的虛擬機器需要被分配公共IP地址,相關的子網需要一個NAT或閘道器裝置,而且您的服務資源也必須能夠從internet訪問。
(私有連結服務超出了本文的範圍,因此我們將重點關注在Azure PaaS服務中使用私有端點。)
增強的安全性:由於私有端點促進了對目標資源的私有連線(Azure稱之為私有連結資源),所以沒有必要在VNet資源端分配一個公共IP地址。如果沒有公共IP地址,惡意參與者就無法掃描VM的開放埠以尋找漏洞,並關閉您的應用程式或竊取資料。另外,您可以將私有端點對映到特定的資源甚至子資源(例如,儲存帳戶或blob),從而減少資料溢位的風險。(您可以在Azure文件中找到可用的私有連結資源和子資源型別的列表。)最佳化路由:私有端點在Azure主幹網路上提供了從VNet到私有連結資源的直接路由,因此沒有額外的跳點來降低流量。更簡單的網路架構:由於流量透過Azure主幹網路從VNet資源流到私有連結資源,因此您不需要分配公共IP地址或配置NAT或閘道器裝置。私有端點支援:私有端點允許來自私有端點的流量訪問私有連結資源,而無需公共對等或遍歷internet。VPN隧道、ExpressRoute私有對等連線和peered VNets都與私有端點一起工作。與AWS VPC端點相似如果你是一個AWS使用者和所有這一切聽起來很熟悉,你可能會想到VPC介面端點,也是網路介面,使交通從虛擬網路訪問子網AWS服務或端點服務(其他AWS託管的服務客戶)不需要交通去在網際網路上。介面端點將你連線到由AWS PrivateLink提供支援的服務,並從相關子網分配私有IP地址,因此流量的來源和目的地都是私有IP。非常像Azure私有連結的工作方式!
如何為Azure PaaS資源建立私有端點讓我們回到我們的VM和儲存帳戶示例。假設您希望流量從前者流到後者,而不必訪問儲存帳戶的公共端點。我們將向您展示這個出色的Azure教程的縮略版。
下面是如何建立一個私有端點:
導航到私有連結中心並選擇“建立私有端點”。為私有端點輸入訂閱、資源組以及名稱和區域。選擇“連線到我目錄中的Azure資源”,然後選擇訂閱和“Microsoft”。Storage/storageAccounts”作為資源型別。選擇目標資源的名稱,然後指定目標子資源。對於儲存,可以是blob、blob_secondary、table、table_secondary、dfs和dfs_secondary。選擇端點應該部署到的VNet和子網。然後,您可以選擇與私有DNS區域整合,如果您使用預設的azd提供的DNS,這是推薦的,因為Azure會為您處理所有困難的工作。如果使用自定義DNS設定,則需要使用自己的DNS伺服器或使用VM的hosts檔案建立DNS記錄。(稍後會有更多關於這個的內容!)現在已經建立了私有端點,可以對其進行測試了。SSH或RDP到例項中並執行nslookup mystorageaccount.blob.core.windows.net,用儲存帳戶名替換mystorageaccount。你會看到這樣的東西:
Server: 127.0.0.53Address: 127.0.0.53#53
Non-authoritative answer:mystorageaccount.blob.core.windows.net canonical name = mystorageaccount.privatelink.blob.core.windows.net.Name: mystorageaccount.privatelink.blob.core.windows.netAddress: 10.1.0.5
注意上面的IP地址是如何成為私有IP地址的。如果你從你的本地終端執行相同的命令,你會看到這樣的東西:
Server: 75.75.75.75Address: 75.75.75.75#53
Non-authoritative answer:mystorageaccount.blob.core.windows.net canonical name = mystorageaccount.privatelink.blob.core.windows.net.mystorageaccount.privatelink.blob.core.windows.net canonical name = blob.blz81prdstr02z.store.core.windows.net.Name: blob.blz81prdstr02z.store.core.windows.netAddress: 52.238.154.132
為了加分:阻止所有的流量到儲存帳戶的公共端點。您可以透過導航到儲存帳戶並在側邊欄中選擇“防火牆和虛擬網路”來做到這一點。在“允許訪問”下,選擇“選定的網路”。然後儲存更改。因為您沒有白名單任何網路,沒有網路可以訪問儲存帳戶透過它的公共端點。
你可以在虛擬機器上使用Azure CLI或PowerShell來測試這一點,將一個檔案上傳到你的儲存帳戶中。嘗試從本地終端(或從同一VNet但不同子網中的VM)檢索該檔案,您將得到一個錯誤訊息,說明您無法連線到儲存帳戶。正如預期的那樣,您可以透過私有端點從VM連線到儲存帳戶,但是您不能在子網之外連線到它。
額外的好處:您可以建立一個NSG,透過阻止來自託管虛擬機器的子網的出站流量來進一步鎖定VNet。VM仍然能夠透過私有端點訪問儲存帳戶,並且可以確保其他流量不能離開子網。
同樣,要獲得完整的教程,請參閱Azure文件。
在使用私有端點之前,需要了解一些事情私有端點需要花錢。您需要為私有端點資源時間以及處理的入站和出站資料付費。但是,如果你執行自己的私有連結服務,私有連結服務是不需要額外收費的——只有私有端點。在使用私有端點時,正確配置DNS設定是至關重要的,特別是在使用完全限定域名(FQDN)連線到私有端點資源時,因為Azure服務的FQDN解析到它們的公共IP地址。(例如,我們示例中的FQDN mystorageaccount.blob.core.windows.net將解析為52.238.154.132。)如果您的服務被配置為使用其公共端點連線到私有端點資源,並且您有一個自定義DNS設定,那麼您將需要重寫DNS解析以使用私有IP地址。(如果您使用的是azd提供的DNS,並且在建立私有端點時選擇與私有DNS區域整合,那麼您就萬事俱備了——Azure負責處理細節。)私有端點必須部署在與虛擬網路相同的區域,但是私有連結資源可以部署在不同的區域和/或AD租戶。私有端點不支援網路策略,比如網路安全組(NSGs),因此安全規則不會應用於它們。(這就是上述額外的學分作業奏效的原因!)但是不要擔心——子網中的其他資源仍然像往常一樣受NSG安全規則的控制。請注意,如果您不使用Azure門戶來建立私有端點,則需要手動禁用子網的privateendpointnetworkpolicy設定。(如果您使用門戶,這將自動為您處理。)結論可以看到,透過將私有端點資源引入到VNet中,私有端點是保護VNet和私有端點資源的好方法。流量源是一個私有IP地址,而目的地是同一子網中的私有IP地址。
“聽起來不錯,”您可能會說,“但是私有端點和服務端點之間有什麼區別呢?”
為此,請繼續關注本部落格系列的第3部分,在其中我們將比較私有端點和服務端點!
本文:http://jiagoushi.pro/node/1382