导读:本期聚焦于白鲨创作的《Azure OpenAI Service如何配置私有网络终结点与身份认证?》,敬请观看详情。API Key写死在配置中心,一旦泄露,攻击者可以直接消耗Azure OpenAI额度,甚至读取历史对话。更隐蔽的风险是,资源默认暴露在公网,即使VNet内应用也绕道公网访问。要收敛这两层风险,需要同时配置私有网络终结点和Azure AD身份认证。本文将拆解Azure OpenAI Service的私网接入方式:先创建私有终结点并绑定专用DNS区域,让域名在VNet内解析到私有IP;再对比API Key、Azure AD令牌和托管标识的适用场景,并给出Python与Azure CLI调用示例。完成后,OpenAI端点仅对授权虚拟网络和身份开放,公网请求被直接拒绝,可有效防止密钥泄露导致的越权调用。还会补充nslookup验证、角色分配和诊断日志等加固项。

Azure OpenAI Service的生产部署通常不需要公网可达。模型推理流量、提示词和响应内容都通过HTTPS传输,但端点本身可以限定在虚拟网络内。API Key虽然配置简单,可一旦出现在日志或代码仓库中,攻击者就能直接消耗额度。建议在网络层为资源挂载私有终结点,在身份层切换到Azure AD令牌或托管标识,同时禁用公网访问。下面会先拆解私有终结点与DNS的配置,再说明认证方案怎么选,最后给出端到端验证方法。

Azure OpenAI Service如何配置私有网络终结点与身份认证?

一、私有网络终结点与专用DNS配置

私有终结点(Private Endpoint)把Azure OpenAI资源通过虚拟网卡接入指定子网,使资源获得一个来自该子网的私有IP。它和Service Endpoint不同:Service Endpoint只让VNet流量通过Azure骨干网络访问服务,但服务仍保留公网域名;Private Endpoint则直接把PaaS服务映射进VNet,适合对数据面完全私密的要求。对Azure OpenAI,启用私有终结点后,客户端在VNet内访问your-resource.openai.azure.com时会解析到10.x.x.x私有地址,不再经过公共Internet。

配置时先在Azure OpenAI资源的“网络”页选择“禁用公共访问并仅允许专用访问”,再创建私有终结点。终结点需要选择订阅、资源组、虚拟网络和子网,并决定是否自动集成专用DNS区域。推荐的专用DNS区域是privatelink.openai.azure.com。如果区域尚未存在,Azure可以自动创建,也可以通过CLI手动创建。手动创建的优势是能自定义DNS转发和链路,适合已有中心DNS架构的企业。以下命令创建DNS区域并关联到VNet:

az network private-dns zone create \
  --resource-group rg-openai \
  --name privatelink.openai.azure.com

az network private-dns link vnet create \
  --resource-group rg-openai \
  --zone-name privatelink.openai.azure.com \
  --name link-to-hub-vnet \
  --virtual-network /subscriptions/your-subscription/resourceGroups/rg-network/providers/Microsoft.Network/virtualNetworks/hub-vnet \
  --registration-enabled false

创建私有终结点时,DNS区域组负责把区域与终结点网卡关联。可以使用az network private-endpoint dns-zone-group create或直接通过门户完成。完成后从VNet内的虚拟机执行nslookup your-resource.openai.azure.com,应返回私有IP。需要留意,如果本地网络通过ExpressRoute或VPN接入,还要把专用DNS区域转发到Azure DNS,否则本地客户端解析不到私有地址。

还有一个容易忽略的点:Azure OpenAI资源可能使用privatelink.cognitiveservices.azure.com作为某些认知服务兼容接口的区域。实际部署时建议在资源的“属性”或终结点DNS配置中确认Azure给出的专用DNS区域名称,避免只配置一个区域导致部分接口解析失败。

二、身份认证方案对比与配置

Azure OpenAI Service支持的认证方式主要有两类:静态API Key和Azure AD令牌。API Key适合本地调试和一次性脚本,权限与密钥绑定,无法细粒度区分调用者身份。Azure AD认证则可以把访问控制交给Azure RBAC,比如授予某个用户或托管标识Cognitive Services OpenAI User角色,只允许调用推理而不允许创建部署。

Azure AD认证的流程是:客户端先通过Azure AD获取access token,再把token放到请求头的Authorization: Bearer <token>字段。对于运行在Azure VM、App Service或Functions中的应用,推荐使用托管标识(Managed Identity),代码里不保存任何凭据。下面的Python示例使用DefaultAzureCredential自动识别本地开发身份、托管标识或服务主体:

from openai import AzureOpenAI
from azure.identity import DefaultAzureCredential, get_bearer_token_provider

credential = DefaultAzureCredential()
token_provider = get_bearer_token_provider(
    credential,
    "https://cognitiveservices.azure.com/.default"
)

client = AzureOpenAI(
    azure_endpoint="https://your-resource.openai.azure.com/",
    api_version="2024-02-15-preview",
    azure_ad_token_provider=token_provider
)

response = client.chat.completions.create(
    model="gpt-4",
    messages=[{"role": "user", "content": "hello"}]
)
print(response.choices[0].message.content)

如果不想使用Python SDK,也可以先用Azure CLI获取token再手动调用REST API。下面的命令会输出一个可用于HTTPS请求的access token,作用域同样是https://cognitiveservices.azure.com/.default:

az account get-access-token \
  --resource https://cognitiveservices.azure.com \
  --query accessToken \
  --output tsv

需要明确,API Key并不适合完全禁用。在某些自动化场景或外部第三方系统中,Azure AD无法直接使用时,仍可以保留Key,但建议启用密钥轮换和监控。可以用Azure Key Vault存储Key,应用通过托管标识读取,避免明文落盘。

三、端到端验证与安全加固

完成网络和认证配置后,至少要做两个方向的验证。第一,从VNet内部的测试虚拟机发起调用,确认能正常完成推理。第二,从公网环境发起同样的请求,确认在禁用公网访问后返回403或连接超时。这样能证明资源已经不再暴露在公共Internet。

验证DNS解析是定位问题的关键。在VNet内Linux VM上执行nslookup your-resource.openai.azure.com应看到来自子网的私有地址;如果仍解析出公网IP,说明专用DNS区域没有正确链接到VNet,或者DNS服务器没有使用Azure提供的解析器。可以用Azure CLI的run-command快速执行:

az vm run-command invoke \
  --resource-group rg-openai \
  --vm-name vm-openai-test \
  --command-id RunShellScript \
  --scripts "nslookup your-resource.openai.azure.com"

身份层也要做最小权限分配。给应用托管标识授予Cognitive Services OpenAI User即可,不要直接给Contributor或Owner。条件访问策略可以进一步限制来源IP、设备状态和登录风险。诊断日志建议发送到Log Analytics,监控CallerIpAddress、ResultType和令牌来源,一旦出现非预期IP或异常调用量就触发告警。

在实际生产环境中,网络与身份不是二选一,而是一组纵深防御。私有终结点解决“谁能触达服务”,Azure AD解决“触达后能做什么”。即使私有终结点配置正确,仍然要假设VNet内某台主机可能被攻陷,因此每个应用使用独立托管标识,并按部署或环境拆分Azure OpenAI资源,避免一个应用的权限扩大到所有模型。

如果团队使用Terraform或Bicep管理基础设施,可以把私有终结点、专用DNS区域和角色分配都写成代码,和Azure OpenAI资源一起部署。这样既能保证环境一致,也能在每次变更时通过CI跑一次验证脚本,避免手工配置漂移。

Azure OpenAI Service私有网络终结点身份认证修改时间:2026-09-19 12:14:28

免责声明:已尽一切努力确保本网站所含信息的准确性。网站作品多为原创整理与精心创作,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们进行处理Email:chomcom@qq.com。
引用或转载本作品时,请注明当前出处:https://www.ipipp.com/html/0919/59234.html,基于非商业用途的前提下,欢迎转载或二创本作品。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。