Module 6 : Sécurité et Gouvernance

Vue d'ensemble de la sécurité

La sécurité dans Azure Synapse repose sur plusieurs couches complémentaires :


+----------------------------------------------------------+
|                    COUCHES DE SÉCURITÉ                    |
+----------------------------------------------------------+
|  1. Réseau      | Private Endpoints, Firewall, VNet      |
|  2. Identité    | Azure AD, Service Principal, MSI       |
|  3. Accès       | RBAC, ACL, Row-Level Security          |
|  4. Données     | Chiffrement, Masking, Classification   |
|  5. Audit       | Logging, Monitoring, Purview           |
+----------------------------------------------------------+
            

1. Sécurité réseau

Managed Virtual Network

Isolez votre workspace dans un réseau virtuel managé :

Avantages :
  • Trafic réseau isolé
  • Private Endpoints automatiques vers les services Azure
  • Pas d'exposition sur Internet public

Firewall IP (PowerShell)

# Configurer les règles firewall via Azure CLI (PowerShell)
az synapse workspace firewall-rule create --name AllowMyIP --workspace-name myworkspace --resource-group myRG --start-ip-address 203.0.113.10 --end-ip-address 203.0.113.10
Version Bash (cliquez pour afficher)
# Configurer les règles firewall via Azure CLI
az synapse workspace firewall-rule create \
    --name AllowMyIP \
    --workspace-name myworkspace \
    --resource-group myRG \
    --start-ip-address 203.0.113.10 \
    --end-ip-address 203.0.113.10

Private Endpoints

Points de terminaison privés pour :

2. Authentification et identité

Azure Active Directory (PowerShell)

# Définir un admin Azure AD
az synapse workspace update --name myworkspace --resource-group myRG --aad-admin-object-id "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"

# Connexion depuis SSMS/Azure Data Studio
# Server: myworkspace.sql.azuresynapse.net
# Authentication: Azure Active Directory - Universal with MFA
Version Bash (cliquez pour afficher)
# Définir un admin Azure AD
az synapse workspace update \
    --name myworkspace \
    --resource-group myRG \
    --aad-admin-object-id "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"

# Connexion depuis SSMS/Azure Data Studio
# Server: myworkspace.sql.azuresynapse.net
# Authentication: Azure Active Directory - Universal with MFA

Managed Identity (PowerShell)

L'identité managée du workspace permet l'accès aux ressources Azure sans credentials :

# Accorder l'accès au Data Lake via l'identité managée
az role assignment create --assignee [workspace-identity-object-id] --role "Storage Blob Data Contributor" --scope /subscriptions/.../storageAccounts/mystorageaccount
Version Bash (cliquez pour afficher)
# Accorder l'accès au Data Lake via l'identité managée
az role assignment create \
    --assignee [workspace-identity-object-id] \
    --role "Storage Blob Data Contributor" \
    --scope /subscriptions/.../storageAccounts/mystorageaccount

3. Contrôle d'accès

RBAC Azure

Role Permissions
Synapse Administrator Accès complet au workspace
Synapse Contributor Créer/modifier pipelines, notebooks, pools
Synapse SQL Administrator Administration SQL Pools
Synapse Artifact User Lecture des artefacts

Permissions SQL

-- Créer un utilisateur Azure AD
CREATE USER [user@domain.com] FROM EXTERNAL PROVIDER;

-- Accorder des permissions
GRANT SELECT ON SCHEMA::dbo TO [user@domain.com];
GRANT EXECUTE ON SCHEMA::dbo TO [user@domain.com];

-- Créer un rôle personnalisé
CREATE ROLE AnalysteVentes;
GRANT SELECT ON dbo.FactVentes TO AnalysteVentes;
GRANT SELECT ON dbo.DimClients TO AnalysteVentes;

-- Ajouter l'utilisateur au rôle
ALTER ROLE AnalysteVentes ADD MEMBER [user@domain.com];

Row-Level Security (RLS)

-- Créer une fonction de filtre
CREATE FUNCTION dbo.fn_SecurityPredicate(@Region AS VARCHAR(50))
RETURNS TABLE
WITH SCHEMABINDING
AS
RETURN SELECT 1 AS result
WHERE @Region = USER_NAME()
   OR USER_NAME() = 'admin';

-- Créer la politique de sécurité
CREATE SECURITY POLICY RegionFilter
ADD FILTER PREDICATE dbo.fn_SecurityPredicate(Region)
ON dbo.Ventes
WITH (STATE = ON);

Column-Level Security

-- Masquer une colonne sensible
GRANT SELECT ON dbo.Clients TO AnalysteVentes;
DENY SELECT ON dbo.Clients(NumeroSecuriteSociale) TO AnalysteVentes;

4. Protection des données

Chiffrement

Chiffrement automatique :
  • At rest : TDE (Transparent Data Encryption) avec cles Microsoft ou BYOK
  • In transit : TLS 1.2 obligatoire

Dynamic Data Masking

-- Masquer le numéro de carte bancaire
ALTER TABLE dbo.Paiements
ALTER COLUMN NumeroCarte ADD MASKED WITH (FUNCTION = 'partial(0,"XXXX-XXXX-XXXX-",4)');

-- Masquer l'email
ALTER TABLE dbo.Clients
ALTER COLUMN Email ADD MASKED WITH (FUNCTION = 'email()');

-- Résultat pour un utilisateur non privilégié:
-- NumeroCarte: XXXX-XXXX-XXXX-1234
-- Email: uXXX@XXXX.com

Classification des données

-- Classifier une colonne comme donnée sensible
ADD SENSITIVITY CLASSIFICATION TO dbo.Clients.Email
WITH (LABEL = 'Confidential', INFORMATION_TYPE = 'Contact Info');

-- Voir les classifications
SELECT * FROM sys.sensitivity_classifications;

5. Audit et conformité

Azure Purview Integration

Connectez Synapse à Azure Purview pour :

Auditing SQL

-- Activer l'audit vers un Storage Account
ALTER DATABASE AUDIT SPECIFICATION AuditSpec
FOR SERVER AUDIT MyAudit
ADD (SELECT, INSERT, UPDATE, DELETE ON dbo.Clients BY public);

-- Les logs sont stockés dans Azure Storage ou Log Analytics

Diagnostic Logs (PowerShell)

# Activer les logs de diagnostic via Azure CLI (PowerShell)
az monitor diagnostic-settings create --name "SynapseDiagnostics" --resource "/subscriptions/.../workspaces/myworkspace" --logs '[{\"category\":\"SQLSecurityAuditEvents\",\"enabled\":true}]' --workspace "/subscriptions/.../workspaces/myLogAnalytics"
Version Bash (cliquez pour afficher)
# Activer les logs de diagnostic via Azure CLI
az monitor diagnostic-settings create \
    --name "SynapseDiagnostics" \
    --resource "/subscriptions/.../workspaces/myworkspace" \
    --logs '[{"category":"SQLSecurityAuditEvents","enabled":true}]' \
    --workspace "/subscriptions/.../workspaces/myLogAnalytics"

Checklist sécurité

  • [ ] Managed VNet activé
  • [ ] Private Endpoints configurés
  • [ ] Azure AD comme méthode d'authentification principale
  • [ ] Managed Identity pour les accès aux ressources
  • [ ] RBAC configuré avec principe du moindre privilège
  • [ ] RLS sur les tables sensibles
  • [ ] Data Masking sur les colonnes PII
  • [ ] Audit activé et logs centralisés
  • [ ] Purview connecté pour la gouvernance