# Azure AI Services - Networking, Security and Private Endpoints

**Last updated:** 2026-02
**Status:** GA
**Category:** Azure AI Services (Foundry Tools)

---

## Introduksjon

Azure AI Services (tidligere Cognitive Services) tilbyr et lagdelt sikkerhetsrammeverk for nettverksisolasjon som beskytter AI-modeller, data og tjenester mot uautorisert tilgang. Private endpoints, virtual networks og service endpoints gir fleksible sikkerhetskonfigurasjoner som passer både skytilkoblede og hybrid-scenarier.

Denne kunnskapsreferansen dekker:
- Private endpoints og Azure Private Link-konfigurasjon
- Virtual network-integrasjon med service endpoints
- IP-baserte firewall-regler og nettverkstilgangskontroll
- Managed identity-autentisering for nettverkssikker tilgang
- DNS-konfigurasjon for private endpoints
- Trusted services og nettverksunntak

**Viktig kontekst:** Azure AI Services støtter **ikke** direkte VNet-injeksjon (deployes ikke inn i kundens VNet), men bruker i stedet private endpoints for sikker tilkobling fra VNet til tjenesten.

---

## Kjernekomponenter

### 1. Private Endpoints og Azure Private Link

Private endpoints gir dedikert nettverkstilgang til Azure AI Services uten eksponering mot offentlig internett.

| Komponent | Funksjon | Konfigurasjon |
|-----------|----------|---------------|
| **Private Endpoint** | Dedikert nettverksgrensesnitt i kundens VNet | Tildeles privat IP fra VNet-adresseområdet |
| **Private Link Service** | Azure-backbone-tilkobling | Eliminerer internett-eksponering |
| **Private DNS Zone** | Navneoppløsning for private endpoints | `privatelink.cognitiveservices.azure.com` (AI Services)<br>`privatelink.openai.azure.com` (Azure OpenAI) |
| **Target Sub-resource** | Endepunkttype | `account` (AI Services, Azure OpenAI) |

**Fordeler:**
- Eliminerer offentlig internett-eksponering fullstendig
- Trafikk går over Microsoft backbone network
- Fungerer med VPN Gateway og ExpressRoute for on-premises tilgang
- Konsistent tilkoblings-string for både private og public endpoints
- Støtter både system-assigned og user-assigned managed identities

**Begrensninger:**
- Krever Basic tier eller høyere (ikke Free tier)
- Custom subdomain er påkrevd for private endpoints
- Speech service krever separate endpoint-konfigurasjoner
- Portal-tilgang kan kreve ekstra konfigurasjon

### 2. Service Endpoints

Service endpoints gir optimalisert ruting fra VNet til Azure AI Services uten private IP-adresser.

| Aspekt | Beskrivelse |
|--------|-------------|
| **Service Tag** | `Microsoft.CognitiveServices` |
| **Routing** | Optimal sti fra VNet til tjenesten via Azure backbone |
| **Identitet** | Subnet- og VNet-identitet sendes med hver forespørsel |
| **Kombinasjon** | Kan brukes sammen med IP-regler (maks 100 VNet-regler per ressurs) |

**Når bruke service endpoints vs private endpoints:**
- **Service Endpoints:** Enklere oppsett, gratis, men tjenesten beholder offentlig IP
- **Private Endpoints:** Full isolasjon, privat IP, bedre sikkerhet, men høyere kostnad

### 3. IP Firewall-regler (Network ACLs)

Service-level IP filtering for å begrense tilgang til godkjente IP-adresser.

| Regeltype | Format | Eksempel | Bruksområde |
|-----------|--------|----------|-------------|
| **Enkelt IP** | `x.x.x.x` | `203.0.113.10` | Spesifikt klientmaskin |
| **IP-range** | CIDR-notasjon | `10.0.0.0/24` | Subnet eller on-premises nettverk |
| **IPv4 kun** | RFC 1918-kompatibel | Private: `10.*`, `172.16-31.*`, `192.168.*` ikke tillatt | Kun offentlige IP-adresser |

**Konfigurasjonsalternativer:**
- **All networks:** Åpen tilgang (default)
- **Selected networks:** Kun godkjente VNets/IPs
- **Disabled:** Ingen public access (kun private endpoints)

**Viktig:** Default action må settes til `Deny` for at nettverksregler skal ha effekt.

### 4. Managed Identity og Autentisering

Managed identity eliminerer behovet for API-nøkler ved nettverksikrede tilkoblinger.

| Type | Levetid | Bruksområde |
|------|---------|-------------|
| **System-assigned** | Knyttet til ressurs-levetid | Standard for enkle scenarier |
| **User-assigned** | Uavhengig av ressurs | Multi-ressurs, delt identitet |

**Konfigurering via Azure Portal:**
1. Naviger til AI Services-ressurs → **Identity**
2. Aktiver **System assigned** eller legg til **User assigned**
3. Tildel RBAC-rolle på målressurs: `Cognitive Services User` eller `Cognitive Services OpenAI User`

**Trusted Services Bypass:**
- Aktiveres med `networkAcls.bypass: "AzureServices"`
- Tillater Azure AI Search, Azure Machine Learning å kalle tjenesten via managed identity
- Tjenesten validerer JWT-token fra trusted services

---

## Arkitekturmønstre

### 1. Full Private Endpoint-isolasjon

**Scenario:** Maksimal sikkerhet, null internett-eksponering.

```
┌─────────────────────────────────────────────┐
│  Azure Virtual Network (10.0.0.0/16)       │
│                                             │
│  ┌─────────────────────────────────────┐   │
│  │  App Subnet (10.0.1.0/24)           │   │
│  │  - Web App / Function App           │   │
│  │  - VNet Integration                 │   │
│  └─────────────────────────────────────┘   │
│                                             │
│  ┌─────────────────────────────────────┐   │
│  │  Private Endpoint Subnet            │   │
│  │  (10.0.2.0/24)                      │   │
│  │  - PE for Azure OpenAI (10.0.2.4)   │───┼──> Azure OpenAI
│  │  - PE for AI Services (10.0.2.5)    │───┼──> AI Services
│  │  - PE for Key Vault (10.0.2.6)      │───┼──> Key Vault
│  │  - PE for Storage (10.0.2.7)        │───┼──> Storage
│  └─────────────────────────────────────┘   │
│                                             │
│  ┌─────────────────────────────────────┐   │
│  │  Azure Bastion Subnet (10.0.3.0/26) │   │
│  │  - Bastion Host                     │   │
│  └─────────────────────────────────────┘   │
└─────────────────────────────────────────────┘
        │
        └──> On-premises (VPN Gateway / ExpressRoute)
```

**Konfigurasjonsrekkefølge:**
1. Opprett VNet med subnets (app, private endpoint, bastion)
2. Opprett Azure AI Services med custom subdomain
3. Opprett private endpoint i dedikert subnet
4. Konfigurer Private DNS Zone (`privatelink.cognitiveservices.azure.com`)
5. Sett `publicNetworkAccess: Disabled` på AI Services
6. Aktiver managed identity på applikasjon
7. Tildel RBAC-rolle til applikasjonen på AI Services

**Best practices:**
- Bruk dedikert subnet for private endpoints (anbefalt `/26` eller større)
- Aktiver `PrivateEndpointNetworkPolicies: Disabled` på subnet
- Integrer med Private DNS Zone for automatisk navneoppløsning
- Bruk Azure Bastion for sikker management-tilgang

### 2. Hybrid Service Endpoint + IP Firewall

**Scenario:** Koste-effektiv sikkerhet med VNet + on-premises tilgang.

```
┌─────────────────────────────────────────────┐
│  Azure Virtual Network                      │
│                                             │
│  ┌─────────────────────────────────────┐   │
│  │  App Subnet                         │   │
│  │  - Service Endpoint enabled         │   │
│  │    (Microsoft.CognitiveServices)    │   │
│  └─────────────────────────────────────┘   │
│              │                              │
│              └──────────────┐               │
└─────────────────────────────┼───────────────┘
                              │
                              ▼
                    ┌─────────────────┐
                    │ Azure AI Service│
                    │ Firewall:       │
                    │ - VNet rule     │
                    │ - IP allow:     │
                    │   203.0.113.0/24│ <──── On-premises public IP
                    └─────────────────┘
```

**Konfigurasjon:**
1. Aktiver service endpoint på subnet: `Microsoft.CognitiveServices`
2. Konfigurer AI Services firewall:
   - Default action: `Deny`
   - VNet rule: tillat spesifikk subnet
   - IP rule: tillat on-premises public IP range

### 3. Hub-Spoke med Centralisert Network Security

**Scenario:** Enterprise-arkitektur med sentralisert sikkerhet.

```
          ┌─────────────────────────────┐
          │  Hub VNet (10.0.0.0/16)     │
          │  - Azure Firewall           │
          │  - VPN Gateway              │
          │  - Private DNS Zones        │
          └─────────────┬───────────────┘
                        │ VNet Peering
           ┌────────────┴────────────┐
           │                         │
    ┌──────▼──────┐          ┌──────▼──────┐
    │ Spoke 1 VNet│          │ Spoke 2 VNet│
    │ AI Workload │          │ AI Workload │
    │ - PEs       │          │ - PEs       │
    └─────────────┘          └─────────────┘
```

**Nettverksflyt:**
- Outbound trafikk → Azure Firewall (FQDN filtering)
- Inbound management → Azure Bastion i Hub
- Private DNS Zones deles via VNet-links

### 4. Azure OpenAI "On Your Data" med Network Isolation

**Scenario:** RAG-løsning med Azure AI Search + Storage bak private endpoints.

```
┌────────────────────────────────────────────────┐
│  VNet (3 subnets)                              │
│                                                │
│  1. VPN Gateway Subnet                         │
│  2. Private Endpoint Subnet:                   │
│     - Azure OpenAI PE                          │
│     - Azure AI Search PE (shared private link) │
│     - Storage Account PE                       │
│  3. Web App Outbound Integration Subnet        │
└────────────────────────────────────────────────┘

┌─────────────┐  Managed Identity  ┌──────────────┐
│ Azure OpenAI├───────────────────>│ AI Search    │
│             │  (trusted service) │ (embedding)  │
└─────────────┘  bypass firewall   └──────────────┘
```

**Spesialkonfigurasjon:**
- Azure OpenAI: `networkAcls.bypass: "AzureServices"` (trusted service)
- AI Search: managed identity med `Cognitive Services OpenAI User` rolle
- Storage: private endpoint + RBAC for OpenAI managed identity

---

## Beslutningsveiledning

### Når bruke hvilken nettverkssikkerhet?

| Scenario | Anbefalt løsning | Rasjonale |
|----------|------------------|-----------|
| **Maksimal sikkerhet, compliance-kritisk** | Private Endpoints + Disable Public Access | Zero Trust, ingen internett-eksponering |
| **Kostnadsbevisst, medium sikkerhet** | Service Endpoints + IP Firewall | Gratis, god sikkerhet, enklere oppsett |
| **Hybrid on-premises + Azure** | Private Endpoints + VPN Gateway / ExpressRoute | Privat tilkobling til on-premises |
| **Multi-region, lav latency** | Private Endpoints per region | Redusert latency, regional isolasjon |
| **Dev/Test miljø** | IP Firewall kun | Lavest kompleksitet, akseptabel risiko |

### Sikkerhetsnivå-matriks

| Tiltak | Sikkerhetsnivå | Kompleksitet | Kostnad | Compliance |
|--------|----------------|--------------|---------|------------|
| IP Firewall kun | ⭐⭐ | Lav | Gratis | Basis |
| Service Endpoints | ⭐⭐⭐ | Medium | Gratis | Medium |
| Private Endpoints | ⭐⭐⭐⭐⭐ | Høy | Medium | Høy (GDPR, HIPAA) |
| PE + Disabled Public | ⭐⭐⭐⭐⭐ | Høy | Medium | Maksimal |

### DNS-konfigurasjon: Azure Private DNS vs Custom DNS

**Azure Private DNS (anbefalt):**
- Automatisk CNAME-record oppdatering
- Integrert med VNet
- Ingen ekstra konfigurasjon

**Custom DNS (on-premises DNS server):**
- Krev conditional forwarder til Azure DNS (`168.63.129.16`)
- Manuell A-record for private endpoint IP
- Nødvendig for hybrid-scenarier

**FQDN-resolusjon:**
- Fra VNet: `myaccount.cognitiveservices.azure.com` → `10.0.2.5` (privat IP)
- Fra internett: `myaccount.cognitiveservices.azure.com` → public IP (hvis ikke disabled)

---

## Integrasjon med Microsoft-stakken

### 1. Azure AI Foundry (tidligere AI Studio)

**Portal-tilgang med private endpoints:**
- Custom subdomain må brukes i alle API-kall
- Portal-tilgang krever VPN eller Azure Bastion til VNet
- Service tags for portal: `AzureActiveDirectory`, `AzureFrontDoor.Frontend`, `AzureResourceManager`, `CognitiveServicesManagement`, `CognitiveServicesFrontEnd`

**Managed VNet i Foundry:**
- Foundry hub kan ha egen managed VNet
- Workspace inheriter nettverksregler fra hub
- Private endpoints til Foundry Tools konfigureres separat

### 2. Power Platform Integration

**Power Automate / Power Apps med private endpoints:**
- Krever On-premises data gateway for VNet-tilkobling
- Azure Relay hybrid connection ikke støttet direkte
- Custom connector må bruke public endpoint med IP firewall

**Workaround for private endpoints:**
1. Deploy Azure Function med VNet integration
2. Function kaller AI Services via private endpoint
3. Custom connector kaller Azure Function (public endpoint med auth)

### 3. Azure Machine Learning

**AML Workspace med AI Services private endpoints:**
- Shared private link fra AML til AI Services
- Managed identity med `Cognitive Services User` rolle
- Trusted service bypass: `networkAcls.bypass: "AzureServices"`

**Compute Cluster konfigurasjon:**
- Cluster må være i samme VNet (eller peered VNet)
- NSG må tillate outbound til `AzureMachineLearning` service tag

### 4. Azure AI Search (for RAG)

**Shared Private Link:**
- AI Search kan opprette private endpoint til AI Services
- Eliminerer behovet for trusted service bypass
- Konfigureres via AI Search → Networking → Shared Private Links

**Trusted Service alternativ:**
- AI Search managed identity med RBAC-rolle på AI Services
- `networkAcls.bypass: "AzureServices"` på AI Services
- System-assigned managed identity authentication påkrevd

---

## Offentlig sektor (Norge)

### 1. Compliance-krav

| Regelverk | Relevante krav | Nettverkstiltak |
|-----------|----------------|-----------------|
| **Personvernforordningen (GDPR)** | Art. 32: Tekniske sikkerhetstiltak | Private endpoints, kryptering i transit (TLS 1.2+) |
| **Nasjonal sikkerhetsmyndighet (NSM)** | Grunnprinsipper for IKT-sikkerhet | Network segmentation, least privilege access |
| **Schrems II** | Data Processing Agreement-krav | Private endpoints reduserer eksponering mot utenlandsk jurisdiksjon |
| **eHelse** | Norm for informasjonssikkerhet (HelseNorge) | Nettverksisolasjon, logging, audit trail |

### 2. Offentlig Sektor-spesifikke hensyn

**Data Residency:**
- Private endpoints endrer ikke data location (fortsatt i Azure-regionen)
- Norway East / Norway West anbefales for offentlig sektor
- Private Link-trafikk forblir innenfor Microsoft backbone network (ikke public internet)

**Schrems II og Cloud Act:**
- Private endpoints reduserer ikke juridisk ansvar ved Cloud Act-forespørsler
- Tilleggstiltak: Customer-Managed Keys (CMK), Microsoft Purview audit logs

**Kostnadsmodell:**
- Private Endpoint: ~40 NOK/måned per endpoint
- Data Processing (ingress): Gratis
- Data Processing (egress): ~0.40 NOK/GB (intra-region via private link)

---

## Kostnad og lisensiering

### 1. Nettverkskomponenter - Priser (NOK, ca. 2026)

| Komponent | Kostnad | Enhet | Merknad |
|-----------|---------|-------|---------|
| **Private Endpoint** | ~40 NOK | per endpoint/måned | Uavhengig av trafikkmengde |
| **Data Processing (inbound)** | Gratis | per GB | Ingen kostnad for ingress |
| **Data Processing (outbound)** | ~0.40 NOK | per GB | Intra-region via private link |
| **Service Endpoint** | Gratis | - | Ingen ekstra kostnad |
| **VNet Peering** | ~0.08 NOK | per GB (intra-region) | For hub-spoke arkitektur |
| **Azure Bastion** | ~1200 NOK | per måned (Basic) | For secure management access |
| **VPN Gateway** | ~2400 NOK | per måned (Basic) | For on-premises tilkobling |

**Estimert månedskostnad for typisk oppsett:**
- **SMB (1 AI Service + Storage):** ~80 NOK/måned (2 private endpoints)
- **Enterprise (3 AI Services + Search + Storage + Key Vault):** ~240 NOK/måned (6 private endpoints) + Bastion/VPN

### 2. AI Services Tier-krav

| Tier | Private Endpoints | IP Firewall | Service Endpoints |
|------|-------------------|-------------|-------------------|
| **Free** | ❌ Ikke støttet | ❌ Ikke støttet | ❌ Ikke støttet |
| **Basic** | ✅ Støttet | ✅ Støttet | ✅ Støttet |
| **Standard** | ✅ Støttet | ✅ Støttet | ✅ Støttet |

**Minstekrav:** Basic tier (S0) eller høyere for nettverkssikkerhet.

### 3. Hidden Costs å være obs på

- **DNS Zone:** ~4 NOK/måned per Private DNS Zone + ~0.004 NOK per 1000 queries
- **Data Egress:** Trafikk ut av Azure region (ikke via private link) kan bli dyrt
- **Network Watcher:** Flowlogger for NSG koster ~40 NOK/måned per NSG
- **Log Analytics:** Ingest av network logs (pris avhenger av volum)

---

## For arkitekten (Cosmo)

### 1. Oppstartssekvens for Private Endpoint-prosjekt

**Pre-deployment checklist:**
1. ✅ Validert at AI Services tier er Basic eller høyere
2. ✅ Planlagt IP-adresseområder (VNet, subnets)
3. ✅ Identifisert custom subdomain for AI Services-ressurs
4. ✅ Avklart DNS-strategi (Azure Private DNS vs custom DNS)
5. ✅ Bestemt managed identity-strategi (system vs user-assigned)
6. ✅ RBAC-roller definert (hvem skal ha tilgang til hva)

**Deployment-rekkefølge (kritisk!):**
1. Opprett Resource Group
2. Opprett VNet med subnets (app, private endpoint, bastion)
3. Opprett AI Services-ressurs med custom subdomain
4. Opprett Private DNS Zone (`privatelink.cognitiveservices.azure.com`)
5. Link Private DNS Zone til VNet
6. Opprett Private Endpoint (velg target sub-resource: `account`)
7. Verifiser DNS record i Private DNS Zone (A-record for private IP)
8. Sett `publicNetworkAccess: Disabled` på AI Services (etter testing!)
9. Aktiver managed identity på applikasjon
10. Tildel RBAC-rolle (`Cognitive Services User`) til applikasjon

**Testing-rekkefølge:**
1. Fra VNet: `nslookup <myaccount>.cognitiveservices.azure.com` → skal returnere privat IP
2. Fra VNet: `Test-NetConnection <private-ip> -Port 443` → skal lykkes
3. Fra internett (før disabled public): `nslookup` → skal returnere public IP
4. API-kall fra VNet med managed identity → skal lykkes
5. API-kall fra internett (etter disabled public) → skal feile (403 Forbidden)

### 2. Troubleshooting-guide

| Symptom | Mulig årsak | Løsning |
|---------|-------------|---------|
| **403 Forbidden fra VNet** | IP firewall blokkerer | Sjekk firewall rules, default action må være Deny med eksplisitt Allow-regel |
| **DNS resolves til public IP fra VNet** | Private DNS Zone ikke linket | Link Private DNS Zone til VNet, verifiser A-record |
| **Connection timeout** | NSG blokkerer port 443 | Sjekk NSG-regler på subnet, tillat outbound 443 til `CognitiveServices` service tag |
| **Portal ikke tilgjengelig** | Service tags mangler | Legg til `AzureFrontDoor.Frontend`, `CognitiveServicesFrontEnd` i firewall/NSG |
| **Managed identity auth fails** | RBAC-rolle mangler | Tildel `Cognitive Services User` eller `Cognitive Services OpenAI User` rolle |

### 3. Design-avveininger

**Private Endpoints vs Service Endpoints:**

| Dimensjon | Private Endpoints | Service Endpoints |
|-----------|-------------------|-------------------|
| **Sikkerhet** | ⭐⭐⭐⭐⭐ (privat IP) | ⭐⭐⭐⭐ (public IP, VNet-regler) |
| **Kompleksitet** | Høy (DNS, subnets) | Lav (enable på subnet) |
| **Kostnad** | ~40 NOK/måned per endpoint | Gratis |
| **Latency** | Lavest (direkte) | Lavt (optimalisert) |
| **Compliance** | Best (Zero Trust) | Godt (nettverksisolasjon) |
| **On-prem access** | VPN/ExpressRoute | VPN/ExpressRoute |

**Anbefaling:**
- **Prod + høy sikkerhet:** Private Endpoints + Disabled Public Access
- **Prod + kostnadsfokus:** Service Endpoints + IP Firewall
- **Dev/Test:** IP Firewall kun (akseptabel risiko)

### 4. Common Pitfalls (å unngå!)

**❌ Aktivere "Disable public access" før private endpoint fungerer:**
- Resultat: Fullstendig tap av tilgang (inkludert Azure Portal)
- Fix: Test private endpoint grundig først, bruk "Selected networks" som mellomsteg

**❌ Glemme custom subdomain:**
- Resultat: Private endpoint creation feiler eller DNS resolution fungerer ikke
- Fix: Custom subdomain må settes ved opprettelse av AI Services-ressurs

**❌ Private DNS Zone ikke linket til alle relevante VNets:**
- Resultat: DNS resolves til public IP fra peered VNets
- Fix: Link Private DNS Zone til alle VNets som trenger tilgang (hub og spokes)

**❌ Bruke `*.privatelink.openai.azure.com` som endpoint URL:**
- Resultat: API-kall feiler med HTTPS-feil
- Fix: Bruk alltid custom subdomain (`myaccount.openai.azure.com`), DNS håndterer ruting

**❌ Managed identity uten RBAC-rolle:**
- Resultat: 403 Forbidden selv om nettverkstilgang er OK
- Fix: Tildel minst `Cognitive Services User` rolle på AI Services-ressursen

### 5. Production Readiness Checklist

**Sikkerhet:**
- [ ] Private endpoints aktivert for alle AI Services
- [ ] Public network access disabled (eller IP-baserte firewall-regler)
- [ ] Managed identity aktivert (eliminerer API-nøkler i kode)
- [ ] RBAC-roller tildelt med least privilege
- [ ] NSG-regler konfigurert (least privilege)
- [ ] Azure Firewall / WAF for outbound/inbound trafikk (enterprise)

**Overvåkning:**
- [ ] Diagnostic settings aktivert (send logs til Log Analytics)
- [ ] Network Watcher flowlogger aktivert (NSG)
- [ ] Azure Monitor alerts for nettverksfeil (429, 403, connection timeout)
- [ ] Private Link metrics overvåket (bytes in/out, connection count)

**Disaster Recovery:**
- [ ] Multi-region deployment vurdert (private endpoints per region)
- [ ] VNet peering konfigurert for failover
- [ ] DNS failover-strategi dokumentert
- [ ] Backup-plan for public access (emergency access)

**Dokumentasjon:**
- [ ] Nettverksdiagram (logical + physical)
- [ ] IP-adressering dokumentert (subnets, private endpoint IPs)
- [ ] DNS-konfigurasjon dokumentert (zones, records, forwarders)
- [ ] RBAC-roller og service principals dokumentert
- [ ] Runbook for troubleshooting

### 6. Spør kunden dette (før design)

1. **Sikkerhetsnivå:**
   - "Har dere compliance-krav som krever zero internett-eksponering?" → private endpoints
   - "Hva er risikovurdering av data lekkasje?" → akseptabelt nivå for kostnad

2. **Eksisterende nettverk:**
   - "Har dere eksisterende hub-spoke arkitektur?" → integrering vs ny VNet
   - "Bruker dere on-premises DNS-servere?" → conditional forwarders trengs

3. **On-premises tilkobling:**
   - "Trenger brukere on-premises tilgang til AI Services?" → VPN Gateway/ExpressRoute
   - "Har dere eksisterende ExpressRoute?" → reuse eller ny

4. **Multi-region:**
   - "Trenger dere DR i annen region?" → private endpoints per region
   - "Hva er akseptabel RTO/RPO?" → påvirker arkitektur

5. **Kostnadsbudsjett:**
   - "Hva er månedlig budsjett for nettverksinfrastruktur?" → private endpoints (~40 NOK/stk) vs service endpoints (gratis)
   - "Er data egress-volum relevant?" → intra-region vs inter-region trafikk

### 7. Quick Reference - Azure CLI/PowerShell

**Opprett Private Endpoint (Azure CLI):**
```bash
# Hent ressurs-ID for AI Services
csResourceId=$(az cognitiveservices account show \
  --resource-group myRG \
  --name myAIAccount \
  --query id --output tsv)

# Opprett private endpoint
az network private-endpoint create \
  --resource-group myRG \
  --name myAIPrivateEndpoint \
  --location norwayeast \
  --vnet-name myVNet \
  --subnet privateEndpointSubnet \
  --private-connection-resource-id $csResourceId \
  --group-id account \
  --connection-name myConnection

# Opprett DNS zone group (automatisk A-record)
az network private-endpoint dns-zone-group create \
  --resource-group myRG \
  --endpoint-name myAIPrivateEndpoint \
  --name myDNSZoneGroup \
  --private-dns-zone privatelink.cognitiveservices.azure.com \
  --zone-name cognitiveservices
```

**Disable Public Access (Azure CLI):**
```bash
az cognitiveservices account update \
  --resource-group myRG \
  --name myAIAccount \
  --set properties.publicNetworkAccess=Disabled
```

**Aktiver Managed Identity (Azure CLI):**
```bash
az cognitiveservices account identity assign \
  --resource-group myRG \
  --name myAIAccount
```

**Test DNS Resolution (PowerShell):**
```powershell
# Fra VNet VM - skal returnere privat IP
nslookup myaccount.cognitiveservices.azure.com

# Test port 443
Test-NetConnection -ComputerName 10.0.2.5 -Port 443
```

---

## Kilder og verifisering

**Verified (MCP microsoft-learn, 2026-02):**
- [Configure Foundry Tools virtual networks](https://learn.microsoft.com/en-us/azure/ai-services/cognitive-services-virtual-networks) - Hovedkilde for VNet-konfigurasjon, service endpoints, IP-regler, private endpoints
- [Configure secure networking for Azure AI platform services](https://learn.microsoft.com/en-us/azure/cloud-adoption-framework/scenarios/ai/platform/networking) - Arkitektur-guide fra Cloud Adoption Framework
- [Configure Azure OpenAI networking](https://learn.microsoft.com/en-us/azure/ai-foundry/openai/how-to/network) - Private endpoint oppsett for Azure OpenAI
- [Network and access configuration for Azure OpenAI On Your Data](https://learn.microsoft.com/en-us/azure/ai-foundry/openai/how-to/on-your-data-configuration) - Trusted services bypass, managed identity setup
- [Azure security baseline for Azure AI services](https://learn.microsoft.com/en-us/security/benchmark/azure/baselines/cognitive-services-security-baseline) - NSG-støtte (ikke støttet), private link (støttet), disable public access
- [Create a private endpoint for a secure connection to Azure AI Search](https://learn.microsoft.com/en-us/azure/search/service-create-private-endpoint) - Shared private link-mønster

**Baseline (modellkunnskap, januar 2025):**
- Azure Private Link pricing: ca. 40 NOK/måned per endpoint (basert på USD-priser og valutakurs)
- Custom subdomain-krav for private endpoints (dokumentert i flere Microsoft-kilder)
- NSG-støtte ikke tilgjengelig for AI Services (bekreftet via security baseline)
- Trusted services bypass med `networkAcls.bypass: "AzureServices"` (REST API-konfigurasjon)

**Sist verifisert:** 2026-02-03
**MCP calls:** 7 (microsoft_docs_search, microsoft_docs_fetch, microsoft_code_sample_search)
**Kilder:** 10 unike Microsoft Learn URLs
