Azure AI-tjänster är publika som standard. Det innebär att Azure OpenAI, AI Search och Document Intelligence alla exponerar endpoints som vem som helst på internet kan nå (förutsatt att de har API-nyckeln). För dev/test kan det fungera. För produktionsarbetsbelastningar som hanterar känslig data är det inte acceptabelt.
Private endpoints placerar dessa tjänster inuti ditt VNet. Kombinerat med att stänga av public network access och inaktivera local auth (API-nycklar) får du en uppsättning där bara identitetsautentiserad trafik från ditt VNet kan nå tjänsterna. Inga nycklar att rotera, ingen publik attackyta.
Målarkitekturen är en RAG-pipeline (Retrieval-Augmented Generation) med fyra kärntjänster:
Alla fyra sitter bakom private endpoints i samma VNet. De autentiserar mot varandra via managed identity. Inga API-nycklar, inga connection strings, inga publika endpoints.
Börja med nätverksgrunden: ett VNet med ett dedikerat subnät för private endpoints och ett annat för beräkningsresurser (VM:ar, App Service, Container Apps osv.). Varje Azure-tjänst behöver sin egen privata DNS-zon så att DNS-upplösning dirigerar trafik till den privata IP-adressen istället för den publika endpointen.
Du behöver också länka varje DNS-zon till VNet:et (via Microsoft.Network/privateDnsZones/virtualNetworkLinks) och skapa DNS-zongrupper på varje private endpoint. De utelämnas här för att hålla det kort, men de följer samma mönster för varje tjänst.
Driftsätt Azure OpenAI-resursen med tre säkerhetsinställningar: publicNetworkAccess: 'Disabled' blockerar all internettrafik, disableLocalAuth: true tvingar Entra ID-autentisering (inga API-nycklar), och den systemtilldelade managed identity ger resursen sin egen identitet för RBAC.
Samma mönster gäller för AI Search och Document Intelligence. Var och en får sitt eget Cognitive Services-konto (med rätt kind), sin egen private endpoint och samma tre säkerhetsegenskaper.
Med API-nycklar inaktiverade autentiserar tjänsterna mot varandra med managed identity och Azure RBAC. I RAG-mönstret behöver AI Search två rolltilldelningar:
Inga connection strings, inga delade hemligheter. Identitetskedjan är helt deklarativ i Bicep:
Rolldefinitions-ID:na ovan är de välkända GUID:erna som publiceras av Microsoft. De är stabila och identiska i alla Azure-tenants.
Efter driftsättning, verifiera att private endpoints är anslutna och att public access verkligen är avstängt. Azure CLI gör detta enkelt:
Du bör se Approved för varje private endpoint-status, Disabled för PublicAccess, och true för LocalAuth (vilket innebär att local auth är inaktiverat).