Le serveur SQL prend en charge un système multi-niveaux de droits d'accès via rôles, droits utilisateurs (GRANT/REVOKE) et schémas (schemas). Principes clés :
Exemple de création de rôles et d'attribution de droits :
-- Créons un rôle pour les analystes CREATE ROLE Analyst; -- Donnons uniquement SELECT aux tables nécessaires GRANT SELECT ON Sales TO Analyst; -- Interdisons la modification des données REVOKE INSERT, UPDATE, DELETE ON Sales FROM Analyst; -- Assignez le rôle à l'utilisateur GRANT Analyst TO user_ivan;
Il est souvent recommandé de créer des rôles pour la lecture (read-only), la modification, l'administration et les opérations distinctes.
Piège : "Un utilisateur ayant accès uniquement à une vue (VIEW) peut-il modifier la table de base à travers elle ? Donnez un exemple."
Réponse : Oui, si la VIEW ne contient pas d'agrégation/grouper et n'est pas uniquement en lecture (WITH CHECK OPTION) – des opérations INSERT/UPDATE/DELETE peuvent être effectuées sur la VIEW, et les modifications toucheront la table de base, si les autorisations le permettent.
-- Vue qui exclut les colonnes non nécessaires CREATE VIEW SalesAsView AS SELECT id, total, manager_id FROM Sales; -- Si cela est autorisé, l'utilisateur effectuera des modifications ainsi : UPDATE SalesAsView SET total=1000 WHERE id=42; -- Cela affectera Sales.total pour id=42
Solution : utiliser uniquement des VIEW en lecture seule ou interdire les droits de modification des données via des vues.
Histoire
Projet : Portail RH, données personnelles des employés.
Erreur : Les opérateurs avaient accès à la table de base via une VIEW sans restriction sur UPDATE - ils ont modifié accidentellement les salaires des autres, bien que la VIEW ait été initialement conçue "uniquement pour les rapports".
Histoire
Projet : Comptabilité, intégrations externes.
Erreur : Donné à un système externe des droits INSERT et SELECT sur toute la BD au lieu de seulement INSERT dans les tables nécessaires. Résultat : vulnérabilité à la lecture de toute la BD et possible violation de la législation sur la GDPR.
Histoire
Projet : Plateforme SaaS, rapports multi-utilisateurs.
Erreur : Tous les clients travaillaient dans un même schéma avec des droits partagés : ils voyaient accidentellement et pouvaient modifier les données des autres. Solution - division en schémas, rôles distincts et restrictions propres au niveau de la Sécurité au Niveau de la Ligne (RLS).