# Microsoft Purview Data Governance

**Last updated:** 2026-06-19
**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 |

**DLP for strukturert Fabric-data** *(Verified MCP 2026-06-19)*: Purview DLP-policyer støtter strukturert data i Fabric (lakehouse, warehouse, databaser, semantic models). DLP oppdager opplasting av sensitiv data til OneLake og kan håndheve tilgangsbegrensninger på sensitive assets på tvers av Fabric KQL Database, Fabric SQL Database og Fabric Data Warehouse. Policyer evaluerer sensitivity labels og sensitive info types (f.eks. kredittkort, personnummer), kan generere policy tips til Fabric-brukere og alerts til sikkerhetsadmins, og kan konfigureres slik at workspace-admins kan overstyre dem.

**Insider Risk Management for Fabric** *(Verified MCP 2026-06-19)*: IRM har ferdige risikoindikatorer for Power BI- og lakehouse-aktiviteter, inkludert deteksjoner for Fabric-dataeksfiltrering (eksport av Power BI-rapporter, flytting av data fra lakehouse/warehouse) via data theft-policyen.

**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.
