✅ SOLUTION RAPIDE: Erreur "HTTP 403" avec pvw collections create¶
Vous avez: Service Principal (SP) avec "Collection Admin"¶
Problème: pvw collections create retourne "HTTP 403 Forbidden"¶
LA RAISON¶
Les droits "Collection Admin" SEUL ne suffisent pas. L'API Collections de Microsoft Purview requiert:
✓ Droits Azure RBAC (niveau souscription Azure)
✓ Rôles Purview Data Plane (niveau Purview)
Vous avez probablement que l'un des deux.
✅ SOLUTION EN 5 ÉTAPES¶
Étape 1: Vérifier le rôle Azure RBAC¶
# Obtenir l'Object ID du SP
$spObjectId = (az ad sp show --id $env:AZURE_CLIENT_ID --query id -o tsv)
echo "Object ID: $spObjectId"
# Vérifier les rôles Azure RBAC
az role assignment list --assignee-object-id $spObjectId --scope "<PURVIEW_RESOURCE_ID>" --output table
Résultat attendu: Contributor ou Owner
Si manquant: Assigner le rôle
az role assignment create \
--role "Contributor" \
--assignee-object-id "<SP_OBJECT_ID>" \
--scope "<PURVIEW_RESOURCE_ID>"
Étape 2: Vérifier les rôles Purview Data Plane¶
Via Azure Portal: 1. Allez à Purview Account 2. Cliquez Access Control (IAM) 3. Cherchez votre Service Principal dans la liste 4. Vérifiez qu'il a "Purview Data Source Administrator" ou "Collection Administrator"
Étape 3: Assigner le rôle Purview (SI MANQUANT)¶
Via Azure Portal: 1. Access Control (IAM) > + Add > Add role assignment 2. Sélectionnez "Purview Data Source Administrator" (recommandé pour create) 3. Sélectionnez votre Service Principal 4. Cliquez Review + Assign
Étape 4: Attendre la propagation¶
⏳ Azure met 5-10 minutes pour propager les rôles
→ Attendez et réessayez
Étape 5: Tester¶
# Vérifier les permissions Purview
pvw collections list
# Tester la création
pvw collections create \
--collection-name "test-collection" \
--friendly-name "Ma Collection Test" \
--description "Test des permissions"
📋 CHECKLIST COMPLÈTE¶
Permissions Azure RBAC (niveau souscription):
☐ Service Principal = Owner OU Contributor
☐ Scope = Purview Account resource
☐ Vérifier avec: az role assignment list --assignee-object-id <SP_OBJECT_ID>
Permissions Purview Data Plane (niveau Purview):
☐ Service Principal = Purview Data Source Administrator OU Collection Administrator
☐ Vérifier via Portal: Purview > Access Control (IAM)
Configuration:
☐ AZURE_CLIENT_ID = défini
☐ AZURE_TENANT_ID = défini
☐ AZURE_CLIENT_SECRET = défini
☐ PURVIEW_ACCOUNT_NAME = défini (format: "my-account" PAS "my-account.purview.azure.com")
Timing:
☐ Attendre 5-10 minutes après assigner les rôles
☐ Vérifier une deuxième fois avec: pvw collections list
🔍 DIAGNOSTIC AUTOMATIQUE¶
Nous avons créé des scripts pour diagnostiquer automatiquement:
PowerShell (Windows):
./scripts/diagnose_collections_permissions.ps1
Python (tous OS):
python scripts/diagnose_collections_permissions.py
→ Ces scripts testent tous les aspects et vous donnent des recommandations exactes
🆘 PROBLÈMES COURANTS¶
| Erreur | Cause | Solution |
|---|---|---|
HTTP 403 Forbidden |
Rôle Purview manquant | Assigner "Purview Data Source Administrator" |
HTTP 403 peu après assigner le rôle |
Propagation pas terminée | Attendre 10 minutes, puis relancer |
HTTP 403 même après assigner |
Rôle Azure RBAC manquant | Vérifier que SP a "Contributor" sur le account Purview |
| Rôles corrects mais toujours 403 | Cache d'authentification | az logout && az login, puis relancer |
📚 DOCUMENTATION COMPLÈTE¶
Pour plus de détails:
- Français: docs/collections-permissions-fr.md
- Complet (Anglais): docs/collections-permissions.md
✨ COMMANDE FINALE À TESTER¶
Une fois tout en place:
# PowerShell
$env:LOGLEVEL = "DEBUG"
pvw collections create `
--collection-name "test-$(Get-Date -Format 'yyyyMMdd-HHmmss')" `
--friendly-name "Test Collection" `
--description "Test que tout fonctionne"
# Bash
export LOGLEVEL=DEBUG
pvw collections create \
--collection-name "test-$(date +%s)" \
--friendly-name "Test Collection" \
--description "Test que tout fonctionne"
Résultat attendu: La collection est créée avec succès ✓
💬 Questions?¶
Si toujours pas de succès après tous ces étapes:
1. Exécutez le script de diagnostic
2. Partez les logs (LOGLEVEL=DEBUG)
3. Vérifiez docs/collections-permissions.md pour plus de détails