本文属于【Azure 架构师学习笔记】系列。
前言
公有云的其中一个特点是默认允许公网访问, 这就对企业环境带来风险,也是很多年前企业对公有云抵触的其中一个原因,现在这类问题已经很少,因为有了很多技术来确保云上的资源被安全地访问。其中Private endpoint(PE)就起到了很重要的作用。
什么是Private Endpoint
云上的某个资源如VM会创建在特定的网络(VNet/Subnet)上, 而其他如Storage Account , Azure SQL等PaaS服务则没有。 如果你需要用VM 来访问这些PaaS资源,VM 就会通过资源的公网IP 来访问。
一旦涉及公网访问,风险随之而来。为了避免这种风险,可以把这些PaaS资源放到VNet的Private Endpoint中。所以PE是建立在VNet之上网络接口。建立PE 之后,网络流量就会从公网IP 转成使用VNet进行。
PE会在VNet的可用地址区间中动态选择private IP并附加给PE,然后在PE的生命周期中保持IP 地址的一致。
PE 例子
假设有一个VNet,使用IP 地址范围为10.10.0.0/16。 在这个VNet中,有两个subnet, A :10.10.5.0/24 和 B:0.10.6.0/24。在A 中有多个VM。有一个Storage account启用了private endpoint, 这个PE 在Subnet B中。
在Subnet A 中的VM 要访问Storage Account时也可以通过PE的IP 地址访问,因为PE 是建立在VNet中,A, B 均属于同一个VNet。 如果不在这个VNet中的资源,如果配置了如配对VNet(Peered VNet) 或者VPN、Express Route(ER)等,也可以直接使用PE 的地址来访问。
对于绝大部分资源,PE都可以在资源本身创建和管理,这一点不像SE
也可以在network interface上创建,这是一个独立的资源,和SE中的SE policy类似。
虽然从下图可以看到Private IP 地址是动态的,但是在这个资源被删除前,一旦创建则不会变化。
DNS
在没有PE 前,使用的是公开可用的endpoint,这种endpoint使用internet-resolvale domain name,不需要管理DNS 命名。但是当使用PE 之后则需要DNS服务来做内部解析。
有两种方式可以操作,第一种是在现有DNS 中创建一个forwarder。PE 一ing包含了资源的FQDN和private IP, 需要创建一个A record用于为客户端解决FQDN 到private IP 地址的解析问题。
第二种方式使用Azure 的private DNS zones。它在VNet中进行域名解析,不需要定制DNS。
小结
- 由于PE 建立在VNet上,所以它带有VNet的一些天然的属性,比如限定在同一个region(区域)和Subscription 中。如果需要跨region或subscription, 则要做VNet Peering。
- PE 建立之后,客户端可以通过PE 访问资源,但是资源不能通过PE 访问客户端,这种连接是单向的。