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