azure - Azure Key Vault 返回 403 并显示“此 TCP 连接不允许访问 {host}”
问题描述
当我尝试使用专用链接访问我的 Key Vault 时(或者可能不是,不确定),服务返回 403 ( Forbidden
) 并显示以下消息:
This TCP connection does not allow access to {host}.
这是什么原因造成的?
解决方案
这可能是由以下原因引起的:
您到 Key Vault 的 DNS 记录指向错误的 IP 地址
这是最常见的原因。以下步骤有助于诊断:
- 转到出现错误的虚拟机或客户端。
- 运行
nslookup <key-vault-name>.vault.azure.net
或相应的命令来解析 IP 地址(host <key-vault-name>.vault.azure.net
对于大多数 Linux)。 - 记下 IP 地址。
- 使用 Azure 门户,打开 Key Vault 资源并选择Networking > Private Endpoint Connections。
- 单击专用端点列下的链接。这将打开 Private Endpoint 资源。
- 单击网络接口字段中的链接。这将打开 NIC 资源。
- 检查专用 IP 地址字段。这必须与您在第 2 步中输入的
nslookup
或host
命令相匹配。如果不匹配,则必须修复。有关详细说明,请参阅Azure 文档的 validate-the-dns-resolution主题。
您的客户端或您正在使用的某些代理host
在向 Key Vault 的请求的标头中发送了错误的值
访问 Key Vault 时,HTTPhost
标头必须始终与 Key Vault 主机名匹配。这是绝大多数客户端的默认行为,但某些客户端允许自定义。此外,如果您使用代理,代理可能会更改此值。
- 转到 Azure 门户中的 Key Vault 资源,然后在“概述”选项卡中,检查Vault URI属性的值。
- 从该属性中提取主机名。例如,如果 Vault URI 是
https://contoso.vault.azure.net/
,那么host
header 的值必须是contoso.vault.azure.net
。 - 检查您的客户端或代理设置。检查 HTTP 处理程序、代理处理程序、名称解析处理程序等。确保
host
发送到 Key Vault 服务的标头与您在步骤 2 中捕获的标头匹配。 - 还要确保您的客户端确实将主机名解析为您的 Key Vault 的 IP 地址(请参阅上一节)。
您的私有端点未处于“已批准”状态,或者已获得批准但未成功配置
这种情况不常见,但可能会在您从服务端点迁移到专用端点时发生,并且迁移未完成。以下步骤有助于诊断:
- 转到 Azure 门户中的 Key Vault 资源,然后选择Networking > Private Endpoint Connections。
- 检查连接是否被批准并且配置状态是否成功。如果不是这种情况,请通过批准或重新创建专用终结点资源来修复。
- 如果连接获得批准并且配置成功,请单击专用终结点列下方的链接。这将打开 Private Endpoint 资源。
- 检查属性Provisioning state和Connection status。他们必须分别显示Succeeded和Approved。如果他们不这样做,您必须批准或重新创建专用终结点资源。
- 如果 Key Vault 资源和 Private Endpoint 资源中报告的值都被批准并成功,则必须仔细检查其他可能的原因。
推荐阅读
- reactjs - 如何在材质 ui select menuItem 中映射字符串数组?
- python - 如何使用curl命令使用python下载bitbucket中的文件
- postgresql - 我尝试将 SQLite 数据库转换为 Postgres,我不知道 postgres 数据库的 DATETIME 是否相等
- angular - 使用 FormArray 对反应式表单的有效性进行单元测试
- javascript - 简单的设置 react redux 与 next.js (React)
- spring-boot - Spring Kafka 项目的 Debezium 发件箱错误
- android - Arrarylist 大小为 0,在 android 中具有静态 recyclerview 列表
- socket.io - 如何从 socket.io>3ver. 发出 blob 视频?
- python - pycharm(python)以不同的颜色显示函数 - 有时是白色,有时是黄色 - 为什么会这样?
- sql - 如何从结果查询创建表?