Azure 专用终结点是 Azure Private Link 的基础构件。 专用终结点允许部署在虚拟网络中的 Azure 资源通过专用链接资源进行私密通信。
资源可通过专用终结点访问虚拟网络中部署的专用链接服务。 通过虚拟网络对等互连和本地网络连接对专用终结点进行访问扩展了连接性。
你可能需要检查或阻止从客户端到通过专用终结点公开的服务的流量。 使用 Azure Firewall 或第三方网络虚拟设备完成此检查。
有关涉及专用终结点和Azure Firewall的详细信息和方案,请参阅 Azure Firewall 方案来检查发往专用终结点的流量。
本教程介绍如何执行下列操作:
- 为测试虚拟机创建虚拟网络和堡垒主机。
- 创建专用终结点虚拟网络。
- 创建测试虚拟机。
- 部署Azure Firewall。
- 创建Azure SQL数据库。
- 为Azure SQL创建专用终结点。
- 在专用终结点虚拟网络和测试虚拟机虚拟网络之间创建网络对等体。
- 将虚拟网络链接到专用 DNS 区域。
- 在Azure SQL的Azure Firewall中配置应用程序规则。
- 通过Azure Firewall在测试虚拟机与Azure SQL之间路由流量。
- 测试与Azure SQL的连接,并在Azure Firewall日志中验证。
如果没有Azure订阅,请在开始前创建试用订阅。
先决条件
具有活动订阅的Azure帐户。
Log Analytics工作区。 有关创建log analytics工作区的详细信息,请参阅在 Azure 门户中创建Log Analytics工作区。
登录到 Azure 门户
登录到 Azure 门户。
创建资源组
资源组是Azure资源的逻辑容器。 此过程为本教程中使用的所有资源创建资源组。
在门户中,搜索并选择“资源组”。
在 “资源组 ”页上,选择“ + 创建”。
在 “基本信息 ”选项卡上,输入或选择以下信息:
设置 值 项目详细信息 订阅 选择订阅。 资源组 输入 test-rg。 资源详细信息 区域 选择“中国东部 2”。 选择“查看 + 创建”,然后选择“创建”。
创建虚拟网络
下面的过程创建虚拟网络及资源子网。
在门户中,搜索并选择“虚拟网络”。
在“虚拟网络”页面上,选择“+ 创建”。
在“创建虚拟网络”的“基本信息”选项卡上,输入或选择以下信息:
设置 值 项目详细信息 订阅 选择订阅。 资源组 选择 test-rg。 实例详细信息 名称 输入“vnet-1”。 区域 选择“中国东部 2”。 选择下一步,转到安全性选项卡。
选择下一步,转到IP 地址选项卡。
在“子网”的地址空间框中,选择“默认”子网。
在编辑子网中,输入或选择以下信息:
设置 值 子网详细信息 子网模板 保留默认值“默认”。 名称 输入subnet-1。 开始地址 保留默认值“10.0.0.0”。 子网大小 保留默认值“/24 (256 个地址)”。 选择“保存”。
选择屏幕底部的“查看 + 创建”,然后在验证通过时选择“创建”。
部署Azure Bastion
Azure Bastion 使用您的浏览器,通过虚拟网络中的专用 IP 地址,以安全外壳协议(SSH)或远程桌面协议(RDP)连接到虚拟机(VM)。 虚拟机不需要公共 IP 地址、客户端软件或特殊配置。 有关Azure Bastion的详细信息,请参阅 Azure Bastion。
注意
每小时定价从部署 Bastion 的时刻开始计算,无论出站数据的使用情况如何。 有关详细信息,请参阅 定价 和 SKU。 如果要将 Bastion 部署为教程或测试的一部分,建议在使用完此资源后将其删除。
在门户顶部的搜索框中,输入“堡垒”。 在搜索结果中选择 Bastions 。
选择+ 新建。
在“创建 Bastion”的“基本”选项卡中,输入或选择以下信息:
设置 值 项目详细信息 订阅 选择订阅。 资源组 选择 test-rg。 实例详细信息 名称 输入 堡垒。 区域 选择“中国东部 2”。 级 选择基本。 配置虚拟网络 虚拟网络 选择“vnet-1”。 选择“查看 + 创建”。
选择 创建。
为专用终结点创建虚拟网络
下面的过程创建含有子网的虚拟网络。
在门户中,搜索并选择“虚拟网络”。
在“虚拟网络”页面上,选择“+ 创建”。
在创建虚拟网络的基本信息选项卡上输入或选择以下信息:
设置 值 项目详细信息 订阅 选择订阅。 资源组 选择 test-rg 实例详细信息 名称 输入“vnet-private-endpoint”。 区域 选择“(亚太)中国东部 2”。 选择下一步,转到安全性选项卡。
选择下一步,转到IP 地址选项卡。
使用垃圾桶图标选择“删除地址空间”以删除默认地址空间。
选择“添加 IPv4 地址空间”。
输入 10.1.0.0 并将下拉框保留为 默认值 /16(65,536 个地址)。
选择 + 添加子网。
在“添加子网”中,输入或选择以下信息:
设置 值 子网详细信息 子网模板 保留默认值“默认”。 名称 输入 subnet-private。 开始地址 保留默认值 10.1.0.0。 子网大小 保留默认值“/24 (256 个地址)”。 选择 并添加。
选择屏幕底部的“查看 + 创建”,然后在验证通过时选择“创建”。
创建测试虚拟机
以下过程会在虚拟网络中创建一个名为 vm-1 的测试虚拟机 (VM)。
在门户中,搜索并选择“虚拟机”。
在 虚拟机中,选择 + 创建,然后选择 Azure 虚拟机。
在“创建虚拟机”的“基本信息”选项卡上,输入或选择以下信息:
设置 值 项目详细信息 订阅 选择订阅。 资源组 选择 test-rg。 实例详细信息 虚拟机名称 输入“vm-1”。 区域 选择“(亚太)中国东部 2”。 可用性选项 选择“无需基础结构冗余”。 安全类型 选择“标准” 。 图像 选择“Ubuntu Server 24.04 LTS - x64 Gen2”。 VM 架构 保留默认值 x64。 大小 选择一个大小。 管理员帐户 身份验证类型 选择“SSH 公钥”。 用户名 输入用户名。 SSH 公钥源 选择“生成新密钥对”。 密钥对名称 输入 vm-1-key。 入站端口规则 公共入站端口 选择 “无”。 选择“下一步: 磁盘”,然后选择“下一步: 网络”。
在“网络”中,输入或选择以下信息:
设置 值 网络接口 虚拟网络 选择“vnet-1”。 子网 选择“subnet-1 (10.0.0.0/24)”。 公共 IP 选择 “无”。 网络接口 (NIC) 网络安全组 选择 “高级”。 配置网络安全组 选择“新建”。
在 “名称” 中输入 nsg-1。
选择“确定”。将其余选项保留为默认值,然后选择“查看 + 创建”。
选择 创建。
此时会打开 “生成新密钥对 ”弹出窗口。 选择“下载私钥并创建资源”。
私钥文件下载为 vm-1-key.pem。 请确保知道下载此文件的位置,以便可以在后续步骤中使用它登录到虚拟机。
部署Azure Firewall
在门户顶部的搜索框中,输入“防火墙”。 在搜索结果中选择“防火墙”。
在“防火墙”中,选择“+ 创建”。
在“创建防火墙”的“基本信息”选项卡中,输入或选择以下信息:
设置 值 项目详细信息 订阅 选择订阅。 资源组 选择 test-rg。 实例详细信息 名称 输入 firewall。 区域 选择“(亚太)中国东部 2”。 可用区 选择 “无”。 防火墙 SKU 选择“标准” 。 防火墙管理 选择“使用防火墙策略来管理此防火墙”。 防火墙策略 选择“添加新订阅”。
在策略名称中输入防火墙策略。
在“区域”中选择“中国东部 2”。
选择“确定”。选择虚拟网络 选择“新建”。 虚拟网络名称 输入“vnet-firewall”。 地址空间 输入“10.2.0.0/16”。 子网地址空间 输入“10.2.1.0/26”。 公共 IP 地址 选择“添加新订阅”。
在名称中输入公共 IP 防火墙。
选择“确定”。选择“查看 + 创建”。
选择 创建。
等待防火墙部署完成后,再继续。
启用防火墙日志
在本部分中,将启用防火墙日志并将其发送到 Log Analytics 工作区。
注意
在启用防火墙日志前,您的订阅内必须有一个 Log Analytics 工作区。 有关详细信息,请参阅先决条件。
在门户顶部的搜索框中,输入“防火墙”。 在搜索结果中选择“防火墙”。
选择 firewall。
在“监视”下,选择“诊断设置”。
选择“+ 添加诊断设置”。
在“诊断设置”中,输入或选择以下信息:
设置 值 诊断设置名称 输入 diagnostic-setting-firewall。 日志 类别 选择Azure 防火墙应用规则(旧版 Azure Diagnostics)和Azure 防火墙网络规则(旧版 Azure Diagnostics)。 目标详细信息 目标 选择 发送到 Log Analytics 工作区。 订阅 选择订阅。 Log Analytics工作区 选择 Log Analytics 工作区。 选择“保存”。
创建Azure SQL数据库
在门户顶部的搜索框中,输入“SQL”。 在搜索结果中选择“SQL 数据库”。
在SQL 数据库中,选择+ 创建。
在“创建 SQL 数据库”的“基本信息”选项卡中,输入或选择以下信息:
设置 值 项目详细信息 订阅 选择订阅。 资源组 选择 test-rg。 数据库详细信息 数据库名称 输入“sql-db”。 服务器 选择“新建”。
在服务器名称中输入服务器名称(服务器名称必须唯一,将服务器名称替换为唯一值)。
在“位置”中,选择“(亚太)中国东部 2”。
选择“使用 SQL 身份验证”。
输入服务器管理员登录名和密码。
选择“确定”。是否要使用 SQL 弹性池? 请选择“否”。 备份存储冗余 备份存储冗余 选择“本地冗余备份存储”。 选择下一步:网络。
在“创建 SQL 数据库”的“网络”选项卡中,输入或选择以下信息:
设置 值 网络连接 连接方法 选择 专用终结点。 专用终结点 选择“+ 添加专用终结点”。 创建专用终结点 订阅 选择订阅。 资源组 选择 test-rg。 位置 选择“中国东部 2”。 名称 输入“private-endpoint-sql”。 目标子资源 选择“sqlServer”。 网络 虚拟网络 选择“vnet-private-endpoint”。 子网 选择“subnet-private-endpoint”。 Private DNS集成 与专用 DNS 区域集成 选择 “是”。 Private DNS 区域 保留默认值“privatelink.database.chinacloudapi.cn”。 选择“确定”。
选择“查看 + 创建”。
选择 创建。
使用虚拟网络对等互连来连接虚拟网络
在本部分中,通过虚拟网络对等连接来连接虚拟网络。 网络 vnet-1 和 vnet-private-endpoint 被连接到 vnet-firewall。 vnet-1 和 vnet-private-endpoint 之间没有直接连接。
在门户顶部的搜索框中,输入“虚拟网络”。 在搜索结果中,选择“虚拟网络”。
选择“vnet-firewall”。
在设置中选择对等互连。
在“对等互连”中选择“+ 添加”。
在“添加对等互连”中,输入或选择以下信息:
设置 值 此虚拟网络 对等连接名称 输入“vnet-firewall-to-vnet-1”。 到远程虚拟网络的流量 选择“允许(默认)”。 从远程虚拟网络转发的流量 选择“允许(默认)”。 虚拟网络网关或路由服务器 选择“无(默认)”。 远程虚拟网络 对等连接名称 输入“vnet-1-to-vnet-firewall”。 虚拟网络部署模型 选择“资源管理器”。 订阅 选择订阅。 虚拟网络 选择“vnet-1”。 到远程虚拟网络的流量 选择“允许(默认)”。 从远程虚拟网络转发的流量 选择“允许(默认)”。 虚拟网络网关或路由服务器 选择“无(默认)”。 选择 并添加。
在“对等互连”中选择“+ 添加”。
在“添加对等互连”中,输入或选择以下信息:
设置 值 此虚拟网络 对等连接名称 键入“vnet-firewall-to-vnet-private-endpoint”。 允许“vnet-1”访问“vnet-private-endpoint” 保持默认选项为“已选择”。 允许“vnet-1”接收来自“vnet-private-endpoint”的转发流量 选中复选框。 允许“vnet-1”中的网关将流量转发到“vnet-private-endpoint” 保持默认设置为“已清除”。 允许“vnet-1”使用“vnet-private-endpoint”远程网关 保持默认设置为“已清除”。 远程虚拟网络 对等连接名称 输入“vnet-private-endpoint-to-vnet-firewall”。 虚拟网络部署模型 选择“资源管理器”。 订阅 选择订阅。 虚拟网络 选择“vnet-private-endpoint”。 允许“vnet-private-endpoint”访问“vnet-1” 保持默认选项为“已选择”。 允许“vnet-private-endpoint”接收来自“vnet-1”的转发流量 选中复选框。 允许“vnet-private-endpoint”中的网关将流量转发到“vnet-1” 保持默认设置为“已清除”。 允许“vnet-private-endpoint”使用“vnet-1”远程网关 保持默认设置为“已清除”。 选择 并添加。
验证两个网络对等方的对等状态是否显示为“已连接”。
将虚拟网络链接到专用 DNS 区域
在上一部分中创建专用终结点期间创建的专用 DNS 区域必须链接到 vnet-1 和 vnet-firewall 虚拟网络。
在门户顶部的搜索框中,输入 Private DNS 区域。 在搜索结果中选择Private DNS区域。
选择 privatelink.database.chinacloudapi.cn。
在“设置”中,选择“虚拟网络链接”。
选择+ 添加。
在“添加虚拟网络链接”中,输入或选择以下信息:
设置 值 虚拟网络链接 虚拟网络链接名称 输入“link-to-vnet-1”。 订阅 选择订阅。 虚拟网络 选择 vnet-1 (test-rg)。 配置 将“启用自动注册”的默认值保留为未选中状态。 选择“确定”。
选择+ 添加。
在“添加虚拟网络链接”中,输入或选择以下信息:
设置 值 虚拟网络链接 虚拟网络链接名称 输入 link-to-vnet-firewall。 订阅 选择订阅。 虚拟网络 选择“vnet-firewall (test-rg)”。 配置 将“启用自动注册”的默认值保留为未选中状态。 选择“确定”。
在 vnet-1 和 vnet-private-endpoint 之间创建路由
vnet-1 和 vnet-private-endpoint 之间的网络链接不存在。 必须创建一个路由,以允许流量通过Azure Firewall在虚拟网络之间流动。
路由通过 Azure Firewall 将来自 vnet-1 的流量发送到虚拟网络 vnet-private-endpoint 地址空间。
在门户顶部的搜索框中,输入“路由表”。 在搜索结果中选择“路由表”。
选择+ 新建。
在“创建路由表”的“基本信息”选项卡中,输入或选择以下信息:
设置 值 项目详细信息 订阅 选择订阅。 资源组 选择 test-rg。 实例详细信息 区域 选择“中国东部 2”。 名称 输入“vnet-1-to-vnet-firewall”。 传播网关路由 保留默认值“是”。 选择“查看 + 创建”。
选择 创建。
在门户顶部的搜索框中,输入“路由表”。 在搜索结果中选择“路由表”。
选择“vnet-1-to-vnet-firewall”。
在“设置”中选择“路由”。
选择+ 添加。
在“添加路由”中,输入或选择以下信息:
设置 值 路由名称 输入以下内容subnet-1-to-subnet-private-endpoint。 目标类型 选择“IP 地址”。 目标 IP 地址/CIDR 范围 输入 10.1.0.0/16。 下一跳类型 选择“虚拟设备”。 下一跳地址 输入10.2.1.4。 选择 并添加。
在“设置”中选择“子网”。
选择“+ 关联”。
在“关联子网”中,输入或选择以下信息:
设置 值 虚拟网络 选择“vnet-1 (test-rg)”。 子网 选择 subnet-1。 选择“确定”。
在 Azure Firewall 中配置应用程序规则
创建应用程序规则以允许从 vnet-1 到 Azure SQL 服务器server-name.database.chinacloudapi.cn的专用终结点通信。 将 server-name 替换为Azure SQL服务器的名称。
在门户顶部的搜索框中,输入“防火墙”。 在搜索结果中选择“防火墙策略”。
在“防火墙策略”中,选择“firewall-policy”。
在“设置” 中选择“应用程序规则”。
选择+ 添加规则集合。
在“添加规则集合”中,输入或选择以下信息:
设置 值 名称 输入“rule-collection-sql”。 规则集合类型 保留“应用程序”的选择。 优先级 输入 100。 规则集合操作 选择“允许”。 规则集合组 保留“DefaultApplicationRuleCollectionGroup”的默认值。 Rules 规则 1 名称 输入“SQLPrivateEndpoint”。 源类型 选择“IP 地址”。 Source 输入“10.0.0.0/16” 协议 输入“mssql:1433” 目标类型 选择FQDN。 目标 输入 server-name.database.chinacloudapi.cn。 选择 并添加。
测试从虚拟机到Azure SQL的连接
在门户顶部的搜索框中,输入 虚拟机。 在搜索结果中,选择“虚拟机”。
选择 vm-1。
在“概述”部分中,选择“连接”,然后选择“通过 Bastion 连接”。
在 Bastion 连接页中,输入或选择以下信息:
设置 值 身份验证类型 从本地文件选择 SSH 私钥。 用户名 输入创建的用户名。 本地文件 选择下载的 vm-1 密钥 私钥文件。 选择 连接。
若要验证专用终结点的名称解析,请在终端窗口中输入以下命令:
nslookup server-name.database.chinacloudapi.cn将收到类似于以下示例的消息。 返回的 IP 地址是专用终结点的专用 IP 地址。
Server: 127.0.0.53 Address: 127.0.0.53#53 Non-authoritative answer: sql-server-8675.database.chinacloudapi.cncanonical name = sql-server-8675.privatelink.database.chinacloudapi.cn. Name:sql-server-8675.privatelink.database.chinacloudapi.cn Address: 10.1.0.4从 在 Linux 上安装 SQL Server 命令行工具 sqlcmd 和 bcp 安装 SQL server 命令行工具。 安装完成后,继续执行后续步骤。
使用以下命令连接到在前面步骤中创建的 SQL Server。
将 <server-admin> 替换为在 SQL 服务器创建时输入的管理员用户名。
将 admin-password<> 替换为在 SQL Server 创建期间输入的管理员密码。
将 server-name 替换为 SQL 服务器的名称。
sqlcmd -S server-name.database.chinacloudapi.cn -U '<server-admin>' -P '<admin-password>'成功登录后,会显示 SQL 命令提示符。 输入 exit 可退出 sqlcmd 工具。
验证Azure Firewall日志中的流量
在门户顶部的搜索框中,输入 Log Analytics。 在搜索结果中选择Log Analytics。
选择 Log Analytics 工作区。 在此示例中,工作区名为“log-analytics-workspace”。
在“常规”设置中,选择“日志”。
在搜索框中的示例“查询”中,输入“应用程序规则”。 在“网络”中返回的结果中,为“应用程序规则日志数据”选择“运行”按钮。
在日志查询输出中,验证 server-name.database.chinacloudapi.cn 是否列在 FQDN 下, SQLPrivateEndpoint 列在 Rule 下。
清理资源
使用创建的资源之后,可以删除资源组及其所有资源:
在Azure门户中,搜索并选择Resource 组。
在“资源组”页上,选择“test-rg”资源组。
在“test-rg”页上,选择“删除资源组”。
在“输入资源组名称以确认删除”中输入“test-rg”,然后选择“删除”。