共用方式為

将托管 HSM 与 Azure Private Link 集成

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 地址。

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

您应该验证专用终结点资源所在的同一子网中的资源是否通过专用 IP 地址连接到 HSM,并确保它们具有正确的私有 DNS 区域集成。

首先,按照 在 Azure 门户中创建Windows虚拟机

在“网络”选项卡中:

  1. 指定Virtual network和子网。 可以创建新的virtual network或选择现有virtual network。 如果选择现有的,请确保区域匹配。
  2. 指定公共 IP 资源。
  3. 在“NIC 网络安全组”中选择“无”。
  4. 在“负载均衡”中选择“否”。

打开命令行并运行以下命令:

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

故障排除指南

  • 检查专用终结点是否处于已批准状态。

    1. az keyvault private-endpoint-connections show使用子命令查看专用终结点连接的状态。

    2. 确保连接状态 已批准 ,并且预配状态 为“成功”。

    3. 确保虚拟网络与所使用的虚拟网络匹配。

  • 检查以确保您有一个专用 DNS 区域资源。

    1. 必须具有名称完全为 privatelink.managedhsm.chinacloudapi.cn 的 Private DNS 区域资源。
    2. 若要了解如何设置此项,请参阅以下链接。 Private DNS 区域
  • 检查以确保Private DNS区域已链接到Virtual Network。 如果仍然返回公共 IP 地址,那么这可能是问题所在。

    1. 如果专用区域 DNS 未链接到virtual network,则源自virtual network的 DNS 查询将返回 HSM 的公共 IP 地址。
    2. 在Azure门户中导航到Private DNS区域资源,然后选择虚拟网络链接选项。
    3. 虚拟网络必须被列出,以执行对 HSM 的调用。
    4. 如果它不存在,请添加它。
    5. 有关详细步骤,请参阅以下文档 链接虚拟网络到私有 DNS 区域
  • 检查以确保专用 DNS 区域未丢失 HSM 的 A 记录。

    1. 导航到“Private DNS区域”页。
    2. 选择“概览”,并检查是否有具有您的 HSM 简单名称的 A 记录。 不要指定任何后缀。
    3. 请务必检查拼写是否正确,并创建或修复 A 记录。 TTL 可以设置为 3600(1小时)。
    4. 确保指定了正确的专用 IP 地址。
  • 检查以确保 A 记录具有正确的 IP 地址。

    1. 可以通过在Azure门户中打开专用终结点资源来确认 IP 地址。
    2. 导航到 Azure 门户中的 Microsoft.Network/privateEndpoints 资源
    3. 在概述页中,查找网络接口并选择该链接。
    4. 该链接显示包含属性“专用 IP 地址”的 NIC 资源的概述。
    5. 验证 A 记录中是否指定了正确的 IP 地址。

限制和设计注意事项

注意事项

按订阅启用专用终结点的托管 HSM 数量有一个可调整的限制。 显示为“每个托管 HSM 的最大专用终结点数”的限制是默认限制。 若要请求增加订阅的限制,请创建Azure support票证。 我们会逐个案例批准这些请求。

pricing:有关定价信息,请参阅 Azure Private Link 定价

每个托管 HSM 的专用终结点数目上限:64。

每个订阅的默认托管 HSM(包括专用终结点)数量:400。

有关详细信息,请参阅 Azure Private Link 服务:限制

后续步骤