Pour préserver la confidentialité des données au sein d'un SGBD, il est nécessaire d'établir une politique de droits d'accès. Cette politique sera fondée sur les éléments suivants :
Une politique de droits définira aussi précisément que possible “qui a quels droits sur quels objets ?”.
La gestion des utilisateurs suppose la possibilité de créer, modifier ou supprimer un utilisateur.
| Ci-contre, une version simple de création d'un utilisateur | CREATE USER nomUtilisateur IDENTIFIED BY 'motDePasse'; |
| Ci-contre, une version simple de modification d'un utilisateur | ALTER USER nomUtilisateur IDENTIFIED BY 'nouveau_mdp'; |
| Ici, la suppression d'un utilisateur | DROP USER nomUtilisateur; |
La gestion des droits suppose la possibilité d'attribuer ou de retirer des droits.
| Là, une attribution de droit | GRANT droit1 [, droit2 [, ...]] ON nomObjet TO nomUtilisateur; |
| Et ici, un retrait de droit | REVOKE droit1 [, droit2 [, ...]] ON nomObjet FROM nomUtilisateur; |
Les groupes d'utilisateurs, nommés “Rôles” dans l'univers SQL, permettent de rendre plus aisée la gestion des droits lorsque le nombre d'utilisateurs grandit et que les droits de chacun correspondent à des modèles, tels des profils d'utilisateurs.
| Ci-contre, une version simple de création de groupe | CREATE ROLE nomRôle; |
| Ci-contre, une version simple d'affectation des utilisateurs aux groupes | GRANT nomRôle TO nomUtilisateur; |
| Ci-contre, une version simple d'affectation des droits aux groupes | GRANT {priv1[,priv2,...]|ALL} ON objet TO nomRôle; |
il s'agit de permettre à certains utilisateurs d'accéder uniquement à une partie spécifique des données (certaines lignes, certaines colonnes) plutôt qu'à l'ensemble de la table ou de la base. Cette approche est essentielle pour respecter les principes du besoin d'en connaître, de la confidentialité des données et des exigences réglementaires comme le RGPD
| Ci-contre, une version simple de création de vue: | CREATE VIEW nomVue AS SELECT colonne1, colonne2... FROM TABLE WHERE condition; |
| Ci-contre, une version simple d'attribution des droits à la vue: | GRANT {SELECT, INSERT, UPDATE, DELETE} ON nomVue TO nomRôle; |