ms-ai-architect/skills/ms-ai-engineering/references/rag-architecture/rag-security-rbac.md
Kjell Tore Guttormsen 712a143e58 fix(ms-ai-architect): RX-KB1 strip stale plain-Verified pipe-tails (87) + audit-deteksjon [skip-docs]
De 87 referansefilene bar en plain-text `| Verified: <dato>`-hale på **Last updated:**-linjen
i 500B-header-vinduet — usynlig for den bold-only kontrakt-stacken (kb-headers.mjs / audit
RE_VERIFIED), og claimet en verifisering judgen aldri gjorde (samme poison-klasse som de 14
bold **Verified:** MCP Spor 1 fjernet). Uhåndtert springer den også dual-Verified-fellen: R7s
insertVerifiedFields ville stemplet en bold-verdi ved siden av den plain → to motstridende
provenance-claims per fil.

- ny driver strip-stale-verified-pipe.mjs: frosset 87-manifest (18 advisor + 45 eng + 8 gov +
  16 sec), pure verdi-bevarende strip (kun ` | Verified: …`-halen; **Last updated:**-dato
  byte-eksakt), hard per-fil-invariant (linjeantall uendret, body byte-identisk, dato bevart),
  idempotent, atomicWriteSync (RX-OPS2 recovery-kontrakt).
- audit-corpus-headers.mjs: ny plain-Verified-deteksjon (RE_PLAIN_VERIFIED + plainVerifiedPipe)
  — gjør M4-blindheten synlig så en stale plain-hale ikke kan gjenoppstå stille (non-advisor scope).
- 87 filer strippet; plain Verified i vinduet 0/389; live-audit plainVerifiedPipe 0.

Mekanisme: +15 tester (12 strip + 3 audit). Suite 875→890 exit 0. validate-plugin.sh 250/0.

Utsatt → RX-KB1b: footer-dato-avvik + label-whitelist (annen dialekt, flag-to-human).
2026-07-16 20:04:52 +02:00

568 lines
No EOL
23 KiB
Markdown

# RAG Security - RBAC, Filtering, and Access Control
**Last updated:** 2026-06-19
**Status:** Preview (native ACL/RBAC), GA (security filters)
**Category:** RAG Architecture & Semantic Search
**Type:** reference
**Source:** https://learn.microsoft.com/azure/search/retrieval-augmented-generation-overview
---
## Innhold
- [Introduksjon](#introduksjon)
- [Kjernekomponenter](#kjernekomponenter)
- [Arkitekturmønstre](#arkitekturmønstre)
- [Beslutningsveiledning](#beslutningsveiledning)
- [Integrasjon med Microsoft-stakken](#integrasjon-med-microsoft-stakken)
- [Offentlig sektor (Norge)](#offentlig-sektor-norge)
- [Kostnad og lisensiering](#kostnad-og-lisensiering)
- [For arkitekten (Cosmo)](#for-arkitekten-cosmo)
- [Kilder og verifisering](#kilder-og-verifisering)
## Introduksjon
Sikkerhet i RAG-systemer (Retrieval-Augmented Generation) er kritisk for å beskytte sensitiv informasjon og overholde compliance-krav. Denne kunnskapsreferansen dekker dokumentnivå-tilgangskontroll (document-level access control), som sikrer at brukere kun kan hente og få svar basert på dokumenter de er autorisert til å se.
Azure AI Search støtter fire hovedtilnærminger til dokumentnivå-sikkerhet: security filters (GA), POSIX-like ACL/RBAC scopes (preview), Microsoft Purview sensitivity labels (preview), og SharePoint in Microsoft 365 ACLs (preview). Disse metodene lar organisasjoner bygge RAG-løsninger som respekterer eksisterende tilgangsmodeller og sikkerhetspolicyer.
Dokumentnivå-sikkerhet er spesielt viktig for RAG-applikasjoner i offentlig sektor, der ulike brukere og grupper må ha isolert tilgang til informasjon basert på rolle, organisatorisk tilhørighet, eller sikkerhetsgradert klassifisering.
## Kjernekomponenter
### 1. Security Filters (GA)
Security filters bruker string-sammenligning for å trimme søkeresultater basert på bruker- eller gruppeidentitet.
| Egenskap | Beskrivelse |
|----------|-------------|
| **Implementasjon** | OData-filter med `search.in()` funksjon |
| **Autentisering** | Ikke påkrevd (kun string matching) |
| **API-kompatibilitet** | Fungerer med alle versjoner/pakker |
| **Ytelse** | Subsekund responstid med `search.in()` |
| **Bruksområde** | Custom access models, ikke-Microsoft security frameworks |
**Viktige implementasjonsdetaljer:**
- Felttype: `Collection(Edm.String)`
- Attributter: `filterable: true`, `retrievable: false`
- Filter-syntaks: `group_ids/any(g:search.in(g, 'id1, id2, ...'))`
### 2. Native ACL/RBAC Scope Permissions (Preview)
Native støtte basert på Microsoft Entra ID-brukere og grupper.
| Tilnærming | Data Source | Støtte-nivå |
|-----------|-------------|-------------|
| **ADLS Gen2 ACL** | Azure Data Lake Storage Gen2 | Dokumentnivå (filer + directories) |
| **Azure Blob RBAC** | Azure Blob Storage | Container-nivå |
| **SharePoint ACL** | SharePoint in Microsoft 365 | Dokumentnivå (filer + list items) |
**Teknisk flyt:**
1. Index-schema opprettes med permission filters (preview API)
2. Indexer eller Push API henter ACL-metadata fra data source
3. Query-tid: `x-ms-query-source-authorization` header inneholder Microsoft Entra token
4. Azure AI Search matcher token mot ACL-metadata i hvert dokument
### 3. Microsoft Purview Sensitivity Labels (Preview)
Integrerer Microsoft Information Protection-policyer i RAG-søkepipeline.
| Komponent | Funksjon |
|-----------|----------|
| **Data sources** | Azure Blob, ADLS Gen2, SharePoint, OneLake |
| **Label storage** | Lagret som metadata i Azure AI Search index |
| **Enforcement** | Query-tid validering mot Purview policies |
| **Token** | Microsoft Entra token via `x-ms-query-source-authorization` |
### 4. Query-Time Access Enforcement
Azure AI Search utfører to-stegs sjekk ved query-tid (for ACL/RBAC-metoder):
1. **Index-nivå**: Validerer at applikasjonen har **Search Index Data Reader** rolle
2. **Dokument-nivå**: Matcher bruker/gruppe-token mot ACL-metadata i dokumenter
**Permission sources:**
| Type | Kilde |
|------|-------|
| `userIds` | `oid` claim fra `x-ms-query-source-authorization` token |
| `groupIds` | Group membership fra Microsoft Graph API |
| `rbacScope` | Storage container-permissions (Storage Blob Data Reader rolle) |
## Arkitekturmønstre
### Mønster 1: Security Filter Pattern (anbefalt for custom access models)
**Fordeler:**
- API-agnostic (fungerer på alle versjoner)
- Ingen autentiseringskrav
- Enkel å implementere
- God ytelse med `search.in()` funksjon
**Ulemper:**
- Krever manuell population av security-felt
- Ingen native integration med identity providers
- Kun string-sammenligning (ingen faktisk autentisering)
**Når bruke:**
- Custom access control models
- Ikke-Microsoft identity providers
- Legacy-systemer uten Entra ID
- Enklere sikkerhetskrav
**Implementasjon:**
```json
// Index schema
{
"name": "group_ids",
"type": "Collection(Edm.String)",
"filterable": true,
"retrievable": false
}
// Query filter
{
"filter": "group_ids/any(g:search.in(g, 'group1, group2, group3'))"
}
```
### Mønster 2: Native ACL/RBAC Pattern (anbefalt for Microsoft-stack)
**Fordeler:**
- Native integration med Microsoft Entra ID
- Arver permissions fra data source (ADLS Gen2, SharePoint)
- Automatisk ACL-synkronisering
- Microsoft Graph integration for nested groups
**Ulempler:**
- Preview-funksjon (risiko for breaking changes)
- Krever preview API/SDK
- Høyere initial kompleksitet
- Avhengighet av Microsoft-økosystem
**Når bruke:**
- Azure-native data sources (ADLS Gen2, Blob, SharePoint)
- Eksisterende ACL-modeller som skal preserveres
- Behov for automatic permission inheritance
- Enterprise-scenarier med Entra ID
**Tekniske krav:**
- Preview REST API: `2026-05-01-preview`
- Managed identity på Search service
- Role assignment: **Storage Blob Data Reader** (for ADLS Gen2/Blob)
### Mønster 3: Multitenant API Layer Pattern (anbefalt for multitenancy)
**Arkitektur:**
```
User → Intelligent App → Orchestrator → API Layer → Data Stores
Identity Provider
```
**API Layer ansvar:**
1. Route queries til riktig tenant-store
2. Enforce custom security trimming logic
3. Bruke riktig identity for platform-basert authorization
4. Logg access for audit purposes
**Fordeler:**
- Encapsulation av tenant/user access logic
- Single governance point
- Enklere testing og validering
- Separasjon av concerns
**Ulempler:**
- Ekstra latency (ekstra hop)
- Krever custom development
- Potensielt single point of failure
**Når bruke:**
- Multitenant SaaS-løsninger
- Komplekse authorization rules
- Behov for audit logging
- Custom security requirements beyond platform capabilities
## Beslutningsveiledning
### Beslutningstabell
| Scenario | Anbefalt tilnærming | Begrunnelse |
|----------|---------------------|-------------|
| Azure-native data sources med eksisterende ACLer | Native ACL/RBAC (preview) | Arver permissions automatisk, ingen manuell sync |
| Custom access models uten Entra ID | Security filters | API-agnostic, enkel implementasjon |
| Multitenant SaaS | API Layer + security filters | Full kontroll over tenant isolation |
| Microsoft 365-integrasjon | SharePoint ACL (preview) eller Purview labels | Native integration med M365 security |
| Offentlig sektor med sikkerhetsgradert info | Purview sensitivity labels + API layer | Compliance-fokusert, audit-ready |
| Legacy-systemer | Security filters | Ingen avhengighet av moderne identity providers |
### Vanlige feil
| Feil | Konsekvens | Løsning |
|------|------------|---------|
| Security-felt er retrievable | Identiteter eksponeres i search results | Sett `retrievable: false` |
| Bruker equality expressions (`eq`) for filters | Ytelsesproblem (sekunder latency med mange grupper) | Bruk `search.in()` funksjon |
| Glemmer å sette `filterable: true` | Filter fungerer ikke | Oppdater index schema |
| Hardkoder group IDs i kode | Maintenance nightmare | Hent group membership dynamisk (Microsoft Graph) |
| Antar nested groups fungerer automatisk | Underautorisasjon (brukere mister tilgang) | Expand nested groups før query (Graph API) |
| Ignorerer ACL hierarchy (ADLS Gen2) | Feil permissions på filer | Bruk indexer med ACL support (preview API) |
### Røde flagg
⚠️ **Du bør vurdere alternativ hvis:**
- Du ikke kan bruke preview-APIer i produksjon
- Du trenger document-level security men mangler identity management
- Du planlegger å eksponere RAG-endepunkt uten autentisering
- Du har > 1000 grupper per bruker (ytelsesutfordringer)
- Du trenger real-time ACL-synkronisering (preview har refresh-latency)
## Integrasjon med Microsoft-stakken
### Azure AI Search + Azure OpenAI On Your Data
**Dokument-level access control:**
1. Konfigurer security filters i Azure AI Search index
2. Azure OpenAI On Your Data bruker filters automatisk
3. Pass user token via `filter` parameter i API request
```json
{
"dataSources": [{
"type": "AzureCognitiveSearch",
"parameters": {
"endpoint": "<search-endpoint>",
"indexName": "<index-name>",
"filter": "group_ids/any(g:search.in(g, 'user-groups'))"
}
}]
}
```
### Entra ID Integration
| Komponent | Rolle |
|-----------|-------|
| **Authentication** | User identity via OAuth 2.0 / OpenID Connect |
| **Authorization** | Group membership via Microsoft Graph API |
| **Token** | JWT token i `x-ms-query-source-authorization` header |
| **Nested groups** | Automatic expansion via Graph API (for ACL patterns) |
**Supported group types (SharePoint ACL preview):**
- Microsoft Entra security groups ✅
- Microsoft 365 groups ✅
- Mail-enabled security groups ✅
- SharePoint groups ❌ (ikke støttet i preview)
### Microsoft Graph API
**Hent group membership:**
```http
GET https://graph.microsoft.com/v1.0/me/memberOf
Authorization: Bearer <user-token>
```
**Response:**
```json
{
"value": [
{ "id": "group-id-1", "displayName": "HR Team" },
{ "id": "group-id-2", "displayName": "Finance Team" }
]
}
```
### Copilot Studio + Power Platform
**Power Platform DLP + RAG:**
- Power Automate kan hente group membership fra Graph API
- Pass group IDs til Azure AI Search via connector
- Enforce additional DLP policies på retrieved content
**Copilot Studio custom data sources:**
- Bruk security filters i Azure AI Search data source configuration
- User context automatisk tilgjengelig i Copilot Studio flows
- Map user identity til Azure AI Search filter expression
## Offentlig sektor (Norge)
### GDPR + Datasuverenitet
| Krav | Implementasjon |
|------|----------------|
| **Data residency** | Azure AI Search i Norway East/West regions |
| **Audit logging** | Azure Monitor + Log Analytics for alle search queries |
| **Data minimization** | Security filter fields må være `retrievable: false` |
| **Right to be forgotten** | Document delete via Azure AI Search APIs |
| **Consent management** | Integrer consent-status i security filter logic |
### Schrems II + Cloud Act
**Anbefalinger:**
- Bruk Azure Confidential Computing for sensitive RAG workloads
- Customer-managed keys (CMK) for encryption at rest
- Private endpoints for network isolation
- Avoid cross-region data transfer (keep data in Norway regions)
### AI Act (EU)
**High-risk AI system requirements:**
- **Human oversight**: Implementer HITL (Human In The Loop) for RAG-svar på kritiske beslutninger
- **Transparency**: Logg hvilke dokumenter som ble retrieved og brukt i svar
- **Accuracy**: Test security filters med adversarial scenarios (authorization bypass attempts)
- **Documentation**: Vedlikehold ADR for security architecture decisions
### Forvaltningsloven + Offentleglova
| Lov | Relevant for RAG |
|-----|------------------|
| **Forvaltningsloven § 18** | Taushetsplikt → dokumentnivå-sikkerhet obligatorisk |
| **Offentleglova § 3** | Innsynsrett → audit trail for access requests |
| **Sikkerhetsloven** | Sikkerhetsgradert informasjon → Purview sensitivity labels + DLP |
**Sikkerhetsgradert informasjon:**
- **Ugradert**: Standard security filters
- **Begrenset/Konfidensielt**: Native ACL/RBAC + CMK
- **Hemmelig/Strengt hemmelig**: Ikke i Azure (krever on-premises eller Secure Cloud)
### Datasuverenitet
**Anbefalt stack for offentlig sektor:**
- Azure AI Search (Norway East/West)
- Azure OpenAI (Sweden Central med data residency commitment)
- Private endpoint for all connections
- Managed identity (unngå API keys)
- Customer Lockbox enabled (Microsoft support-tilgang)
## Kostnad og lisensiering
### Prismodell-oversikt
| Komponent | Kostnadsfaktor |
|-----------|----------------|
| **Azure AI Search** | Tier-basert (Basic, Standard, Storage Optimized) |
| **Security filters** | Ingen ekstra kostnad (inkludert i search cost) |
| **Native ACL/RBAC** | Graph API calls (per 1000 requests) + search cost |
| **Purview labels** | Microsoft Purview lisensiering (per user) |
| **SharePoint ACL** | SharePoint lisensiering (M365 E3/E5) |
### Estimert ekstra kostnad (preview features)
**Native ACL/RBAC:**
- Graph API: ~$0.0004 per request (group membership lookup)
- Antatt 1 lookup per query → $0.40 per 1000 queries
- Caching kan redusere Graph API calls betydelig
**Purview sensitivity labels:**
- Purview Information Protection: Inkludert i M365 E5 Compliance
- Uten E5: ca. $5-$12 per user/måned
### Optimaliseringstips
1. **Cache group membership**: Reduser Graph API calls med Redis/Azure Cache
2. **Bruk group-based access**: Unngå per-user ACLs (dårlig ytelse)
3. **Security filter over native ACL**: For high-volume scenarios (lavere latency)
4. **Batch ACL refresh**: Ikke sync ACLs på hver indexing-operasjon
5. **Monitor query latency**: Preview features kan ha variabel ytelse
## For arkitekten (Cosmo)
### Spørsmål å stille kunden
1. **Identity & Access:**
- Har dere Microsoft Entra ID (Azure AD)? Eller annen identity provider?
- Hvordan håndteres brukergrupper i dag? (flat structure, nested groups?)
- Finnes det eksisterende ACLer på data sources (SharePoint, ADLS Gen2)?
2. **Compliance & Regulering:**
- Er dataene sikkerhetsgradert (Ugradert/Begrenset/Konfidensielt/Hemmelig)?
- Hvilke compliance-krav gjelder? (GDPR, AI Act, Forvaltningsloven)
- Trenger dere audit logging av alle search queries?
3. **Teknisk modenhet:**
- Kan dere bruke preview-APIer i produksjon? (SLA, support-risiko)
- Har dere eksisterende Azure-infrastruktur? (VNet, Private endpoints)
- Hvilken CI/CD-modell brukes? (Terraform, Bicep, ARM templates)
4. **Skalerbarhet:**
- Forventet antall brukere? Queries per sekund?
- Hvor mange grupper per bruker i gjennomsnitt?
- Endres ACLer ofte? (real-time sync vs. batch refresh)
5. **Datakilder:**
- Hvor ligger dataene i dag? (SharePoint, ADLS Gen2, Blob, on-premises?)
- Finnes det sensitivity labels allerede? (Microsoft Purview)
- Kreves cross-source access control? (data fra flere systemer)
6. **Risk appetite:**
- Hva er konsekvensen av data leakage? (Kritisk, Høy, Medium, Lav)
- Akseptabelt med preview features? Eller kun GA-funksjonalitet?
- Hvor mye custom development kan teamet håndtere?
7. **Integration:**
- Skal RAG-løsningen integreres med eksisterende apps? (M365 Copilot, Power Platform)
- Trenger dere API layer for egen orchestration? (custom logic)
- Multitenant-behov? (delt infrastruktur for flere organisasjoner)
8. **Performance & Cost:**
- Hva er akseptabel latency for search queries? (subsekund, < 1 sek, < 5 sek)
- Budsjett for Azure AI Search? (Basic: ~$75/måned, Standard S1: ~$250/måned)
- Kan dere akseptere Graph API-kostnader for ACL enforcement?
### Fallgruver per modenhetsnivå
#### Beginner (Proof of Concept / Pilot)
**Vanlige feil:**
- Bruker equality expressions for security filters (ytelsesproblem)
- Glemmer å sette `retrievable: false` på security-felt
- Hardkoder group IDs i stedet for dynamisk henting
- Ignorerer nested groups (underautorisasjon)
**Anbefaling:**
- Start med security filters (GA, enklest)
- Test med < 100 users og < 10 groups
- Bruk Azure AI Search Basic tier for kostnadsreduksjon
- Mock group membership (ingen Graph API-avhengighet)
#### Intermediate (Production-ready MVP)
**Vanlige feil:**
- Antar preview-APIer er production-ready (breaking changes-risiko)
- Mangler caching av group membership (unødvendig Graph API-trafikk)
- Ingen audit logging av access attempts (compliance-gap)
- Glemmer å teste authorization bypass scenarios
**Anbefaling:**
- Implementer API layer for access control logic
- Bruk Azure Monitor + Log Analytics for audit trail
- Cache group membership i Redis (TTL: 15-30 min)
- Kjør penetration testing på security filters
- Bruk managed identity (unngå API keys)
#### Advanced (Enterprise-scale)
**Vanlige feil:**
- Over-engineering med native ACL når security filters holder
- Kompleks multitenant-arkitektur uten klare tenant boundaries
- Mangel på disaster recovery plan for ACL-data
- Ingen performance benchmarking av query latency med filters
**Anbefaling:**
- Kombiner security filters med native ACL (hybrid approach)
- Implementer geo-redundant Azure AI Search for HA
- Bruk Application Insights for distributed tracing
- Automatiser ACL-refresh med Azure Functions (scheduled triggers)
- Dokumenter security architecture i ADR (Architecture Decision Records)
### Anbefalinger per modenhetsnivå
| Nivå | Sikkerhetstilnærming | Rationale |
|------|----------------------|-----------|
| **Beginner** | Security filters (GA) | Enklest, ingen preview-risiko, lavest kostnad |
| **Intermediate** | Security filters + Graph API | Dynamisk group membership, bedre maintainability |
| **Advanced** | Native ACL/RBAC (preview) + API layer | Automatic permission inheritance, enterprise-ready |
## Kilder og verifisering
### Microsoft Learn-dokumentasjon (Verified via MCP)
1. **Document-level access control overview**
- URL: https://learn.microsoft.com/en-us/azure/search/search-document-level-access-overview
- Confidence: **Verified** (MCP-fetch 2026-02)
- Dekning: Alle fire patterns (security filters, ACL/RBAC, Purview, SharePoint)
2. **Security filters for trimming results**
- URL: https://learn.microsoft.com/en-us/azure/search/search-security-trimming-for-azure-search
- Confidence: **Verified** (MCP-fetch 2026-02)
- Dekning: `search.in()` funksjon, index schema, query syntax
3. **Query-time ACL and RBAC enforcement**
- URL: https://learn.microsoft.com/en-us/azure/search/search-query-access-control-rbac-enforcement
- Confidence: **Verified** (MCP-search 2026-02)
- Dekning: Preview API, permission filter workflow, Graph API integration
4. **Use ADLS Gen2 indexer for ACL ingestion**
- URL: https://learn.microsoft.com/en-us/azure/search/search-indexer-access-control-lists-and-role-based-access
- Confidence: **Verified** (MCP-search 2026-02)
- Dekning: Hierarchical permissions, POSIX-like ACLs, indexer configuration
5. **Azure OpenAI On Your Data - Document-level access control**
- URL: https://learn.microsoft.com/en-us/azure/foundry-classic/openai/how-to/on-your-data-configuration#document-level-access-control
- Confidence: **Verified** (MCP-search 2026-02)
- Dekning: RAG integration, filter parameter, group_ids field mapping
6. **Security in Azure AI Search**
- URL: https://learn.microsoft.com/en-us/azure/search/search-security-overview
- Confidence: **Verified** (MCP-search 2026-02)
- Dekning: Authorization, row-level security, RBAC roles
7. **Design secure multitenant RAG inferencing solution**
- URL: https://learn.microsoft.com/en-us/azure/architecture/ai-ml/guide/secure-multitenant-rag
- Confidence: **Verified** (MCP-search 2026-02)
- Dekning: Multitenant patterns, API layer architecture, filtering strategies
8. **Retrieval-augmented Generation (RAG) in Azure AI Search**
- URL: https://learn.microsoft.com/en-us/azure/search/retrieval-augmented-generation-overview
- Confidence: **Verified** (MCP-search 2026-02)
- Dekning: RAG challenges, security & governance
9. **Retrieval augmented generation (RAG) and indexes (AI Foundry)**
- URL: https://learn.microsoft.com/en-us/azure/foundry/concepts/retrieval-augmented-generation?view=foundry-classic
- Confidence: **Verified** (MCP-search 2026-02)
- Dekning: Security considerations, access control at retrieval time
10. **RAG LLM evaluation - Responsible AI & security**
- URL: https://learn.microsoft.com/en-us/azure/architecture/ai-ml/guide/rag/rag-llm-evaluation-phase#responsible-ai,-content-safety,-and-security-evaluation
- Confidence: **Verified** (MCP-search 2026-02)
- Dekning: Content safety, privacy, adversarial threats
### Code samples (Verified via MCP)
11. **Security filter query example (C#)**
- URL: https://learn.microsoft.com/en-us/azure/search/search-security-trimming-for-azure-search#apply-the-security-filter-in-the-query
- Confidence: **Verified** (MCP code sample search 2026-02)
- Language: HTTP / C#
- Dekning: `search.in()` filter syntax
### Konfidensnivå per seksjon
| Seksjon | Confidence | Kilde |
|---------|------------|-------|
| Kjernekomponenter | **Verified** | MCP docs (1, 2, 3, 4) |
| Arkitekturmønstre | **Verified** | MCP docs (1, 2, 7) |
| Beslutningsveiledning | **Baseline** | Modellkunnskap + MCP context |
| Microsoft-stack integrasjon | **Verified** | MCP docs (5, 9) |
| Offentlig sektor (Norge) | **Baseline** | Modellkunnskap (GDPR, AI Act, norsk lov) |
| Kostnad og lisensiering | **Baseline** | Estimater basert på Azure pricing (ikke direkte MCP-verified) |
| For arkitekten (Cosmo) | **Baseline** | Best practices + erfaring |
---
**Sist verifisert mot Microsoft Learn:** 2026-06-19 (via microsoft-learn MCP server)
**Preview API-versjon:** 2026-05-01-preview (ACL/RBAC, Purview labels, SharePoint ACL)
**GA features:** Security filters (alle API-versjoner)
**Note:** Preview features kan endre seg. Konsulter alltid nyeste dokumentasjon før produksjon.
### Dokumentnivå-tilgangskontroll — oppdatering 2026-04
**4 tilnærminger (oppdatert):**
| Tilnærming | Status | Beskrivelse |
|-----------|--------|-------------|
| **Security filters** | GA | String-sammenligning med `search.in()` — API-agnostisk |
| **POSIX-like ACL/RBAC scopes** | Preview | Microsoft Entra ID-autentisering mot dokument-ACLer (ADLS Gen2) |
| **Microsoft Purview sensitivity labels** | Preview | Entra-token + Purview policy enforced ved query-tid |
| **SharePoint M365 ACLs** | Preview | SharePoint-tilganger ekstraheres av indexer og håndheves ved søk |
**ADLS Gen2 ACL/RBAC (preview):**
- RBAC: container-nivå (grov tilgangskontroll for alle dokumenter i container)
- ACL: fil/mappe-nivå (finkornet per-dokument tilgangskontroll)
- ABAC: **ikke støttet** i Azure AI Search
- Tilgangsevaluering: RBAC sjekkes først, deretter ACL. Tilgang gis om én av dem tillater det
- Permissions synkroniseres ved: første full indexer-kjøring, nye dokumenter, eller manuell trigger via `/resync` (preview)
**Query-enforcement:** `x-ms-query-source-authorization`-header med Entra-token aktiverer automatisk trimming.