众所周知,在Azure中预配任何基于PaaS的服务时,它都会附带一个公共的端点。而作为云架构师或安全工程师,您必须从设计的角度,确保此类基于PaaS服务的连接是安全的。也就是说,为了保证访问公共端点时的安全性,我们往往需要对服务端点进行加固。
服务端点(Service Endpoint)
具体而言,作为虚拟网络的一部分,它需要通过Azure主干网络上的优化路由,来提供与Azure服务直接且安全的连接。其中,服务端点能够让虚拟网络(vnet)中的私有IP地址,到达Azure服务的一个端点,而无需使用vnet上的公共IP地址。
下图描绘了在虚拟网络中,一台正在运行的私有虚拟机试图访问某个存储帐户。为此,我们首先需要在已运行的VM的唯一虚拟网络中,启用服务端点。
启用服务端点的步骤
第一步:按需在虚拟网络上启用服务端点。由于端点上的各种策略都是可选的,因此您可以根据实际需求,过滤那些前往Azure服务的虚拟网络流量。
第二步:进入PaaS服务的防火墙或网络设置界面,添加服务端点。
第三步:验证端点服务是否已被启用。
注意事项
1. 在设置服务端点之前,请确保IP防火墙的相应规则已被允许。
2. 连接到基于PaaS的服务上时,由于服务端点并不支持各种本地资源,因此您必须使用本地的NATIP或快速路由的方式。而且,您必须在资源IP防火墙的设置中,允许此类公共IP地址。
3. 对于服务端点而言,可用的基于PaaS的服务包括:Azure存储、Azure数据库服务、Azure Synapse Analytics、AzureKey Vault、Azure服务总线、Azure事件中心、Azure数据湖存储Gen 1、Azure应用服务、以及Azure认知服务。
4. 为了通过服务端点去访问SQL和数据湖服务,vnet和PaaS服务应当位于同一个区域中。
5. 服务端点并不能解析DNS的查询。
值得注意的是,您无需为服务端点支付任何额外的费用,并且创建服务端点的数量也不受任何限制。
私有端点(Private endpoint)
在讨论了服务端点之后,我们下面来看看私有端点。私有端点会通过使用来自虚拟网络(vnet)的私有IP地址,有效地将基于PaaS的服务引入虚拟网络。我们可以认为它是一种网络接口,能够安全地连接到由AzurePrivate Link提供支持的服务处。
下图描绘了在虚拟网络中,一台正在运行的私有虚拟机试图访问某个存储帐户。为此,我们首先需要为正在运行VM的虚拟网络,去设置一个私有端点。
配置私有端点的步骤
第一步:进入PaaS服务,“私有端点创建选项”会出现在防火墙和网络部分中,或作为一个单独的部分被提供。
第二步:Private Link提供了为不同的Azure资源,创建私有端点的选项,其中包括:PrivateLink服务、SQL服务器或Azure存储帐户。请选择该私有端点需要连接的具体资源。
第三步:在此,您必须选择一个虚拟网络/子网,并与私有的DNS相集成。同时,您需要通过一个DNS记录,实现与私有端点的连接。在配置完成后,您便可以创建相应的服务了。
第四步:您可以在“服务 -> 网络”下的虚拟网络部分,检查并验证私有端点服务是否已被成功创建,以及是否能够正常运行。
在上述例子中,PrivateLink会基于RBAC的许可,自动批准连接。当然,消费者(consumer)也有权限去批准或拒绝连接。目前,私有端点具有四种连接状态,它们分别是:已批准(提供自动或手动批准)、待定(未收到批准)、已拒绝(未批准)、已断开(连接已被删除)。
此外,为了部署私有端点或Private Link服务,用户也必须被分配诸如:所有者、贡献者、以及网络贡献者等内置的角色。
至此,我们仅为存储帐户的blob创建了一个私有端点。如果您需要安全地访问存储帐户的其他资源(例如文件、表或队列等),那么还需要其他单独的私有端点连接。
其实,私有端点并不限于公共云,它也能够支持混合云等广泛的Azure服务。例如,上例中的本地VM,就可以通过代理网络或快速路由,连接到由PrivateLink提供支持的Azure服务上。
通常,每个私有端点都会使用同一子网内的动态私有IP,来创建一个NIC。而且,私有IP地址的数值,在私有端点的整个生命周期内都是保持不变的。
与Azure服务端点不同,私有端点需要为端点的创建、以及出入栈数据的处理收取费用。
当然,上述讨论的每一项服务也都会有着如下的限制:
此外,具有Azure安全基准的Azure安全中心,也提供了有关如何保护Azure上各种云端应用和资源的建议。
小结
总的说来,服务端点带有可公共路由的IP地址,而私有端点则可配置为在虚拟网络地址空间中的私有IP。您可以根据实际项目的需求,在服务端点和私有端点之间做出明智的选择。如果您有兴趣了解更多有关如何安全地连接到AzurePaaS服务的知识,请参考 服务演示视频 。