Module 2 : Identité et RBAC
Azure Active Directory / Entra ID
Microsoft Entra ID (anciennement Azure AD) est le service d'identité cloud de Microsoft :
+----------------------------------------------------------+
| ENTRA ID (AZURE AD) |
+----------------------------------------------------------+
| |
| Tenant (Locataire) |
| | |
| +-- Users (Utilisateurs) |
| +-- Groups (Groupes) |
| +-- Service Principals (Applications) |
| +-- Managed Identities |
| |
+----------------------------------------------------------+
Types d'identités
| Type | Usage | Exemple |
|---|---|---|
| User | Personnes physiques | jean.dupont@mycompany.com |
| Group | Ensemble d'utilisateurs | grp-data-engineers |
| Service Principal | Applications | app-synapse-pipeline |
| Managed Identity | Ressources Azure | Synapse Workspace MI |
RBAC (Role-Based Accèss Control)
Principe du RBAC :
WHO (Security Principal) + WHAT (Role) + WHERE (Scope) = Accèss
Roles Azure intégrés principaux
+----------------------------------------------------------+
| ROLES PRINCIPAUX |
+----------------------------------------------------------+
| Owner | Accès complet + gestion RBAC |
| Contributor | Accès complet SANS gestion RBAC |
| Reader | Lecture seule |
+----------------------------------------------------------+
| Storage Blob Data Owner | Lecture/écriture blobs |
| Storage Blob Data Contributor | Lecture/écriture blobs |
| Storage Blob Data Reader | Lecture seule blobs |
+----------------------------------------------------------+
| Synapse Administrator | Admin complet Synapse |
| Synapse Contributor | Gestion pipelines/notebooks |
| Synapse SQL Administrator| Admin SQL pools |
+----------------------------------------------------------+
Attribuer un role via CLI (PowerShell)
# Attribuer le role "Storage Blob Data Contributor" a un groupe
az role assignment create --assignee-object-id "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" --assignee-principal-type Group --role "Storage Blob Data Contributor" --scope "/subscriptions/{sub-id}/resourceGroups/rg-folab-dev"
# Lister les attributions de rôles
az role assignment list --resource-group rg-folab-dev --output table
# Supprimer une attribution
az role assignment delete --assignee user@mycompany.com --role "Reader" --scope "/subscriptions/{sub-id}/resourceGroups/rg-folab-dev"
Version Bash (cliquez pour afficher)
# Attribuer le role "Storage Blob Data Contributor" a un groupe
az role assignment create \
--assignee-object-id "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" \
--assignee-principal-type Group \
--role "Storage Blob Data Contributor" \
--scope "/subscriptions/{sub-id}/resourceGroups/rg-folab-dev"
# Lister les attributions de rôles
az role assignment list \
--resource-group rg-folab-dev \
--output table
# Supprimer une attribution
az role assignment delete \
--assignee user@mycompany.com \
--role "Reader" \
--scope "/subscriptions/{sub-id}/resourceGroups/rg-folab-dev"
Groupes Azure AD
Bonnes pratiques DataLab :
- Toujours attribuer des rôles a des groupes, pas a des utilisateurs
- Utiliser des groupes dynamiques si possible
- Convention: grp-{projet}-{role}
# Créer un groupe de sécurité (PowerShell)
az ad group create --display-name "grp-folab-data-engineers" --mail-nickname "grp-folab-data-engineers"
# Ajouter un membre au groupe
az ad group member add --group "grp-folab-data-engineers" --member-id "user-object-id"
# Lister les membres d'un groupe
az ad group member list --group "grp-folab-data-engineers" --output table
Version Bash (cliquez pour afficher)
# Créer un groupe de sécurité
az ad group create \
--display-name "grp-folab-data-engineers" \
--mail-nickname "grp-folab-data-engineers"
# Ajouter un membre au groupe
az ad group member add \
--group "grp-folab-data-engineers" \
--member-id "user-object-id"
# Lister les membres d'un groupe
az ad group member list \
--group "grp-folab-data-engineers" \
--output table
Service Principals et App Registrations
Pour les applications qui doivent acceder aux ressources Azure :
# Créer une App Registration (PowerShell)
az ad app create --display-name "app-synapse-etl" --sign-in-audience AzureADMyOrg
# Créer le Service Principal associé
az ad sp create --id {app-id}
# Créer un secret pour l'authentification
az ad app credential reset --id {app-id} --display-name "secret-prod" --years 1
Version Bash (cliquez pour afficher)
# Créer une App Registration
az ad app create \
--display-name "app-synapse-etl" \
--sign-in-audience AzureADMyOrg
# Créer le Service Principal associé
az ad sp create --id {app-id}
# Créer un secret pour l'authentification
az ad app credential reset \
--id {app-id} \
--display-name "secret-prod" \
--years 1
Sécurité des secrets :
- Ne jamais stocker les secrets dans le code
- Utiliser Azure Key Vault pour stocker les secrets
- Préférer les Managed Identities quand possible
- Rotation régulière des secrets
Managed Identities
Identités gérées automatiquement par Azure, sans gestion de secrets :
# Activer une System-Assigned Managed Identity sur une VM (PowerShell)
az vm identity assign --name my-vm --resource-group rg-folab-dev
# Créer une User-Assigned Managed Identity
az identity create --name mi-synapse-folab --resource-group rg-folab-dev
# Attribuer des permissions a la Managed Identity
az role assignment create --assignee {managed-identity-principal-id} --role "Storage Blob Data Contributor" --scope "/subscriptions/{sub-id}/resourceGroups/rg-folab-dev"
Version Bash (cliquez pour afficher)
# Activer une System-Assigned Managed Identity sur une VM
az vm identity assign \
--name my-vm \
--resource-group rg-folab-dev
# Créer une User-Assigned Managed Identity
az identity create \
--name mi-synapse-folab \
--resource-group rg-folab-dev
# Attribuer des permissions a la Managed Identity
az role assignment create \
--assignee {managed-identity-principal-id} \
--role "Storage Blob Data Contributor" \
--scope "/subscriptions/{sub-id}/resourceGroups/rg-folab-dev"
Scenario DataLab typique
Équipe FOLAB - Configuration des accès:
1. Groupes:
- grp-folab-admins -> Synapse Administrator
- grp-folab-engineers -> Synapse Contributor + Storage Blob Data Contributor
- grp-folab-analysts -> Synapse SQL User + Storage Blob Data Reader
- grp-folab-viewers -> Reader
2. Service Principals:
- sp-synapse-pipeline -> Pour les pipelines automatisés
- sp-powerbi-refresh -> Pour le refresh Power BI
3. Managed Identities:
- mi-synapse-folab -> Identité du workspace Synapse