# Microsoft Purview Data Governance

**Last updated:** 2026-04
**Status:** GA
**Category:** Data Engineering for AI

---

## Introduksjon

Microsoft Purview er Microsofts samlete plattform for datastyring, risikohåndtering og compliance. For AI-løsninger er Purview avgjørende fordi det gir oversikt over hvor sensitiv data befinner seg, hvordan data flyter gjennom organisasjonen (lineage), og hvorvidt datakvaliteten er tilstrekkelig for å trene pålitelige modeller. Uten god datastyring kan AI-modeller forsterke bias, bryte personvernregler eller produsere upålitelige prediksjoner.

For norsk offentlig sektor er datahersking (data governance) regulert gjennom Forvaltningsloven, Personopplysningsloven (GDPR), og Digdir-prinsipper for informasjonsforvaltning. Purview tilbyr verktøy for automatisk klassifisering av personopplysninger, sensitivitetsmerking, og DPIA-støtte som direkte adresserer disse kravene.

Denne referansen dekker implementering av Purview-katalog, dataklassifisering, lineage-sporing på tvers av Fabric, policy-håndhevelse og compliance-auditing for AI-datapipelines.

---

## Purview Catalog and Asset Registration

### Microsoft Purview Unified Catalog

Purview Unified Catalog er den sentrale opplevelsen for å oppdage, utforske og styre data og analytiske artefakter på tvers av organisasjonen.

| Komponent | Funksjon | Relevans for AI |
|---|---|---|
| **Data Map** | Automatisk skanning og katalogisering av datakilder | Finn treningsdata |
| **Unified Catalog** | Søk, bla og oppdagelse av dataassets | Feature discovery |
| **Governance Domains** | Organisering av data etter forretningsområde | Ansvarsfordeling |
| **Data Products** | Kuraterte datasett med forretningskontekst | ML-datasett |
| **Business Glossary** | Forretningsvokabular knyttet til tekniske assets | Forståelighet |

### Asset Registration

```
Datakilder som kan registreres i Purview:
┌─────────────────────────────────────────────────────────────┐
│ Microsoft Fabric                                             │
│  ├── Lakehouse (tabeller, filer)                            │
│  ├── Data Warehouse                                          │
│  ├── KQL Database                                            │
│  ├── Notebooks                                               │
│  ├── Pipelines (Data Factory)                                │
│  ├── Dataflow Gen2                                           │
│  └── Power BI (semantic models, reports, dashboards)        │
├─────────────────────────────────────────────────────────────┤
│ Azure                                                        │
│  ├── Azure SQL Database                                      │
│  ├── Azure Data Lake Storage Gen2                            │
│  ├── Azure Cosmos DB                                         │
│  ├── Azure Synapse Analytics                                 │
│  └── Azure Blob Storage                                      │
├─────────────────────────────────────────────────────────────┤
│ On-premises                                                  │
│  ├── SQL Server                                              │
│  ├── Oracle Database                                         │
│  └── File shares                                             │
└─────────────────────────────────────────────────────────────┘
```

### Skanning av Fabric Tenant

For å registrere Fabric-assets i Purview:

1. Naviger til Purview portal > Unified Catalog > Catalog Management
2. Registrer Microsoft Fabric som datakilde
3. Konfigurer skanning av Fabric-tenanten
4. Velg workspaces som skal inkluderes

Etter skanning er følgende Fabric-elementer tilgjengelig i katalogen:

| Fabric-opplevelse | Inventerte elementer |
|---|---|
| Real-Time Analytics | KQL Database, KQL Queryset |
| Data Science | Experiment, ML Model |
| Data Factory | Data Pipeline, Dataflow Gen2 |
| Data Engineering | Lakehouse, Notebook, Spark Job Definition, SQL Analytics Endpoint |
| Data Warehouse | Warehouse |
| Power BI | Dashboard, Dataflow, Datamart, Semantic Model, Report |

---

## Data Classification and Sensitivity Labels

### Automatisk klassifisering

Purview inkluderer over 200 innebygde klassifiserere for sensitive datatyper:

| Kategori | Eksempler | Relevans for Norge |
|---|---|---|
| **Personidentifisering** | Fødselsnummer, passnummer | Norsk fødselsnummer (11 siffer) |
| **Finansiell** | Bankkontonummer, kredittkortnummer | IBAN, norske kontonumre |
| **Helse** | Medisinsk terminologi, diagnosekoder | Helseopplysninger (særkategori GDPR) |
| **Kontaktinfo** | E-post, telefonnummer, adresse | Personopplysninger |
| **Autentisering** | Passord, API-nøkler, tokens | Sikkerhetskritisk |

### Sensitivitetsmerking

```
Sensitivitetsnivåer (typisk norsk offentlig sektor):
┌──────────────────────────────────────────────────────┐
│ Strengt fortrolig  │ Gradert informasjon, helse      │
├──────────────────────────────────────────────────────┤
│ Fortrolig          │ Personopplysninger, intern       │
├──────────────────────────────────────────────────────┤
│ Intern             │ Forretningssensitiv, ikke-offentl│
├──────────────────────────────────────────────────────┤
│ Offentlig          │ Åpne data, publisert informasjon │
└──────────────────────────────────────────────────────┘
```

### Klassifisering vs. sensitivitetsmerking

| Aspekt | Klassifisering | Sensitivitetsmerking |
|---|---|---|
| **Definisjon** | Regex/mønster som identifiserer datatyper | Kategoritag basert på forretningspåvirkning |
| **Eksempler** | "EU National ID", "Credit Card" | "Fortrolig", "Strengt fortrolig" |
| **Omfang** | Begrenset til Data Map | Følger data på tvers av tjenester |
| **Tilordning** | Automatisk via skanning | Auto-labeling policy + manuell |
| **Antall per asset** | Flere klassifiseringer mulig | Kun én sensitivitetsmerke |

### Auto-labeling Policy

```
Opprett auto-labeling policy i Purview:

1. Purview Portal > Information Protection > Auto-labeling
2. Definer policy:
   - Navn: "PII-i-Fabric-Lakehouse"
   - Scope: Fabric Lakehouse-tabeller
   - Betingelse: Inneholder "Norwegian National ID Number"
   - Handling: Merk som "Fortrolig"
3. Aktiver i simuleringsmodus først (7 dager)
4. Etter validering: Aktiver automatisk
```

---

## Lineage Tracking Across Fabric

### Automatisk lineage

Purview fanger automatisk datalineage fra Fabric-elementer etter skanning:

```
Lineage-eksempel:

Azure SQL DB ──> Data Pipeline ──> Lakehouse (Bronze)
                                       │
                                 Notebook (PySpark)
                                       │
                                 Lakehouse (Silver)
                                       │
                                 Notebook (ML Training)
                                       │
                                 ML Model ──> Power BI Report
```

### Støttede lineage-typer

| Datakilde/prosess | Lineage-omfang |
|---|---|
| **Data Factory Pipeline** | Copy Activity, Data Flow |
| **Dataflow Gen2** | Alle transformasjoner |
| **Notebook** | Lakehouse-til-Lakehouse |
| **Lakehouse** | Tabell-nivå metadata |
| **Power BI** | Semantic Model → Report → Dashboard |
| **Azure Data Factory** | Copy, Data Flow, SSIS |

### Lineage-visning i Purview

For å se lineage:
1. Unified Catalog > Browse > Microsoft Fabric > Fabric Workspaces
2. Velg workspace og Fabric-element
3. Klikk "Lineage"-fanen

### Kjente begrensninger

- Eksterne datakilder som upstream i non-Power BI lineage støttes ikke ennå
- Cross-workspace lineage for non-Power BI er begrenset
- Notebook → Pipeline lineage støttes ikke

### Manuell lineage via REST API

For tilfeller der automatisk lineage ikke fanges:

```python
# Bruk Apache Atlas REST API for å registrere manuell lineage
import requests

purview_endpoint = "https://<account>.purview.azure.com"
headers = {"Authorization": f"Bearer {access_token}"}

# Definer lineage-relasjon
lineage_payload = {
    "typeName": "Process",
    "attributes": {
        "qualifiedName": "custom-ml-pipeline-v1",
        "name": "ML Feature Pipeline"
    },
    "inputs": [
        {"typeName": "azure_datalake_gen2_path",
         "uniqueAttributes": {"qualifiedName": "source_path"}}
    ],
    "outputs": [
        {"typeName": "azure_datalake_gen2_path",
         "uniqueAttributes": {"qualifiedName": "output_path"}}
    ]
}

response = requests.post(
    f"{purview_endpoint}/catalog/api/atlas/v2/entity",
    headers=headers,
    json={"entity": lineage_payload}
)
```

---

## Policy Enforcement and Access Management

### Data Owner Policies

Purview Data Owner Policies muliggjør sentralisert tilgangsstyring:

| Policy-type | Beskrivelse | Støttede kilder |
|---|---|---|
| **Read** | Lesetilgang til data | Azure SQL, ADLS Gen2, Fabric |
| **Modify** | Skrivetilgang til data | Azure SQL, ADLS Gen2 |
| **Data Use** | Bruk i analytics-opplevelser | Fabric workspaces |

### Governance Domains og OKR-er

Governance Domains er nå den sentrale organiseringsenhet for glossary terms i Unified Catalog. Workflow: opprett term (Draft) → rediger → publiser. Governance domain MÅ publiseres FØR terms publiseres. Termer kan linkes til data products og critical data elements på tvers av domains. Bulk edit opptil 50 terms (kun Draft-state). Flytt terms mellom domains krever Data Steward-rolle i BEGGE domains; parent-term drar med seg child-terms. Expire-funksjon gjør termen usynlig for alle unntatt Data Stewards og Domain Owners. For å slette: unpublish → fjern alle lenker → delete. *(Verified MCP 2026-04)*

```
Governance Domain: "AI og Maskinlæring"
├── Glossary Terms (Data Steward-rolle påkrevd)
│   ├── "Treningsdata" -- Definisjon og bruksregler
│   ├── "Feature Store" -- Standard for feature-lagring
│   └── "Ground Truth" -- Krav til merkede datasett
├── Critical Data Elements
│   ├── "Fødselsnummer" -- PII, krever anonymisering
│   └── "Diagnose-kode" -- Helseopplysning, særkategori
├── OKRs
│   ├── "90% av AI-datasett klassifisert innen Q2"
│   └── "100% lineage-dekning for ML-pipelines"
└── Data Products (kan linkes til glossary terms)
    ├── "Customer 360 Feature Set"
    └── "Trafikkdata for ML"
```

---

## GDPR/HIPAA Compliance Auditing

### GDPR-relevant funksjonalitet

| GDPR-krav | Purview-funksjon |
|---|---|
| **Artikkel 30: Behandlingsprotokoll** | Data Map + Lineage |
| **Artikkel 35: DPIA** | Klassifisering + sensitivitetsmerking |
| **Artikkel 17: Rett til sletting** | Asset-søk for å finne PII-lokasjon |
| **Artikkel 20: Dataportabilitet** | Data Products med eksportfunksjon |
| **Artikkel 25: Privacy by Design** | Governance Domains med policy |

### Compliance-dashbord

Purview Data Estate Insights gir oversikt over:
- Antall klassifiserte vs. uklassifiserte assets
- Distribusjon av sensitivitetsmerker
- Skanningsdekning per datakilde
- Lineage-hull og manglende forbindelser

### Audit-sporing for AI-data

```python
# Eksempel: Generer compliance-rapport for AI-treningsdata
# Bruker Purview REST API

def get_classified_assets(purview_endpoint, token, classification):
    """Finn alle assets med en gitt klassifisering."""
    url = f"{purview_endpoint}/catalog/api/search/query"
    headers = {"Authorization": f"Bearer {token}"}
    body = {
        "keywords": "*",
        "filter": {
            "classification": classification
        },
        "limit": 100
    }
    response = requests.post(url, headers=headers, json=body)
    return response.json()

# Finn alle assets med personnummer
pii_assets = get_classified_assets(endpoint, token, "Norwegian National ID Number")

# Generer rapport
for asset in pii_assets["value"]:
    print(f"Asset: {asset['name']}")
    print(f"  Type: {asset['entityType']}")
    print(f"  Location: {asset['qualifiedName']}")
    print(f"  Labels: {asset.get('sensitivityLabel', 'None')}")
```

### Delta Lake GDPR-sletting

For å håndtere "rett til sletting" i Lakehouse:

```python
from delta.tables import DeltaTable

# Slett persondata basert på fødselsnummer
dt = DeltaTable.forPath(spark, "Tables/silver/customer_data")
dt.delete("national_id = '01019912345'")

# For Time-To-Live (TTL) basert sletting
# Slett alle rader eldre enn 13 måneder
from pyspark.sql.functions import current_date, expr
dt.delete(expr("created_date < current_date() - INTERVAL 13 MONTHS"))

# VACUUM for å fysisk fjerne data
dt.vacuum(0)  # Fjern umiddelbart (krever retentionCheck disabled)
```

---

## Purview Governance for Fabric Copilots og Agenter *(Verified MCP 2026-04)*

Microsoft Purview gir nå governance-dekning for Fabric Copilots og agenter — et nytt område som dekker AI-generert innhold i Fabric-arbeidsmiljøer.

| Funksjonalitet | Beskrivelse |
|---------------|-------------|
| **Risk discovery** | Oppdager sensitiv informasjon i prompts og AI-responser i Fabric Copilots |
| **Audit coverage** | Loggfører AI-interaksjoner (hvem spurte hva, når, hvilken respons) for compliance |
| **Retention policies** | Beholder og sletter AI-generert innhold etter definerte retention-regler |
| **eDiscovery** | AI-generert innhold er søkbart og kan inkluderes i juridiske eDiscovery-prosesser |

**Relevans for norsk offentlig sektor:**
- Offentlige virksomheter som bruker Copilot i Fabric-løsninger må sikre at AI-interaksjoner er sporbare og underlagt arkivlovgivningen
- Purview gir mulighet for å dokumentere AI-beslutningsprosesser i henhold til Forvaltningslovens krav om begrunnelse

## Referanser

- [Use Microsoft Purview to govern Microsoft Fabric](https://learn.microsoft.com/en-us/fabric/governance/microsoft-purview-fabric) -- Purview-Fabric-integrasjon
- [How to get lineage from Microsoft Fabric items into Microsoft Purview](https://learn.microsoft.com/en-us/purview/data-map-lineage-fabric) -- Lineage fra Fabric
- [Data lineage in classic Data Catalog](https://learn.microsoft.com/en-us/purview/data-gov-classic-lineage) -- Lineage-konsepter
- [Learn about sensitivity labels in Data Map](https://learn.microsoft.com/en-us/purview/data-map-sensitivity-labels) -- Sensitivitetsmerking
- [Create and manage glossary terms](https://learn.microsoft.com/en-us/purview/unified-catalog-glossary-terms-create-manage) -- Business glossary *(Verified MCP 2026-04)* — Bulk edit opptil 50 terms (Draft-state), flytt terms mellom governance domains (Data Steward i begge domains kreves), custom attribute-filter i Enterprise glossary, Expire-workflow, Delete-workflow (unpublish + fjern lenker → delete). Governance domain MÅ publiseres FØR terms publiseres. Parent-term drar med seg child-terms ved flytting. Related critical data elements kan linkes på tvers av domains.
- [Glossary terms in Unified Catalog](https://learn.microsoft.com/en-us/purview/unified-catalog-glossary-terms) -- Aktive glossary-termer
- [Learn about Microsoft Purview Unified Catalog](https://learn.microsoft.com/en-us/purview/unified-catalog) -- Oversikt over Unified Catalog
- [Set up data quality for Fabric Lakehouse data](https://learn.microsoft.com/en-us/purview/unified-catalog-data-quality-fabric-lakehouse) -- Datakvalitet for Fabric
- [Lineage in Fabric](https://learn.microsoft.com/en-us/fabric/governance/lineage) -- Innebygd lineage-visning

---

## For Cosmo

- **Bruk denne referansen** når brukeren trenger datahersking for AI-prosjekter, compliance-støtte (GDPR, HIPAA), eller oversikt over datasensitivitet i treningsdata.
- For norsk offentlig sektor: Purview er kritisk for å oppfylle **Forvaltningslovens** krav til dokumentasjon og **Personopplysningslovens** krav til behandlingsprotokoll. Anbefal alltid Purview som del av AI-arkitekturen.
- **Lineage er den viktigste AI-governance-funksjonen** -- den dokumenterer hvordan treningsdata ble produsert, noe som er nødvendig for reproduserbarhet og forklarbarhet av AI-modeller.
- Kombiner **automatisk klassifisering** med **Governance Domains** for å skille mellom data som kan brukes fritt til ML-trening og data som krever anonymisering eller samtykke.
- Anbefal **Data Products** i Purview for å kuratere AI-klare datasett med dokumentert kvalitet, eierskap og bruksbetingelser -- dette bygger tillit til dataene som brukes i AI-modeller.
