To operasjoner, én økt (⊥ R7), begge ren metadata-normalisering (verdi aldri fabrikkert). Premiss-korreksjon (ground truth 2026-07-07): roadmap sa «27 none + 4 ai-act». Målt: 29 mangler bold **Status:** = 25 rene none + 4 ai-act (plain Status: GA). De «27» inkluderte 2 for mye — 2 filer (custom-dashboards-ai-operations, zero-trust-ai-services) har bold **Status:** KUN forbi byte 500 (present for full-fil-audit, usynlig for 500B header-parser) → egen header-slanking-residual (§8-register), utenfor Enhet 3. Op A — Status-backfill 25 rene none: utvidet backfill-status.mjs MANIFEST 14→39 (samme statusForFile + insertMetaField + hard per-fil-invariant, idempotent skip på de 14 R21-gjorte). Alle 25 → **Status:** Established Practice (ingen matcher template|matrix|benchmarks|register). Diff +25/-0. Op B — ai-act dual-header-dedup (4 filer): ny driver dedup-plain-header.mjs + 2 rene primitiver i transform.mjs — boldifyPlainField (plain→bold, verdi bevart byte-eksakt, header-scoped, idempotent) + dropRedundantPlainField (sletter plain KUN når bold m/ identisk verdi beviser redundans; kaster ved avvik/manglende bold). Per fil: plain Last updated: + Status: GA → bold (2026-06-18/2026-02, GA bevart), redundant plain Category: fjernet. Hard per-fil-invariant (net -1 linje, begge felt bold m/ bevart verdi, ingen plain-header igjen, body byte-identisk). Diff -12/+8. Verifisering: test-backfill-status 8/8 + test-dedup-plain-header 13/13; audit Missing Status 29→0, Missing English Last updated 4→0; skills-diff 29 filer +33/-12 (kun **Status:** + 8 bold-swaps), diff-kontekst inspisert per fil; begge drivere idempotent (re-run 0 writes); suite 806/806 exit 0; none=8 uendret (Enhet 4).
558 lines
22 KiB
Markdown
558 lines
22 KiB
Markdown
# Supply Chain Security for AI Models and Dependencies
|
|
|
|
**Category:** AI Security Engineering
|
|
**Last updated:** 2026-06-19
|
|
**Relatert plattform:** Microsoft Foundry, Azure Machine Learning, Azure DevOps, Microsoft Defender for Cloud
|
|
**Type:** reference
|
|
**Source:** https://learn.microsoft.com/azure/machine-learning/concept-vulnerability-management
|
|
**Status:** Established Practice
|
|
|
|
---
|
|
|
|
## Innhold
|
|
|
|
- [Oversikt](#oversikt)
|
|
- [1. Model Provenance Tracking](#1-model-provenance-tracking)
|
|
- [2. Dependency Vulnerability Scanning](#2-dependency-vulnerability-scanning)
|
|
- [3. Vendor Security Assessment](#3-vendor-security-assessment)
|
|
- [4. Model Poisoning Prevention](#4-model-poisoning-prevention)
|
|
- [5. Software Bill of Materials (SBOM) for AI](#5-software-bill-of-materials-sbom-for-ai)
|
|
- [6. Secure ML Supply Chain: Oppsummert Implementasjon](#6-secure-ml-supply-chain-oppsummert-implementasjon)
|
|
- [For Cosmo: Veiledning i Arkitekturdialog](#for-cosmo-veiledning-i-arkitekturdialog)
|
|
- [Referanser og Videre Lesning](#referanser-og-videre-lesning)
|
|
|
|
## Oversikt
|
|
|
|
Supply chain security for AI-modeller handler om å sikre integriteten og autentisiteten til AI-komponenter gjennom hele livssyklusen — fra treningsdata og pre-trained models til dependencies og deployment artifacts. I motsetning til tradisjonell software supply chain security, må AI-systemer også beskytte modellvekter, datasett, og ML-spesifikke komponenter mot kompromittering.
|
|
|
|
Angrep mot AI supply chain kan introdusere backdoors i modeller, forgifte treningsdata, eller eksfiltrere sensitiv informasjon via model inference. Microsoft Azure Security Benchmark klassifiserer dette under **AI-1: Ensure use of approved models** som en "must have"-kontroll.
|
|
|
|
### Unike utfordringer for AI supply chain
|
|
|
|
- **Model provenance**: Modeller lastes ned fra public repositories (HuggingFace, Model Zoo) uten verifisering
|
|
- **Data poisoning**: Treningsdata fra untrusted sources kan inneholde skadelig innhold
|
|
- **Transitive dependencies**: Python-pakker (PyTorch, TensorFlow) har dype dependency trees
|
|
- **Immutable artifacts**: Kompilerte modeller (ONNX, MLflow) er vanskelig å inspisere for backdoors
|
|
- **Third-party MLaaS**: Outsourcing av trening til tredjepartsleverandører introduserer tillit-risiko
|
|
|
|
---
|
|
|
|
## 1. Model Provenance Tracking
|
|
|
|
### Hva er model provenance?
|
|
|
|
Model provenance er end-to-end sporbarhet av en modells opprinnelse, treningsprosess, og modifikasjoner. Dette inkluderer:
|
|
|
|
- **Datasett-lineage**: Hvilke data ble brukt for trening?
|
|
- **Treningsjobb-metadata**: Hyperparametere, compute resources, tidspunkt
|
|
- **Model registry history**: Versjonering, approvals, deployment records
|
|
- **Audit trails**: Hvem registrerte, godkjente, eller deployet modellen?
|
|
|
|
### Implementering i Azure Machine Learning
|
|
|
|
Azure Machine Learning Model Registry fungerer som single source of truth:
|
|
|
|
```python
|
|
from azure.ai.ml import MLClient
|
|
from azure.ai.ml.entities import Model
|
|
from azure.identity import DefaultAzureCredential
|
|
|
|
ml_client = MLClient(
|
|
credential=DefaultAzureCredential(),
|
|
subscription_id="<subscription-id>",
|
|
resource_group_name="<resource-group>",
|
|
workspace_name="<workspace-name>"
|
|
)
|
|
|
|
# Registrer modell med provenance metadata
|
|
model = Model(
|
|
path="./model",
|
|
name="fraud-detection-v2",
|
|
version="2.0",
|
|
description="Trained on 2025-Q4 dataset",
|
|
tags={
|
|
"training_job": "run_12345",
|
|
"data_version": "v2.3",
|
|
"approved_by": "security-team",
|
|
"scan_status": "passed"
|
|
},
|
|
properties={
|
|
"training_dataset_id": "azureml:fraud-data:2",
|
|
"validation_accuracy": "0.94"
|
|
}
|
|
)
|
|
|
|
ml_client.models.create_or_update(model)
|
|
```
|
|
|
|
### Beste praksis
|
|
|
|
1. **Hash verification**: Lagre SHA-256 hash av modellvekter ved registrering
|
|
2. **Immutable tags**: Bruk tags som ikke kan overskrives (`created_date`, `git_commit`)
|
|
3. **Signed models**: Implementer code signing for modell artifacts
|
|
4. **Centralized registry**: Bruk Azure ML registries på tvers av subscriptions/workspaces
|
|
|
|
---
|
|
|
|
## 2. Dependency Vulnerability Scanning
|
|
|
|
### Trusselbildet
|
|
|
|
AI-modeller avhenger av dype Python dependency trees (eksempel: PyTorch → NumPy → BLAS). Sårbarheter i disse komponentene kan utnyttes til:
|
|
|
|
- **Remote code execution**: Via malicious pickle files i modellformater
|
|
- **Data exfiltration**: Kompromitterte pakker som sender treningsdata til eksternt endepunkt
|
|
- **Supply chain attacks**: Typosquatting (pytorch vs. py-torch), package hijacking
|
|
|
|
MITRE ATT&CK klassifiserer dette som **T1195: Supply Chain Compromise**.
|
|
|
|
### Azure-verktøy for scanning
|
|
|
|
#### 1. Azure DevOps Dependency Scanning
|
|
|
|
Aktivert via GitHub Advanced Security for Azure DevOps:
|
|
|
|
```yaml
|
|
# azure-pipelines.yml
|
|
trigger:
|
|
branches:
|
|
include:
|
|
- main
|
|
|
|
pool:
|
|
vmImage: 'ubuntu-latest'
|
|
|
|
steps:
|
|
- task: AdvancedSecurity-Dependency-Scanning@1
|
|
displayName: 'Scan Python dependencies'
|
|
inputs:
|
|
scanMode: 'all' # Scan både direkte og transitive dependencies
|
|
ecosystem: 'pip'
|
|
```
|
|
|
|
Dependency scanning genererer alerts for:
|
|
- **Direct vulnerabilities**: Pakker i `requirements.txt`
|
|
- **Transitive vulnerabilities**: Pakker som direkte dependencies bruker
|
|
- **CVE severity mapping**: Critical (CVSS ≥9.0), High (7.0-9.0), Medium (4.0-7.0), Low (1.0-4.0)
|
|
|
|
#### 2. Microsoft Defender for Containers
|
|
|
|
Scanner container images (inkludert Azure ML environments) for vulnerabilities:
|
|
|
|
```python
|
|
from azure.ai.ml.entities import Environment
|
|
|
|
# Opprett miljø med base image som scannes
|
|
env = Environment(
|
|
name="secure-training-env",
|
|
image="mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04",
|
|
conda_file="conda_dependencies.yml",
|
|
description="Environment with vulnerability scanning"
|
|
)
|
|
|
|
ml_client.environments.create_or_update(env)
|
|
```
|
|
|
|
Defender for Containers:
|
|
- Genererer vulnerability assessments automatisk når image pushes til Azure Container Registry
|
|
- Blokkerer deployment av images med critical vulnerabilities (konfigurerbart via Azure Policy)
|
|
- Integrerer med Azure Monitor for alerting
|
|
|
|
#### 3. Quarantine Pattern for Package Management
|
|
|
|
Implementer self-serve package management med sikkerhetslag:
|
|
|
|
```
|
|
Data Scientist → Safe-listed repos (Microsoft Artifact Registry, PyPI, Conda)
|
|
↓
|
|
Automated testing (vulnerability scan)
|
|
↓
|
|
Pass → Container Registry
|
|
Fail → Deployment blocked, container removed
|
|
```
|
|
|
|
**Process flow**:
|
|
1. Data scientists arbeider i Azure ML workspace med network restrictions
|
|
2. Selv-serve fra curated package repositories
|
|
3. Azure ML bygger Docker containers under deployment
|
|
4. Microsoft Defender for Containers scanner for vulnerabilities
|
|
5. Ved failure: Elegant exit fra deployment, fjern container
|
|
|
|
---
|
|
|
|
## 3. Vendor Security Assessment
|
|
|
|
### Evaluering av tredjepartsleverandører
|
|
|
|
Når du bruker pre-trained models eller MLaaS-leverandører:
|
|
|
|
| Vurderingskriterium | Spørsmål |
|
|
|---------------------|----------|
|
|
| **Model provenance** | Kan leverandøren dokumentere treningsdata og prosess? |
|
|
| **Security practices** | Har de SOC 2 Type II / ISO 27001-sertifisering? |
|
|
| **Data retention** | Brukes dine data til å trene deres modeller? |
|
|
| **Compromise notification** | Har de en incident response plan og disclosure policy? |
|
|
| **Access controls** | Kan du revoke access raskt ved mistanke om kompromittering? |
|
|
| **Contractual safeguards** | Garanterer de mot bruk av copyrighted material? |
|
|
|
|
### Azure-spesifikke leverandører
|
|
|
|
Microsoft tilbyr verifiserte modeller via:
|
|
|
|
- **Azure Machine Learning Model Catalog**: Curated models med security attestation
|
|
- **HuggingFace Registry i Azure**: Integrert med Azure ML, med provenance tracking
|
|
|
|
```python
|
|
# Deploy verifisert modell fra Azure ML registry
|
|
registry_name = "azureml"
|
|
model_name = "gpt-35-turbo"
|
|
model_version = "0301"
|
|
|
|
model_id = f"azureml://registries/{registry_name}/models/{model_name}/versions/{model_version}"
|
|
|
|
deployment = ManagedOnlineDeployment(
|
|
name="verified-deployment",
|
|
endpoint_name="secure-endpoint",
|
|
model=model_id,
|
|
instance_type="Standard_DS3_v2",
|
|
instance_count=1
|
|
)
|
|
```
|
|
|
|
### Red flags ved vendor assessment
|
|
|
|
- ❌ Unnvikende om datakilder ("proprietary dataset")
|
|
- ❌ Ingen dokumentasjon av security scanning
|
|
- ❌ Manglende API rate limiting (øker risiko for model stealing)
|
|
- ❌ Krever upload av sensitive treningsdata uten encryption garantier
|
|
|
|
---
|
|
|
|
## 4. Model Poisoning Prevention
|
|
|
|
### Angrepsvektorer
|
|
|
|
**Poison AI Model (MITRE ATLAS: AML.T0018.000)**:
|
|
- Malicious MLaaS provider trojaner modell ved å manipulere modellvekter med trigger som aktiverer ved deployment
|
|
- Eksempel: Modell klassifiserer virus som "benign" når spesifikt filnavn inkluderes
|
|
|
|
**Supply Chain Compromise (T1195)**:
|
|
- Adversary uploader poisoned models til public marketplaces (HuggingFace Hub, Caffe Model Zoo), eller kompromitterer biblioteker/datasett
|
|
- Modeller inneholder embedded logic som exfiltrerer data eller manipulerer outputs
|
|
|
|
**Poison Training Data (AML.T0020)**:
|
|
- Malicious data injisert under pre-training, fine-tuning, eller embedding
|
|
- Eksempel: SQL injection i scrapet dataset → modell lærer å returnere falske resultater
|
|
|
|
### Azure-kontroller for prevention
|
|
|
|
#### 1. Centralized Model Approval Workflow
|
|
|
|
Implementer multi-stage approval via Azure Policy:
|
|
|
|
```json
|
|
{
|
|
"policyDefinitionName": "[Preview]: Azure Machine Learning Deployments should only use approved Registry Models",
|
|
"effect": "Deny",
|
|
"parameters": {
|
|
"allowedPublishers": ["Microsoft", "OpenAI", "Meta"],
|
|
"approvedAssetIds": [
|
|
"azureml://registries/azureml/models/gpt-35-turbo/versions/0301",
|
|
"azureml://registries/azureml-meta/models/Llama-2-7b/versions/18"
|
|
]
|
|
}
|
|
}
|
|
```
|
|
|
|
**Workflow**:
|
|
1. Data scientist registrerer modell i Azure ML workspace
|
|
2. Automated security scanning: Hash verification, adversarial input testing
|
|
3. Security team review: Validation av training data provenance
|
|
4. Business owner approval: Sign-off før production deployment
|
|
5. Azure Monitor logging: Comprehensive audit trail
|
|
|
|
#### 2. Anomaly Detection på Training Data
|
|
|
|
Deploy Azure AI Anomaly Detector for å identifisere data poisoning:
|
|
|
|
```python
|
|
from azure.ai.anomalydetector import AnomalyDetectorClient
|
|
from azure.core.credentials import AzureKeyCredential
|
|
|
|
anomaly_detector_client = AnomalyDetectorClient(
|
|
endpoint="https://<resource-name>.cognitiveservices.azure.com",
|
|
credential=AzureKeyCredential("<api-key>")
|
|
)
|
|
|
|
# Analyser time-series av training data metrics
|
|
response = anomaly_detector_client.detect_entire_series(
|
|
body={
|
|
"series": training_metrics, # Loss, accuracy over time
|
|
"granularity": "daily",
|
|
"sensitivity": 95
|
|
}
|
|
)
|
|
|
|
if response.is_anomaly:
|
|
# Alert security team, quarantine dataset
|
|
raise DataPoisoningAlert("Anomalous training metrics detected")
|
|
```
|
|
|
|
#### 3. Model Integrity Validation
|
|
|
|
Implementer static analysis og adversarial robustness testing:
|
|
|
|
```python
|
|
# Hash verification ved model loading
|
|
import hashlib
|
|
|
|
def verify_model_integrity(model_path, expected_hash):
|
|
with open(model_path, 'rb') as f:
|
|
file_hash = hashlib.sha256(f.read()).hexdigest()
|
|
|
|
if file_hash != expected_hash:
|
|
raise SecurityException("Model hash mismatch - possible tampering")
|
|
|
|
# Adversarial robustness testing (pre-approval)
|
|
from art.attacks.evasion import FastGradientMethod
|
|
from art.estimators.classification import PyTorchClassifier
|
|
|
|
classifier = PyTorchClassifier(model=model, loss=loss_fn, input_shape=(3, 224, 224), nb_classes=10)
|
|
attack = FastGradientMethod(estimator=classifier, eps=0.1)
|
|
|
|
adversarial_samples = attack.generate(x=test_images)
|
|
adversarial_accuracy = evaluate(model, adversarial_samples)
|
|
|
|
if adversarial_accuracy < 0.5:
|
|
raise SecurityException("Model vulnerable to adversarial attacks")
|
|
```
|
|
|
|
---
|
|
|
|
## 5. Software Bill of Materials (SBOM) for AI
|
|
|
|
### Hva er AI SBOM?
|
|
|
|
Tradisjonelle SBOM-er (Software Bill of Materials) dekker ikke:
|
|
- **Model artifacts**: Vekter, biases, arkitektur
|
|
- **Training datasets**: Datasett-versjoner, opprinnelse
|
|
- **Experiment tracking**: Hyperparametere, compute resources
|
|
|
|
AI SBOM er en utvidet BOM som inkluderer ML-komponenter.
|
|
|
|
### Implementering i Azure ML
|
|
|
|
Azure ML gir delvis SBOM-funksjonalitet via:
|
|
|
|
1. **Model Registry Metadata**:
|
|
- Model name, version, tags, properties
|
|
- Linked training job med full parameter logging
|
|
|
|
2. **Environment Registry**:
|
|
- Conda dependencies, pip packages, Docker base image
|
|
- Cryptographic hash av environment definition
|
|
|
|
3. **Dataset Versioning**:
|
|
- Azure ML Data Assets med versjonering
|
|
- Lineage tracking: Hvilke jobs brukte hvilket datasett
|
|
|
|
### Manuell SBOM-generering
|
|
|
|
```python
|
|
import json
|
|
from azure.ai.ml import MLClient
|
|
|
|
ml_client = MLClient.from_config()
|
|
|
|
def generate_ai_sbom(model_name, model_version):
|
|
model = ml_client.models.get(name=model_name, version=model_version)
|
|
|
|
# Hent training job metadata
|
|
job_id = model.tags.get("training_job")
|
|
job = ml_client.jobs.get(name=job_id)
|
|
|
|
# Hent environment dependencies
|
|
env_name = job.environment.name
|
|
env_version = job.environment.version
|
|
environment = ml_client.environments.get(name=env_name, version=env_version)
|
|
|
|
sbom = {
|
|
"model": {
|
|
"name": model.name,
|
|
"version": model.version,
|
|
"hash": model.properties.get("sha256"),
|
|
"created_date": model.creation_context.created_at.isoformat()
|
|
},
|
|
"training": {
|
|
"job_id": job_id,
|
|
"dataset": job.inputs.get("training_data"),
|
|
"compute": job.compute,
|
|
"hyperparameters": job.inputs
|
|
},
|
|
"dependencies": {
|
|
"base_image": environment.image,
|
|
"conda_packages": environment.conda_dependencies.get("dependencies", []),
|
|
"pip_packages": environment.conda_dependencies.get("pip", [])
|
|
}
|
|
}
|
|
|
|
with open(f"sbom_{model_name}_{model_version}.json", "w") as f:
|
|
json.dump(sbom, f, indent=2)
|
|
|
|
return sbom
|
|
```
|
|
|
|
### SBOM i CI/CD Pipeline
|
|
|
|
Integrer SBOM-generering i deployment workflow:
|
|
|
|
```yaml
|
|
# Azure DevOps Pipeline
|
|
- task: AzureCLI@2
|
|
displayName: 'Generate AI SBOM'
|
|
inputs:
|
|
azureSubscription: 'service-connection'
|
|
scriptType: 'bash'
|
|
scriptLocation: 'inlineScript'
|
|
inlineScript: |
|
|
az ml model download --name fraud-detection --version 2.0 --download-path ./model
|
|
python generate_sbom.py --model-name fraud-detection --version 2.0
|
|
|
|
- task: PublishBuildArtifacts@1
|
|
inputs:
|
|
PathtoPublish: 'sbom_fraud-detection_2.0.json'
|
|
ArtifactName: 'ai-sbom'
|
|
```
|
|
|
|
---
|
|
|
|
## 6. Secure ML Supply Chain: Oppsummert Implementasjon
|
|
|
|
### Architecture: Defense in Depth
|
|
|
|
```
|
|
┌─────────────────────────────────────────────────────────────┐
|
|
│ Layer 1: Source Verification │
|
|
│ - Azure ML Model Catalog (curated models) │
|
|
│ - Package safe-listing (Microsoft Artifact Registry) │
|
|
│ - Code signing for custom models │
|
|
└─────────────────────────────────────────────────────────────┘
|
|
↓
|
|
┌─────────────────────────────────────────────────────────────┐
|
|
│ Layer 2: Automated Security Validation │
|
|
│ - Dependency scanning (Azure DevOps Advanced Security) │
|
|
│ - Container image scanning (Defender for Containers) │
|
|
│ - Hash verification, adversarial robustness testing │
|
|
└─────────────────────────────────────────────────────────────┘
|
|
↓
|
|
┌─────────────────────────────────────────────────────────────┐
|
|
│ Layer 3: Approval Workflow │
|
|
│ - Multi-stage review (security team, business owner) │
|
|
│ - Azure Policy enforcement (deny unapproved models) │
|
|
│ - RBAC via Microsoft Entra ID (separation of duties) │
|
|
└─────────────────────────────────────────────────────────────┘
|
|
↓
|
|
┌─────────────────────────────────────────────────────────────┐
|
|
│ Layer 4: Monitoring & Response │
|
|
│ - Azure Monitor + Defender for AI (threat detection) │
|
|
│ - Anomaly detection på model outputs │
|
|
│ - Audit trails for compliance (Azure Log Analytics) │
|
|
└─────────────────────────────────────────────────────────────┘
|
|
```
|
|
|
|
### Implementasjonssteg
|
|
|
|
1. **Week 1-2: Foundation**
|
|
- Aktiver Azure ML Model Registry for alle workspaces
|
|
- Konfigurer Azure Policy: "[Preview]: Azure Machine Learning Deployments should only use approved Registry Models"
|
|
- Opprett approval workflow (Azure DevOps Boards, Linear, eller ServiceNow)
|
|
|
|
2. **Week 3-4: Scanning Infrastructure**
|
|
- Aktiver GitHub Advanced Security for Azure DevOps (Dependency Scanning)
|
|
- Deploy Microsoft Defender for Containers
|
|
- Konfigurer automated testing pipeline (hash verification, adversarial tests)
|
|
|
|
3. **Week 5-6: SBOM & Provenance**
|
|
- Implementer AI SBOM-generering script
|
|
- Integrer SBOM i CI/CD pipeline
|
|
- Etabler dataset versioning practices (Azure ML Data Assets)
|
|
|
|
4. **Week 7-8: Monitoring & Response**
|
|
- Deploy Azure Monitor alerts for model registry events
|
|
- Konfigurer Microsoft Defender for AI threat detection
|
|
- Etabler incident response playbook for supply chain compromise
|
|
|
|
---
|
|
|
|
## For Cosmo: Veiledning i Arkitekturdialog
|
|
|
|
### Når klienten spør om AI supply chain security:
|
|
|
|
**Diagnosespørsmål**:
|
|
1. "Bruker dere pre-trained models fra public repositories (HuggingFace, GitHub)?"
|
|
2. "Har dere oversikt over alle Python-pakker som brukes i ML-miljøene?"
|
|
3. "Hvordan verifiserer dere at en modell ikke er manipulert før deployment?"
|
|
4. "Har dere noen gang opplevd at en dependency plutselig ble fjernet eller kompromittert?"
|
|
|
|
**Risikovurdering**:
|
|
- **Høy risiko**: Public sector, healthcare, finance (PII/sensitive data i treningsdata)
|
|
- **Middels risiko**: Generelle business applications uten kritisk påvirkning
|
|
- **Lav risiko**: Prototyping/eksperimentering uten production deployment
|
|
|
|
**Anbefalinger basert på modenhet**:
|
|
|
|
| Modenhetsnivå | Implementering |
|
|
|---------------|----------------|
|
|
| **Starter** | Azure ML Model Registry + Azure Policy for approved models |
|
|
| **Intermediate** | + Dependency scanning (Azure DevOps) + Defender for Containers |
|
|
| **Advanced** | + AI SBOM + Adversarial robustness testing + Anomaly detection |
|
|
| **Expert** | + Homomorphic encryption for training + Zero-trust model serving |
|
|
|
|
### Red flags som krever umiddelbar oppmerksomhet:
|
|
|
|
- ⚠️ Modeller lastes direkte fra GitHub/HuggingFace uten verifikasjon
|
|
- ⚠️ Ingen versjonering av modeller eller datasett
|
|
- ⚠️ Treningsdata kommer fra ukjente eksterne kilder
|
|
- ⚠️ MLaaS-leverandør har ingen SOC 2 / ISO 27001-sertifisering
|
|
- ⚠️ Ingen monitoring av model registry access events
|
|
|
|
### Kostnadsestimering:
|
|
|
|
| Komponent | Estimat (NOK/måned) |
|
|
|-----------|---------------------|
|
|
| Azure DevOps Advanced Security (Dependency Scanning) | 5 000 - 15 000 (per aktiv committer) |
|
|
| Microsoft Defender for Containers | 20 - 50 per container image (1000 images = 20 000 - 50 000) |
|
|
| Azure ML Model Registry | Inkludert i workspace cost (0 tilleggskostnad) |
|
|
| Azure Monitor + Log Analytics | 10 000 - 50 000 (avhenger av log volume) |
|
|
| **Total baseline** | **35 000 - 130 000 NOK/måned** |
|
|
|
|
---
|
|
|
|
## Referanser og Videre Lesning
|
|
|
|
### Microsoft Documentation
|
|
- [AI-1: Ensure use of approved models (Azure Security Benchmark)](https://learn.microsoft.com/en-us/security/benchmark/azure/mcsb-v2-artificial-intelligence-security#ai-1-ensure-use-of-approved-models)
|
|
- [Threat Modeling AI/ML Systems and Dependencies](https://learn.microsoft.com/en-us/security/engineering/threat-modeling-aiml)
|
|
- [Vulnerability Management for Azure Machine Learning](https://learn.microsoft.com/en-us/azure/machine-learning/concept-vulnerability-management)
|
|
- [Security planning for LLM-based applications](https://learn.microsoft.com/en-us/ai/playbook/technology-guidance/generative-ai/mlops-in-openai/security/security-plan-llm-application)
|
|
|
|
### MITRE ATT&CK / ATLAS (per MCSB v2 AI-1)
|
|
- [AML.T0018.000: Poison AI Model](https://atlas.mitre.org/techniques/AML.T0018)
|
|
- [AML.T0020: Poison Training Data](https://atlas.mitre.org/techniques/AML.T0020)
|
|
- [T1195: Supply Chain Compromise](https://attack.mitre.org/techniques/T1195/)
|
|
|
|
### Compliance Mappings
|
|
- **NIST SP 800-53 Rev. 5**: SA-3, SA-10, SA-15 (System and Services Acquisition)
|
|
- **ISO 27001:2022**: A.5.19 (Information security in supplier relationships), A.5.20 (Addressing information security within supplier agreements)
|
|
- **NIST Cybersecurity Framework v2.0**: ID.SC-04 (Suppliers and third-party partners are identified, prioritized, and assessed), GV.SC-06 (Planning and due diligence performed to reduce risks from suppliers)
|
|
|
|
### Tools & Frameworks
|
|
- [Microsoft Secure Supply Chain Consumption Framework (S2C2F)](https://github.com/ossf/s2c2f)
|
|
- [Azure Artifacts](https://azure.microsoft.com/products/devops/artifacts/) for package management
|
|
- [OpenSSF Scorecard for .NET/NuGet](https://devblogs.microsoft.com/nuget/openssf-scorecard-for-net-nuget/)
|
|
- [AI Risk Database](https://airisk.io/) for public vulnerability tracking
|
|
|
|
---
|
|
|
|
**Sist oppdatert**: 2026-06-19
|
|
**Neste review**: 2026-09-19 (eller ved store endringer i Azure ML supply chain features)
|