首页 > 解决方案 > Azure Key Vault 返回 403 并显示“此 TCP 连接不允许访问 {host}”

问题描述

当我尝试使用专用链接访问我的 Key Vault 时(或者可能不是,不确定),服务返回 403 ( Forbidden) 并显示以下消息:

This TCP connection does not allow access to {host}.

这是什么原因造成的?

标签: azureazure-keyvaultazure-private-linkazure-private-dns-zone

解决方案


这可能是由以下原因引起的:

您到 Key Vault 的 DNS 记录指向错误的 IP 地址

这是最常见的原因。以下步骤有助于诊断:

  1. 转到出现错误的虚拟机或客户端。
  2. 运行nslookup <key-vault-name>.vault.azure.net或相应的命令来解析 IP 地址(host <key-vault-name>.vault.azure.net对于大多数 Linux)。
  3. 记下 IP 地址。
  4. 使用 Azure 门户,打开 Key Vault 资源并选择Networking > Private Endpoint Connections
  5. 单击专用端点列下的链接。这将打开 Private Endpoint 资源。
  6. 单击网络接口字段中的链接。这将打开 NIC 资源。
  7. 检查专用 IP 地址字段。这必须与您在第 2 步中输入的nslookuphost命令相匹配。如果不匹配,则必须修复。有关详细说明,请参阅Azure 文档的 validate-the-dns-resolution主题。

您的客户端或您正在使用的某些代理host在向 Key Vault 的请求的标头中发送了错误的值

访问 Key Vault 时,HTTPhost标头必须始终与 Key Vault 主机名匹配。这是绝大多数客户端的默认行为,但某些客户端允许自定义。此外,如果您使用代理,代理可能会更改此值。

  1. 转到 Azure 门户中的 Key Vault 资源,然后在“概述”选项卡中,检查Vault URI属性的值。
  2. 从该属性中提取主机名。例如,如果 Vault URI 是https://contoso.vault.azure.net/,那么hostheader 的值必须是contoso.vault.azure.net
  3. 检查您的客户端或代理设置。检查 HTTP 处理程序、代理处理程序、名称解析处理程序等。确保host发送到 Key Vault 服务的标头与您在步骤 2 中捕获的标头匹配。
  4. 还要确保您的客户端确实将主机名解析为您的 Key Vault 的 IP 地址(请参阅上一节)。

您的私有端点未处于“已批准”状态,或者已获得批准但未成功配置

这种情况不常见,但可能会在您从服务端点迁移到专用端点时发生,并且迁移未完成。以下步骤有助于诊断:

  1. 转到 Azure 门户中的 Key Vault 资源,然后选择Networking > Private Endpoint Connections
  2. 检查连接是否被批准并且配置状态是否成功。如果不是这种情况,请通过批准或重新创建专用终结点资源来修复。
  3. 如果连接获得批准并且配置成功,请单击专用终结点列下方的链接。这将打开 Private Endpoint 资源。
  4. 检查属性Provisioning stateConnection status。他们必须分别显示SucceededApproved。如果他们不这样做,您必须批准或重新创建专用终结点资源。
  5. 如果 Key Vault 资源和 Private Endpoint 资源中报告的值都被批准并成功,则必须仔细检查其他可能的原因。

推荐阅读