你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

创建一个具有用户管理身份的网络安全环境

Note

本文档引用 Microsoft Foundry (经典) 门户。

🔄 如果你使用的是新门户,请切换到 Microsoft Foundry(新)文档

Note

本文档指的是 Microsoft Foundry(新) 门户网站。

Foundry 智能体服务通过专用网络环境设置提供标准设置,使你能够自带 (BYO) 专用虚拟网络。 此设置创建一个独立的网络环境,使你能够安全地访问数据并执行作,同时保持对网络基础结构的完全控制。 本指南提供设置过程的分步演练,并概述了所有必要的要求。

小窍门

有关使用虚拟网络时的常见问题,请参阅 常见问题解答文章

Note

新的 Foundry 门户体验不支持端到端网络隔离。 启用网络隔离后,请使用经典 Foundry 门户体验或 SDK 或 CLI 安全地访问 Foundry 项目。

安全功能

默认情况下,使用专用网络隔离的标准设置可确保:

  • 没有公共出口:基础基础结构可确保代理和工具的正确身份验证和安全性,而无需绕过受信任的服务。

  • 容器注入:允许平台网络托管 API 并将子网注入网络,从而在同一虚拟网络中实现 Azure 资源的本地通信。

  • 专用资源访问:如果资源被标记为专用且无法从 Internet 进行发现,则平台网络仍可访问它们,前提是所需的凭据和授权已到位。

对于没有现有虚拟网络的客户,使用专用网络模板的标准设置可以通过自动预配必要的网络基础结构来简化部署。

体系结构图

显示虚拟网络架构的架构图。

已知的限制

  • 子网 IP 地址限制:这两个子网必须在 10.0.0.0/8172.16.0.0/12 或者 192.168.0.0/16 范围内,这些都是专用网络保留的 A、B 或 C 类专用地址范围。 不支持公共类 A、B 或 C 地址范围。 有关详细信息,请参阅 GitHub 上的专用网络安全代理部署模板
  • 代理子网排他性:代理子网不能由多个 Microsoft Foundry 资源共享。 每个 Foundry 资源必须使用专用代理子网。
  • 代理子网大小:由于子网委派给 Microsoft.App/environment,委托的代理子网的建议大小为 /24(256 个地址)。 有关子网大小调整的详细信息,请参阅 为 Azure 容器应用配置虚拟网络
  • 代理子网出口防火墙允许列表:如果要将 Azure 防火墙与专用网络安全标准代理集成,请将与 Azure 防火墙集成文章在“托管标识”下列出的完全限定的域名 (FQDN) 加入允许列表,或者添加服务标记 AzureActiveDirectory。
    • 验证确认防火墙中未发生可能会添加自签名证书的 TLS 检查。 在出现故障期间,检查防火墙上是否有流量进入,以及防火墙阻止的流量种类。
    • 此外,会有流量访问 10.x.x.x 专用 IP(用于非 A 类场景)或 100.x.x.x 专用 IP(用于 A 类场景),作为代理基础架构服务的必要流量。 如果与防火墙集成,请允许此流量。
  • 所有 Foundry 工作区资源都必须部署在虚拟网络(VNet)所在的同一区域中。 这包括 Cosmos DB、存储帐户、AI 搜索、Foundry 帐户、项目、托管标识、Azure OpenAI 或其他用于模型部署的 Foundry 资源。
  • 区域可用性
  • Azure Blob 存储:不支持将 Azure Blob 存储文件与文件搜索工具配合使用。
  • 专用 MCP 服务器:不支持使用部署在同一虚拟网络中的专用 MCP 服务器,仅支持可公开访问的 MCP 服务器。
  • 使用必应搜索进行基础设置:仅支持以下区域:
    • 西欧
    • 加拿大东部
    • 瑞士北部
    • 西班牙中部
    • 阿拉伯联合酋长国北部
    • 韩国中部
    • 波兰中部
    • 东南亚
    • 美国西部
    • 美国西部 2
    • 美国西部 3
    • 美国东部
    • 美国东部 2
    • 美国中部
    • 印度南部
    • 日本东部
    • 英国南部
    • 法国中部
    • 挪威东部
    • Australia East
    • 加拿大中部
    • 瑞典中部
    • 南非北部
    • 意大利北部
    • Brazil South

Prerequisites

  • Azure 订阅 - 免费创建订阅

  • 确保创建帐户和项目的个人在订阅范围内具有 Azure AI 帐户所有者 角色

  • 部署模板的人员还必须有权将角色分配给所需的资源(Cosmos DB、搜索、存储)。

    • 所需的内置角色是 基于角色的访问管理员
    • 或者,在订阅级别拥有 “所有者” 角色也满足此要求。
    • 所需的密钥权限为: Microsoft.Authorization/roleAssignments/write
  • Python 3.8 或更高版本

  • 配置代理环境后,请确保想要使用代理场或 SDK 创建或编辑代理的每个团队成员都已为项目分配内置的 Azure AI 用户RBAC 角色

    • 所需的最小权限集为: agents/*/readagents/*/actionagents/*/delete
  • 注册服务提供商。 必须注册以下提供程序:

    • Microsoft.KeyVault
    • Microsoft.CognitiveServices
    • Microsoft.Storage
    • Microsoft.MachineLearningServices
    • Microsoft.Search
    • Microsoft.Network
    • Microsoft.App
    • Microsoft.ContainerService
    • 使用必应搜索工具:Microsoft.Bing
       az provider register --namespace 'Microsoft.KeyVault'
       az provider register --namespace 'Microsoft.CognitiveServices'
       az provider register --namespace 'Microsoft.Storage'
       az provider register --namespace 'Microsoft.MachineLearningServices'
       az provider register --namespace 'Microsoft.Search'
       az provider register --namespace 'Microsoft.Network'
       az provider register --namespace 'Microsoft.App'
       az provider register --namespace 'Microsoft.ContainerService'
       # only to use Grounding with Bing Search tool
       az provider register --namespace 'Microsoft.Bing'
    

配置新的受网络保护的环境

Note

  • 为智能体服务设置网络安全环境需要编程部署。 目前不支持通过 Azure 门户进行部署。
  • 如果想要删除已设置安全网络的 Foundry 资源和标准智能体,请最后删除 Foundry 资源和虚拟网络。 在删除虚拟网络之前,请确保删除并 清除 Foundry 资源。
  • 在标准设置中,代理使用客户拥有的单租户资源。 你可以对这些资源进行完全控制和可见性,但会根据使用情况产生成本。

可以使用 Bicep 或 Terraform 部署和自定义带有专用网络的标准设置。 提供的示例允许你自带虚拟网络并自定义部署以满足特定要求:

  • 已创建 Foundry 帐户和 Foundry 项目。
  • 已部署 gpt-4o 模型。
  • 如果未提供现有资源,则会自动创建用于存储客户数据的 Azure 资源:Azure 存储、Azure Cosmos DB 和 Azure AI 搜索。
  • 这些资源连接到项目以存储文件、线程和矢量数据。
  • 默认情况下,使用由Microsoft托管的加密密钥用于存储帐户和认知服务帐户(Foundry)。

选择一种可用的部署方法:

使用专用网络模板深入了解标准设置

当您使用标准设置和私有网络代理模板时,以下内容将自动进行配置,除非您自行提供:

网络基础结构

  • 创建虚拟网络(192.168.0.0/16)
  • 代理子网(192.168.0.0/24):用于托管代理客户端
  • 专用终结点子网 (192.168.1.0/24):托管专用终结点

专用 DNS 区域 配置了以下 DNS 区域:

  • privatelink.blob.core.windows.net
  • privatelink.cognitiveservices.azure.com
  • privatelink.documents.azure.com
  • privatelink.file.core.windows.net
  • privatelink.openai.azure.com
  • privatelink.search.windows.net
  • privatelink.services.ai.azure.com

虚拟网络(VNet)功能

虚拟网络允许你指定哪些终结点可以对资源进行 API 调用。 Azure 服务会自动拒绝来自已定义网络外部设备的 API 调用。 可以使用基于公式的定义或通过创建允许的终结点的详尽列表来建立允许的网络。 此安全层可以与其他安全措施相结合,以增强保护。

Note

如果将现有虚拟网络和子网与 Microsoft.App/environments 委派一起,则子网的最小化大小应为 /27(32 个地址)。 我们建议子网大小为 /24(256 个地址),这是在网络安全模板中设置的默认子网大小。

网络规则

默认情况下,所有帐户及其相应的项目都受 公共网络访问禁用标志的保护,需要显式配置以允许通过专用终结点进行访问。

这些规则适用于所有 协议,包括 REST 和 WebSocket。 即使是 Azure 门户的测试控制台等内部测试工具也需要显式权限才能访问帐户及其子资源,从而确保所有代理项目的完整安全性。

专用终结点

对于代理,专用终结点可确保以下 Azure 资源的安全仅限内部的连接:

  • 铸造厂
  • Azure AI 搜索
  • Azure 存储
  • Azure Cosmos DB

DNS 区域配置摘要

专用链接资源类型 子资源 专用 DNS 区域名称 公共 DNS 区域转发器
Foundry 帐户 privatelink.cognitiveservices.azure.com
privatelink.openai.azure.com
privatelink.services.ai.azure.com
cognitiveservices.azure.com
openai.azure.com
services.ai.azure.com
Azure AI 搜索 searchService privatelink.search.windows.net search.windows.net
Azure Cosmos DB Sql privatelink.documents.azure.com documents.azure.com
Azure 存储 blob privatelink.blob.core.windows.net blob.core.windows.net

若要在 DNS 服务器中创建条件转发器到 Azure DNS 虚拟服务器,请使用上表中提到的区域列表。 Azure DNS 虚拟服务器 IP 地址为 168.63.129.16。

访问您的安全代理

模板部署完成后,可以使用以下方法之一访问虚拟网络后面的 Foundry 项目:

  • Azure VPN 网关:通过专用连接将本地网络连接到虚拟网络。 通过公共 Internet 建立连接。 可以使用两种类型的 VPN 网关:
    • 点到站点:每台客户端计算机使用 VPN 客户端连接到虚拟网络。
    • 站点到站点:VPN 设备将虚拟网络连接到本地网络。
  • ExpressRoute:通过专用连接将本地网络连接到云。 通过连接提供商建立连接。
  • Azure Bastion:在此方案中,会在虚拟网络中创建一个 Azure 虚拟机(有时称为跳转框)。 然后使用 Azure Bastion 连接到 VM。 Bastion 允许在本地 Web 浏览器中使用 RDP 或 SSH 会话连接到 VM。 然后使用 Jump Box 作为开发环境。 由于它位于虚拟网络内部,因此可以直接访问工作区。

Summary

标准代理设置的专用网络 提供企业级隔离和控制:

  • ✅ 所有入站和出站流量都与公共 Internet 保持隔离
  • ✅ 专用终结点保护所有客户数据
  • ✅ 自动专用 DNS 解析,确保流畅的内部访问
  • ✅ 为实现最大安全性,采用默认拒绝的严格网络规则

此设置使 AI 代理能够在专用隔离的虚拟网络中完全运行。 通过利用专用网络隔离(BYO VNet),组织可以强制实施自定义安全策略,确保 AI 代理在其受信任的基础结构中运行。

我们的目标是在不损害关键安全要求的情况下加快 AI 代理的开发与部署。 借助 bicep 和 ARM 模板,可以快速设置代理环境,同时仍保持对其网络和数据的全面控制。

故障排除指南

请参阅本指南,在 Foundry 门户中解决有关标准安全代理模板部署错误或模板部署后的错误。

模板部署错误

"CreateCapabilityHostRequestDto is invalid: Agents CapabilityHost supports a single, non empty value for vectorStoreConnections property."

"Agents CapabilityHost supports a single, non empty value for storageConnections property."

"Agents CapabilityHost supports a single, non empty value for threadStorageConnections property."

解决方案:提供与所有自带 (BYO) 资源的所有连接,需要连接到所有 BYO 资源。 在没有提供所有三个资源的情况下,无法在 Foundry 中创建安全标准代理。

"Provided subnet must be of the proper address space. Please provide a subnet which has address space in the range of 172 or 192."

解决方案:未使用适当的 IP 范围用于委派代理子网。 请验证你使用的是有效的专用 IP 地址空间。

"Subscripton is not registered with the required resource providers, please register with the resource providers Microsoft.App and Microsoft.ContainerService."

解决方案:缺少正确的资源注册。 请确保在租户中注册所需的资源。

az provider register --namespace 'Microsoft.KeyVault' 
az provider register --namespace 'Microsoft.CognitiveServices' 
az provider register --namespace 'Microsoft.Storage' 
az provider register --namespace 'Microsoft.MachineLearningServices' 
az provider register --namespace 'Microsoft.Search' 
az provider register --namespace 'Microsoft.Network' 
az provider register --namespace 'Microsoft.App' 
az provider register --namespace 'Microsoft.ContainerService' 

"Failed to create Aml RP virtual workspace due to System.Exception: Failed async operation.""The resource operation completed with terminal provisioning state 'Failed'. Capability host operation failed."

解决方案:这是我们提供的一个总括错误。 创建支持工单请求来调查设置。 检查功能主机是否存在错误。

"Subnet requires any of the following delegation(s) [Microsoft.App/environments] to reference service association link /subscriptions/11111-aaaaa-2222-bbbb-333333333/resourceGroups/agentRANGEChange/providers/Microsoft.Network/virtualNetworks/my-agent-vnet/subnets/agent-subnet/serviceAssociationLinks/legionservicelink."

解决方案:尝试在 Azure 中删除安全标准模板设置,但未正确删除所有资源时,会出现此错误。 一种解决方案是导航到 Azure 门户中的 Foundry 资源页,然后选择“ 管理已删除的资源”。 从那里,清除与该代理关联的此虚拟网络的相关资源。 另一个选项是在受保护的标准模板中运行 deleteCaphost.sh 脚本。

后续步骤

现已成功配置网络安全帐户和项目,请使用 快速入门 创建第一个代理。