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 :
SQL- Connexions SQL PoolSqlOnDemand- SQL ServerlessDev- Synapse Studio
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 :
- Découverte automatique des données
- Catalogage et lineage
- Glossaire métier
- Conformité RGPD, HIPAA, etc.
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