本文屬于【Azure 架構師學習筆記】系列。
本文屬于【Azure Networking】系列。
前言
最近公司的安全部門在審計云環境安全性時經常提到service endpoint(SE)和priavate endpoint(PE)的術語,為此做了一些研究儲備。
云計算的本質就是網絡, 默認情況下資源間及外部都是通過公網也就是互聯網訪問。為了安全,Azure引入了SE和PE 等服務。
云環境網絡流動主要有兩個:inbound(入境)和outbound(出境),前者意味著站在某個資源角度比如一個storage account, 外部的數據流入。 后者則表示storage account的數據返回。
網絡流量的載體也有兩個:internet(公網)和微軟骨干網絡(私網)。企業會認為最起碼流量都應該只經過骨干網, 只在最外層建設必要的防護措施用于與互聯網交互。
在Azure云中,會使用虛擬網絡(Virtual Network, VNet)保護資源。通過配置可以使其與云上其他網絡,本地網絡等進行交互。VNet之間可以經過配對(peering)來互訪,在VNet之下,還細分了不同的Subnet。
當一個資源如VM 被創建時,會有一到多個網卡NIC,這些網卡實際上就是建立在所屬VNET之上。可以通過動態或者靜態IP來指定特定的網卡。
Service Endpoint
在某個VNet 資源上使用private IP(這里就要精確到subnet)連接一個Azure 資源的public endpoint。這里的VNet不一定就是目標資源所在的VNet。
意味著資源間的流量是發生在Azure 骨干網絡而不是互聯網。實際上就是把服務資源“鎖定”, 只允許來自于相連subnet的service endpoint 流量。
如果需要進一步收緊網絡,還可以使用VNET上的NSG(network security group)拒絕除了預期Azure 服務之外的其他outbound(出境) 流量。
比如在VM 中,一個VNet需要和Azure Storage Account交互。可以通過組合service endpoint, storage account和NSG從而限制VM 的流量是來自于private subnet,而不是互聯網。Storage account也只允許這些subnet的訪問。 NSG 則對從資源到互聯網的流量進行限制。
但是跨region的VNet間不能使用service endpoint。 只能使用PE。 同時它也只能在Azure網絡中使用。附上幾個圖以便理解。
Private Endpoint
PE 是允許Vnet資源間(同一個VNet)資源的私有訪問, 同樣也是發生在MS 的骨干網絡而不是互聯網。比如從VNet中選一個private IP并分配給storage account,這樣在同一個VNet下的所有資源如VM 就可以直接訪問Storage account而不需要經過互聯網。
相對于SE 來說, PE 更像一個通用的私有訪問云資源的方案。
差異
通過service endpoints,依舊可以連接目標資源的public endpoint,它更像是延展, 把VNet的標識延展到目標資源。
通過private endpoints, 通過分配一個VNet里私有IP 到目標資源上,本質就是把這個資源“帶進”網絡。它并沒有刪除public IP, 但是可以通過控制網絡來阻隔。
VNet是一個邊界,控制網絡的入和出,如果你想讓資源只在VNET內交互,那么開方outbound將會是風險,這時候就可以使用service endpoint或者PE 來控制資源受限在某個區域。
一個簡單的區別在于PE是針對特定的某個azure 資源而SE 針對的是特定類型資源而不是單純的某個。
其他差異
費用
SE 沒有額外費用。
PE 則需要按時和數據處理的量來收費。
本地支持
SE不支持本地流量,因為它局限于特定VNET。
PE可以通過專線(expressroute)、私有配對(private peering)和VPN 來連同本地跟云環境。
維護
SE沒有什么維護成本。
PE的存在需要額外進行DNS 配置。
小結
使用場景
- 阻止全部公網流量——PE
- 混合云環境——PE
- 控制特定資源連接到VNET內的資源——PE
- 控制特定storage account跟VNET 資源間的安全操作——both
- 不希望有額外的配置和使用成本下的安全操作——SE
- 需要跨region——PE