Azure Private Link服务使你能够通过虚拟网络中的专用终结点访问Azure服务(例如托管 HSM、Azure Storage 和Azure Cosmos DB等)和Azure托管的客户/合作伙伴服务。
Azure专用终结点是一个网络接口,可将你专用且安全地连接到由Azure Private Link提供支持的服务。 专用终结点使用来自您 VNet 的专用 IP 地址,从而将该服务有效地融入到您的 VNet 中。 发往服务的所有流量都可以通过专用终结点路由,因此不需要网关、NAT 设备、ExpressRoute 或 VPN 连接或公共 IP 地址。 虚拟网络和服务之间的流量通过 Microsoft 骨干网传输,从而避免了暴露于公共互联网。 可以连接到 Azure 资源的实例,从而实现访问控制的最高粒度级别。
有关详细信息,请参阅 什么是 Azure Private Link?
注意事项
托管 HSM 不支持 Virtual Network Service Endpoints
先决条件
若要将托管 HSM 与Azure Private Link集成,需要:
- 一个托管 HSM。 有关详细信息,请参阅 预配并使用 Azure CLI 激活托管 HSM。
- Azure虚拟网络。
- 虚拟网络中的子网。
- 托管 HSM 和虚拟网络的所有者或贡献者权限。
- Azure CLI版本 2.25.0 或更高版本。 运行
az --version即可查找版本。 如果需要安装或升级,请参阅 安装 Azure CLI。
专用终结点和虚拟网络必须位于同一地区。 使用门户为专用终结点选择区域时,它会自动筛选该区域中的虚拟网络。 HSM 可以位于不同的区域。
你的专用终结点在虚拟网络中使用私有 IP 地址。
使用 CLI 建立与托管 HSM 的专用链接连接(初始设置)
az login # Login to Azure CLI
az account set --subscription <subscription-id> # Select your Azure Subscription
az group create -n <resource-group> -l <region> # Create a new Resource Group
az provider register -n Microsoft.KeyVault # Register KeyVault as a provider
az keyvault update-hsm --hsm-name <hsm-name> -g <resource-group> --default-action deny # Turn on firewall
az network vnet create -g <resource-group> -n <vnet-name> --location <region> # Create a Virtual Network
# Create a Subnet
az network vnet subnet create -g <resource-group> --vnet-name <vnet-name> --name <subnet-name> --address-prefixes <address-prefix>
# Disable Virtual Network Policies
az network vnet subnet update --name <subnet-name> --resource-group <resource-group> --vnet-name <vnet-name> --disable-private-endpoint-network-policies true
# Create a Private DNS Zone
az network private-dns zone create --resource-group <resource-group> --name privatelink.managedhsm.chinacloudapi.cn
# Link the Private DNS Zone to the Virtual Network
az network private-dns link vnet create --resource-group <resource-group> --virtual-network <vnet-name> --zone-name privatelink.managedhsm.chinacloudapi.cn --name <dns-zone-link-name> --registration-enabled true
允许受信任的服务访问托管 HSM
启用防火墙后,拒绝从不使用专用终结点连接的任何位置访问 HSM,包括公共 Internet 和Azure服务。 如果要允许 Microsoft 服务访问托管 HSM 中的密钥,请使用 --bypass AzureServices 选项。 各个实体(如Azure Storage帐户或 Azure SQL Server)仍需要有特定的角色分配才能访问密钥。
注意事项
仅支持特定的受信任服务使用方案。 有关详细信息,请参阅 受信任的服务使用方案的列表。
az keyvault update-hsm --hsm-name <hsm-name> -g <resource-group> --default-action deny --bypass AzureServices
创建专用终结点(自动批准)
az network private-endpoint create --resource-group <resource-group> --vnet-name <vnet-name> --subnet <subnet-name> --name <private-endpoint-name> --private-connection-resource-id "/subscriptions/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.KeyVault/managedHSMs/<hsm-name>" --group-id managedhsm --connection-name <private-link-connection-name> --location <region>
注意事项
如果删除此 HSM,专用终结点将停止工作。 如果稍后恢复(取消删除)此 HSM,则必须重新创建新的专用终结点。
创建专用终结点(手动请求批准)
az network private-endpoint create --resource-group <resource-group> --vnet-name <vnet-name> --subnet <subnet-name> --name <private-endpoint-name> --private-connection-resource-id "/subscriptions/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.KeyVault/managedHSMs/<hsm-name>" --group-id managedhsm --connection-name <private-link-connection-name> --location <region> --manual-request
管理私有链接连接
# Show Connection Status
az network private-endpoint show --resource-group <resource-group> --name <private-endpoint-name>
# Approve a Private Link Connection Request
az keyvault private-endpoint-connection approve --description "<description>" --resource-group <resource-group> --hsm-name <hsm-name> --name <private-link-connection-name>
# Deny a Private Link Connection Request
az keyvault private-endpoint-connection reject --description "<description>" --resource-group <resource-group> --hsm-name <hsm-name> --name <private-link-connection-name>
# Delete a Private Link Connection Request
az keyvault private-endpoint-connection delete --resource-group <resource-group> --hsm-name <hsm-name> --name <private-link-connection-name>
添加私有DNS记录
# Determine the Private Endpoint IP address
az network private-endpoint show -g <resource-group> -n <private-endpoint-name> # look for the property networkInterfaces then id; the value must be placed on <private-endpoint-nic> below.
az network nic show --ids <private-endpoint-nic> # look for the property ipConfigurations then privateIpAddress; the value must be placed on <nic-ip> below.
# https://docs.azure.cn/dns/private-dns-getstarted-cli#create-an-additional-dns-record
az network private-dns zone list -g <resource-group>
az network private-dns record-set a add-record -g <resource-group> -z "privatelink.managedhsm.chinacloudapi.cn" -n <hsm-name> -a <nic-ip>
az network private-dns record-set list -g <resource-group> -z "privatelink.managedhsm.chinacloudapi.cn"
# From home/public network, you wil get a public IP. If inside a vnet with private zone, nslookup will resolve to the private ip.
nslookup <hsm-name>.managedhsm.chinacloudapi.cn
nslookup <hsm-name>.privatelink.managedhsm.chinacloudapi.cn
验证private link连接是否正常工作
您应该验证专用终结点资源所在的同一子网中的资源是否通过专用 IP 地址连接到 HSM,并确保它们具有正确的私有 DNS 区域集成。
首先,按照
在“网络”选项卡中:
- 指定Virtual network和子网。 可以创建新的virtual network或选择现有virtual network。 如果选择现有的,请确保区域匹配。
- 指定公共 IP 资源。
- 在“NIC 网络安全组”中选择“无”。
- 在“负载均衡”中选择“否”。
打开命令行并运行以下命令:
nslookup <hsm-name>.managedhsm.chinacloudapi.cn
如果运行 nslookup 该命令以通过公共终结点解析托管 HSM 的 IP 地址,则会看到如下所示的结果:
c:\ >nslookup <hsm-name>.managedhsm.chinacloudapi.cn
Non-authoritative answer:
Name:
Address: (public IP address)
Aliases: <hsm-name>.managedhsm.chinacloudapi.cn
如果运行 nslookup 该命令以通过专用终结点解析托管 HSM 的 IP 地址,则会看到如下所示的结果:
c:\ >nslookup <hsm-name>.managedhsm.chinacloudapi.cn
Non-authoritative answer:
Name:
Address: 10.1.0.5 (private IP address)
Aliases: <hsm-name>.managed.chinacloudapi.cn
<hsm-name>.privatelink.managedhsm.chinacloudapi.cn
故障排除指南
检查专用终结点是否处于已批准状态。
az keyvault private-endpoint-connections show使用子命令查看专用终结点连接的状态。确保连接状态 已批准 ,并且预配状态 为“成功”。
确保虚拟网络与所使用的虚拟网络匹配。
检查以确保您有一个专用 DNS 区域资源。
- 必须具有名称完全为 privatelink.managedhsm.chinacloudapi.cn 的 Private DNS 区域资源。
- 若要了解如何设置此项,请参阅以下链接。 Private DNS 区域
检查以确保Private DNS区域已链接到Virtual Network。 如果仍然返回公共 IP 地址,那么这可能是问题所在。
- 如果专用区域 DNS 未链接到virtual network,则源自virtual network的 DNS 查询将返回 HSM 的公共 IP 地址。
- 在Azure门户中导航到Private DNS区域资源,然后选择虚拟网络链接选项。
- 虚拟网络必须被列出,以执行对 HSM 的调用。
- 如果它不存在,请添加它。
- 有关详细步骤,请参阅以下文档 链接虚拟网络到私有 DNS 区域
检查以确保专用 DNS 区域未丢失 HSM 的 A 记录。
- 导航到“Private DNS区域”页。
- 选择“概览”,并检查是否有具有您的 HSM 简单名称的 A 记录。 不要指定任何后缀。
- 请务必检查拼写是否正确,并创建或修复 A 记录。 TTL 可以设置为 3600(1小时)。
- 确保指定了正确的专用 IP 地址。
检查以确保 A 记录具有正确的 IP 地址。
- 可以通过在Azure门户中打开专用终结点资源来确认 IP 地址。
- 导航到 Azure 门户中的 Microsoft.Network/privateEndpoints 资源
- 在概述页中,查找网络接口并选择该链接。
- 该链接显示包含属性“专用 IP 地址”的 NIC 资源的概述。
- 验证 A 记录中是否指定了正确的 IP 地址。
限制和设计注意事项
注意事项
按订阅启用专用终结点的托管 HSM 数量有一个可调整的限制。 显示为“每个托管 HSM 的最大专用终结点数”的限制是默认限制。 若要请求增加订阅的限制,请创建Azure support票证。 我们会逐个案例批准这些请求。
pricing:有关定价信息,请参阅 Azure Private Link 定价。
每个托管 HSM 的专用终结点数目上限:64。
每个订阅的默认托管 HSM(包括专用终结点)数量:400。
有关详细信息,请参阅 Azure Private Link 服务:限制
后续步骤
- 详细了解 Azure Private Link
- 详细了解托管 HSM