你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

什么是 Azure 专用链接的 Azure Managed Redis?

本文介绍如何创建虚拟网络并将其与专用终结点的 Azure 托管 Redis 实例配合使用。 Azure 专用终结点是一个网络接口,通过 Azure 专用链路(Azure Private Link)以私密且安全的方式将您连接到托管的 Redis。

此过程通过两个步骤完成:

  1. 首先,创建用于缓存的虚拟网络。

  2. 然后,具体取决于您是否已经有了缓存:

    1. 创建新缓存时添加虚拟网络。
    2. 将虚拟网络添加到 现有缓存

重要

建议使用专用终结点连接到虚拟网络,以便在网络层保护 Azure 托管 Redis 资源。

先决条件

使用子网创建虚拟网络

首先,使用门户创建虚拟网络。 创建新缓存或使用现有缓存时使用此虚拟网络。

  1. 登录到 Azure 门户,然后选择“创建资源”。

  2. 在“ 新建 ”窗格中,选择“ 网络 ”,然后选择 “虚拟网络”。

  3. 选择“添加”,创建虚拟网络。

  4. “创建虚拟网络”中,在 “基本信息 ”窗格中输入或选择此信息:

    设置 建议值 DESCRIPTION
    订阅 单击下拉箭头并选择你的订阅。 在其中创建此虚拟网络的订阅。
    资源组 单击下拉箭头并选择一个资源组,或者选择新建并输入新的资源组名称。 要在其中创建虚拟网络和其他资源的资源组的名称。 将所有应用资源放入一个资源组可以轻松地统一管理或删除这些资源。
    虚拟网络名称 输入虚拟网络名称。 该名称必须满足以下要求:以字母或数字开头;以字母、数字或下划线结尾;只包含字母、数字、下划线、句点或连字符。
    区域 下拉并选择一个区域。 选择使用你的虚拟网络的其他服务附近的区域
  5. 选择 “IP 地址 ”窗格,或选择窗格底部的“ 下一步:IP 地址 ”按钮。

  6. “IP 地址 ”窗格中,指定 IPv4 地址空间IPv6 地址空间。 对于此过程,请使用 IPv4 地址空间

  7. 选择“添加子网”。“子网名称”下,选择 默认值 或添加名称。 还可以根据需要编辑应用程序的子网属性。

  8. 选择 并添加

  9. 选择 “审阅 + 创建 ”窗格,或选择“ 审阅 + 创建 ”按钮。

  10. 验证所有信息是否正确,然后选择“ 创建 ”以创建虚拟网络。

使用连接到虚拟网络子网的专用终结点创建 Azure 托管 Redis 实例

若要创建 Azure 托管 Redis 缓存实例并添加专用终结点,请执行以下步骤。 首先必须 创建一个虚拟网络 才能用于缓存。

  1. 转到 Azure 门户主页,或打开边栏菜单,然后选择“ 创建资源”。

  2. 在搜索框中,键入 Azure 托管 Redis。 将搜索范围仅限于 Azure 服务,然后选择Azure 托管 Redis

  3. “新建 Azure 托管 Redis ”窗格中,配置新缓存的基本设置。

  4. 选择网络选项卡,或在工作窗格底部选择下一步:网络

  5. 在“ 网络 ”窗格中,选择连接方法的 专用终结点

  6. 选择 “添加专用终结点 ”以添加专用终结点。

  7. 在“ 创建专用终结点 ”窗格中,使用在上一部分创建的虚拟网络和子网配置专用终结点的设置,然后选择“ 添加”。

  8. 继续执行其他选项卡,根据需要填写配置设置。

  9. 选择“查看 + 创建”。 你会看到“查看 + 创建”窗格,其中 Azure 会验证配置。

  10. 显示绿色的“已通过验证”消息后,选择创建

创建缓存需要花费片刻时间。 可以在“Azure 托管 Redis 概述 ”窗格中监视进度。 如果状态显示为正在运行,则表示该缓存可供使用。

将专用终结点添加到现有的 Azure Managed Redis 实例

在本部分中,你将添加一个专用终结点到现有的 Azure 托管 Redis 实例。

  1. 创建用于 现有缓存的虚拟网络。

  2. 请在门户中打开你的缓存,并添加你在第一步创建的子网。

    创建专用终结点后,请执行以下步骤:

  3. 在 Azure 门户中,选择要向其中添加专用终结点的缓存实例。

  4. “管理”下的“资源”菜单中选择“专用终结点”,为缓存创建专用终结点。

  5. “专用终结点 ”窗格中,选择“ + 专用终结点 ”以添加专用终结点的设置。

    设置 建议值 DESCRIPTION
    订阅 单击下拉箭头并选择你的订阅。 在其中创建了虚拟网络的订阅。
    资源组 单击下拉箭头并选择一个资源组,或者选择新建并输入新的资源组名称。 要在其中创建专用终结点和其他资源的资源组的名称。 将所有应用资源放入一个资源组可以轻松地统一管理或删除这些资源。
    名称 输入专用终结点名称。 该名称必须满足以下要求:以字母或数字开头;以字母、数字或下划线结尾;只能包含字母、数字、下划线、句点或连字符。
    网络接口名称 根据 名称自动生成。 该名称必须满足以下要求:以字母或数字开头;以字母、数字或下划线结尾;只能包含字母、数字、下划线、句点或连字符。
    区域 下拉并选择一个区域。 选择距离使用您专用终结点的其他服务较近的区域
  6. 选择底部窗格中的下一步:资源

  7. “资源 ”窗格中,选择 订阅

    1. 选择 资源类型 作为 Microsoft.Cache/redisEnterprise
    2. 选择要将专用终结点连接到 Resource 属性的缓存。
  8. 选择窗格底部的“ 下一步:虚拟网络 ”按钮。

  9. “虚拟网络”窗格中,选择在上一部分创建的虚拟网络子网

  10. 选择窗格底部的“ 下一步:标记 ”按钮。

  11. (可选)在 “标记 ”窗格中,如果要对资源进行分类,请输入名称和值。

  12. 选择“查看 + 创建”。 你会看到 “查看 + 创建 ”窗格,其中 Azure 会验证配置。

  13. 显示绿色的“已通过验证”消息后,选择“创建” 。

启用公用网络访问

使用此属性 publicNetworkAccess ,可以独立于虚拟网络(VNet)的专用链接来限制公共 IP 流量。

以前,Azure 托管 Redis 设计具有两种互斥的网络配置:开启公共流量需要禁用专用终结点,而启用专用终结点则会自动限制所有公共访问。 此设置确保了明确的网络边界,但对于同时需要公共和专用访问的迁移等方案,它限制了灵活性。

现在,以下网络配置现已由publicNetworkAccess支持:

  • 没有专用链接的公共流量
  • 具有专用链接的公共流量
  • 不通过专用链接处理的专用流量
  • 使用专用链接的私有流量

要禁用 publicNetworkAccess 并保护缓存,使用虚拟网络 (VNet) 以及专用终结点和专用链接是最安全的选项。 VNet 支持网络控制,并添加额外的安全层。 专用链接将流量限制为来自虚拟网络的单向通信,从而提供增强的网络隔离。 这意味着,即使 Azure 托管 Redis 资源遭到入侵,虚拟网络中的其他资源也会保持安全。

通过门户更新缓存以使用publicNetworkAccess

使用 Azure 门户按照说明将 publicNetworkAccess 添加到现有缓存中。

  1. 转到 Azure 门户

  2. 浏览到资源菜单中的 Azure 托管 Redis 资源 | 管理 | 网络

  3. 选择“ 从所有网络启用公共访问 ”以启用公共访问。 若要禁用公共访问,请选择“ 禁用公共访问”并使用专用访问

    Azure 门户的屏幕截图,其中显示了 publicNetworkAccess 属性设置,其中包含用于禁用或启用公用网络访问的选项。

API 更改

此属性 publicNetworkAccessMicrosoft.Cache redisEnterprise 2025-07-01 中引入。 由于此更改与安全相关的中断性变更,因此 2026 年 10 月将弃用 2025-07-01 之前的 API 版本。

publicNetworkAccess在 2025-07-01 之前创建的缓存中,属性值实际上为 NULL。 将值 Enabled 设置为或 Disabled设置为 NULL 后,无法将其重置回 NULL。

2026 年 10 月之后:

  • 只能使用 API 版本 2025-07-01 或更高版本设置 publicNetworkAccess 属性。
  • 不能再使用 2025-07-01 之前的版本发送 API 调用。
  • 使用较早版本 API 预配的旧缓存可以继续运行,但其他操作需要使用 2025-07-01 或更高版本的 API 进行调用。

使用 Azure PowerShell 创建连接到专用终结点的 Azure 托管 Redis 缓存

若要为现有 Azure 托管 Redis 实例创建名为 MyPrivateEndpoint 的专用终结点,请运行以下 PowerShell 脚本。 用环境的详细信息替换变量值:


$SubscriptionId = "<your Azure subscription ID>"
# Resource group where the Azure Managed Redis instance and virtual network resources are located
$ResourceGroupName = "myResourceGroup"
# Name of the Azure Managed Redis instance
$redisCacheName = "mycacheInstance"

# Name of the existing virtual network
$VNetName = "myVnet"
# Name of the target subnet in the virtual network
$SubnetName = "mySubnet"
# Name of the private endpoint to create
$PrivateEndpointName = "MyPrivateEndpoint"
# Location where the private endpoint can be created. The private endpoint should be created in the same location where your subnet or the virtual network exists
$Location = "westcentralus"

$redisCacheResourceId = "/subscriptions/$($SubscriptionId)/resourceGroups/$($ResourceGroupName)/providers/Microsoft.Cache/redisEnterprise/$($redisCacheName)"

$privateEndpointConnection = New-AzPrivateLinkServiceConnection -Name "myConnectionPS" -PrivateLinkServiceId $redisCacheResourceId -GroupId "redisEnterprise"
 
$virtualNetwork = Get-AzVirtualNetwork -ResourceGroupName  $ResourceGroupName -Name $VNetName  
 
$subnet = $virtualNetwork | Select -ExpandProperty subnets | Where-Object  {$_.Name -eq $SubnetName}  
 
$privateEndpoint = New-AzPrivateEndpoint -ResourceGroupName $ResourceGroupName -Name $PrivateEndpointName -Location "westcentralus" -Subnet  $subnet -PrivateLinkServiceConnection $privateEndpointConnection

使用 Azure Powershell 检索专用终结点

若要获取专用终结点的详细信息,请使用以下 PowerShell 命令:

Get-AzPrivateEndpoint -Name $PrivateEndpointName -ResourceGroupName $ResourceGroupName

使用 Azure Powershell 删除专用终结点

若要删除专用终结点,请使用以下 PowerShell 命令:

Remove-AzPrivateEndpoint -Name $PrivateEndpointName -ResourceGroupName $ResourceGroupName

使用 Azure CLI 创建连接到专用终结点的 Azure 托管 Redis 缓存

若要为现有 Azure 托管 Redis 实例创建名为 MyPrivateEndpoint 的专用终结点,请运行以下 Azure CLI 脚本。 用环境的详细信息替换变量值:

# Resource group where the Azure Managed Redis and virtual network resources are located
ResourceGroupName="myResourceGroup"

# Subscription ID where the Azure Managed Redis and virtual network resources are located
SubscriptionId="<your Azure subscription ID>"

# Name of the existing Azure Managed Redis instance
redisCacheName="mycacheInstance"

# Name of the virtual network to create
VNetName="myVnet"

# Name of the subnet to create
SubnetName="mySubnet"

# Name of the private endpoint to create
PrivateEndpointName="myPrivateEndpoint"

# Name of the private endpoint connection to create
PrivateConnectionName="myConnection"

az network vnet create \
    --name $VNetName \
    --resource-group $ResourceGroupName \
    --subnet-name $SubnetName

az network vnet subnet update \
    --name $SubnetName \
    --resource-group $ResourceGroupName \
    --vnet-name $VNetName \
    --disable-private-endpoint-network-policies true

az network private-endpoint create \
    --name $PrivateEndpointName \
    --resource-group $ResourceGroupName \
    --vnet-name $VNetName  \
    --subnet $SubnetName \
    --private-connection-resource-id "/subscriptions/$SubscriptionId/resourceGroups/$ResourceGroupName/providers/Microsoft.Cache/redisEnterprise/$redisCacheName" \
    --group-ids "redisEnterprise" \
    --connection-name $PrivateConnectionName

使用 Azure CLI 检索专用终结点

若要获取专用终结点的详细信息,请使用以下 CLI 命令:

az network private-endpoint show --name MyPrivateEndpoint --resource-group MyResourceGroup

使用 Azure CLI 删除专用终结点

若要删除专用终结点,请使用以下 CLI 命令:

az network private-endpoint delete --name MyPrivateEndpoint --resource-group MyResourceGroup

Azure Managed Redis 专用终结点专用 DNS 区域值

应用程序应连接到端口 <cachename>.<region>.redis.azure.net 上的 10000。 在订阅中自动创建名为 *.privatelink.redis.azure.net 的专用 DNS 区域。 专用 DNS 区域对于使用专用终结点建立 TLS 连接至关重要。 避免在配置中使用<cachename>.privatelink.redis.azure.net进行客户端连接。

有关详细信息,请参阅 Azure 服务 DNS 区域配置

FAQ

为什么无法连接到专用终结点?

专用终结点不支持哪些功能?

  • 对于 Azure 托管的 Redis,专用终结点的使用不受限制。

如何验证我的专用终结点配置是否正确?

请在门户的“资源”菜单中导航至“概述”。 可以在工作窗格中查看缓存的“主机名”。 要验证命令是否正确解析到缓存的专用 IP 地址,请在连接到该专用终结点的 VNet 内运行类似 nslookup <hostname> 的命令。

如何将专用终结点更改为禁用或启用公用网络访问?

要在 Azure 门户中更改值,请执行以下步骤:

  1. 在 Azure 门户中,搜索“Azure 托管 Redis”。 然后,按 Enter 或者在搜索建议中选择该服务。

  2. 选择要更改其公用网络访问值的缓存实例。

  3. 在屏幕左侧选择“专用终结点”。

  4. 删除私有终结点。

如何在不同的虚拟网络中拥有多个终结点?

若要在不同的虚拟网络中具有多个专用终结点,必须在创建专用终结点之前手动将专用 DNS 区域配置为多个虚拟网络。 有关详细信息,请参阅 Azure 专用终结点 DNS 配置

如果删除缓存上的所有专用终结点,会发生什么情况?

如果删除 Azure 托管 Redis 缓存上的所有专用终结点,则网络默认具有公共网络访问权限。

是否对专用终结点启用了网络安全组 (NSG)?

为专用终结点禁用了网络策略。 若要在专用终结点流量上强制实施网络安全组(NSG)和 User-Defined 路由(UDR)规则,必须在子网上启用网络策略。 禁用网络策略(部署专用终结点时),NSG 和 UDR 规则不适用于专用终结点处理的流量。 有关详细信息,请参阅管理专用终结点的网络策略。 NSG 和 UDR 规则将继续应用于同一子网中的其他工作负荷。

从客户端子网到专用终结点的流量使用 /32 前缀。 若要替代此默认路由行为,请使用 /32 路由创建相应的 UDR。

我的专用终结点实例不在我的 VNet 中,它如何与我的 VNet 关联?

专用终结点仅链接到 VNet。 由于它不在 VNet 中,因此无需修改依赖终结点的 NSG 规则。