Compartilhar via

将托管 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 地址。 虚拟网络与服务之间的流量通过微软主干网络传输,从而消除了来自公共互联网的风险暴露。 可以连接到 Azure 资源的一个实例,从而实现访问控制的最高粒度级别。

有关详细信息,请参阅 什么是 Azure Private Link?

注意事项

托管 HSM 不支持 IP 规则或虚拟网络服务终结点

先决条件

若要将托管 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 {RG} --default-action deny # Turn on firewall

az network vnet create -g {RG} -n {vNet NAME} --location {REGION}           # Create a Virtual Network

    # Create a Subnet
az network vnet subnet create -g {RG} --vnet-name {vNet NAME} --name {subnet NAME} --address-prefixes {addressPrefix}

    # Disable Virtual Network Policies
az network vnet subnet update --name {subnet NAME} --resource-group {RG} --vnet-name {vNet NAME} --disable-private-endpoint-network-policies true

    # Create a Private DNS Zone
az network private-dns zone create --resource-group {RG} --name privatelink.managedhsm.chinacloudapi.cn

    # Link the Private DNS Zone to the Virtual Network
az network private-dns link vnet create --resource-group {RG} --virtual-network {vNet NAME} --zone-name privatelink.managedhsm.chinacloudapi.cn --name {dnsZoneLinkName} --registration-enabled true

允许受信任的服务访问托管 HSM

启用防火墙后,所有来自未使用专用终结点连接的位置对 HSM 的访问将被拒绝,包括公共互联网和 Azure 服务。 如果要允许 Microsoft 服务访问您托管 HSM 中的密钥,请使用--bypass AzureServices 选项。 各个实体(如Azure Storage帐户或 Azure SQL Server)仍需要有特定的角色分配才能access密钥。

注意事项

仅支持特定的受信任服务使用方案。 有关详细信息,请参阅 受信任的服务使用方案的列表

az keyvault update-hsm --hsm-name {HSM NAME} -g {RG} --default-action deny --bypass AzureServices

创建专用终结点(自动批准)

az network private-endpoint create --resource-group {RG} --vnet-name {vNet NAME} --subnet {subnet NAME} --name {Private Endpoint Name}  --private-connection-resource-id "/subscriptions/{AZURE SUBSCRIPTION ID}/resourceGroups/{RG}/providers/Microsoft.KeyVault/managedHSMs/{HSM NAME}" --group-id managedhsm --connection-name {Private Link Connection Name} --location {AZURE REGION}

注意事项

如果删除此 HSM,专用终结点将停止工作。 如果稍后恢复(取消删除)此 HSM,则必须重新创建新的专用终结点。

创建专用终结点(手动请求批准)

az network private-endpoint create --resource-group {RG} --vnet-name {vNet NAME} --subnet {subnet NAME} --name {Private Endpoint Name}  --private-connection-resource-id "/subscriptions/{AZURE SUBSCRIPTION ID}/resourceGroups/{RG}/providers/Microsoft.KeyVault/managedHSMs/{HSM NAME}" --group-id managedhsm --connection-name {Private Link Connection Name} --location {AZURE REGION} --manual-request
# Show Connection Status
az network private-endpoint show --resource-group {RG} --name {Private Endpoint Name}

# Approve a Private Link Connection Request
az keyvault private-endpoint-connection approve --description {"OPTIONAL DESCRIPTION"} --resource-group {RG} --hsm-name {HSM NAME} --name {PRIVATE LINK CONNECTION NAME}

# Deny a Private Link Connection Request
az keyvault private-endpoint-connection reject --description {"OPTIONAL DESCRIPTION"} --resource-group {RG} --hsm-name {HSM NAME} --name {PRIVATE LINK CONNECTION NAME}

# Delete a Private Link Connection Request
az keyvault private-endpoint-connection delete --resource-group {RG} --hsm-name {HSM NAME} --name {PRIVATE LINK CONNECTION NAME}

添加私有 DNS 记录

# Determine the Private Endpoint IP address
az network private-endpoint show -g {RG} -n {PE NAME}      # look for the property networkInterfaces then id; the value must be placed on {PE NIC} below.
az network nic show --ids {PE 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 {RG}
az network private-dns record-set a add-record -g {RG} -z "privatelink.managedhsm.chinacloudapi.cn" -n {HSM NAME} -a {NIC IP}
az network private-dns record-set list -g {RG} -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 portal

在“网络”选项卡中:

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

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

nslookup <your-HSM-name>.managedhsm.chinacloudapi.cn

如果运行 ns 查找命令以通过公共终结点解析托管 HSM 的 IP 地址,则会看到如下所示的结果:

c:\ >nslookup <your-hsm-name>.managedhsm.chinacloudapi.cn

Non-authoritative answer:
Name:    
Address:  (public IP address)
Aliases:  <your-hsm-name>.managedhsm.chinacloudapi.cn

如果运行 ns 查找命令以通过专用终结点解析托管 HSM 的 IP 地址,则会看到如下所示的结果:

c:\ >nslookup your_hsm_name.managedhsm.chinacloudapi.cn

Non-authoritative answer:
Name:    
Address:  10.1.0.5 (private IP address)
Aliases:  <your-hsm-name>.managed.chinacloudapi.cn
          <your-hsm-name>.privatelink.managedhsm.chinacloudapi.cn

故障排除指南

  • 检查以确保专用终结点处于已批准状态。

    1. 使用 az keyvault private-endpoint-connections show 子命令查看专用终结点连接的状态。
    2. 请确保连接状态为“已批准”并且预配状态为“成功”。
    3. 确保你使用的虚拟网络与指定的虚拟网络匹配。
  • 检查以确保你有Private DNS区域资源。

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

    1. 如果专用区域 DNS 未链接到virtual network,则源自virtual network的 DNS 查询将返回 HSM 的公共 IP 地址。
    2. 导航到 Azure 门户中的专用 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 portal 中打开专用终结点资源来确认 IP 地址。
    2. 在 Azure 门户中导航到 Microsoft.Network/privateEndpoints 资源
    3. 在概述页中,查找网络接口并选择该链接。
    4. 该链接显示包含属性“专用 IP 地址”的 NIC 资源的概述。
    5. 验证 A 记录中是否指定了正确的 IP 地址。

限制和设计注意事项

注意事项

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

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

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

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

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

后续步骤