Tout relationnel Systèmes de gestion de bases de données fournir une sorte de mécanismes de sécurité intrinsèque conçus pour minimiser les menaces de perte de données, de corruption de données ou de vol de données. Ils vont de la simple protection par mot de passe offerte par Microsoft Access à la structure utilisateur/rôle complexe prise en charge par des bases de données relationnelles avancées telles que Oracle etMicrosoft SQL Serveur. Certains mécanismes de sécurité sont communs à toutes les bases de données qui implémentent leLangage de requêtes structurées.
Sécurité au niveau de l'utilisateur
Les bases de données sur serveur prennent en charge un utilisateur concept similaire à celui utilisé dans les systèmes d'exploitation informatiques. Si vous connaissez la hiérarchie des utilisateurs/groupes trouvée dans Microsoft Windows NT et Windows 2000, vous constaterez que les groupes d'utilisateurs/rôles pris en charge par SQL Server et Oracle sont similaires.
Créez des comptes d'utilisateur de base de données individuels pour chaque personne ayant accès à votre base de données.
Évitez de provisionner des comptes génériques accessibles par plusieurs personnes différentes. Premièrement, cette pratique élimine la responsabilité individuelle—si un utilisateur apporte une modification à votre base de données (disons par se donnant une augmentation de 5 000 $), vous ne pourrez pas remonter jusqu'à une personne spécifique grâce à l'utilisation de l'audit journaux. Deuxièmement, si un utilisateur spécifique quitte votre organisation et que vous souhaitez supprimer son accès à la base de données, vous devez modifier le mot de passe sur lequel se basent tous les utilisateurs.
Les méthodes de création de comptes utilisateurs varient d'une plate-forme à l'autre et vous devrez consulter la documentation spécifique à votre SGBD pour connaître la procédure exacte. Les utilisateurs de Microsoft SQL Server doivent étudier l'utilisation du sp_adduser procédure stockée. Les administrateurs de bases de données Oracle trouveront CRÉER UN UTILISATEUR commande utile. Vous souhaiterez peut-être également étudier des schémas d'authentification alternatifs. Par exemple, Microsoft SQL Server prend en charge l'utilisation de la sécurité intégrée de Windows NT. Dans ce schéma, les utilisateurs sont identifiés dans la base de données par leurs comptes d'utilisateur Windows NT et ne sont pas obligés d'entrer un ID utilisateur et un mot de passe supplémentaires pour accéder à la base de données. Cette approche est populaire parmi les administrateurs de bases de données car elle déplace la charge de compte gestion au personnel d'administration du réseau et il offre la facilité d'une authentification unique au utilisateur final.
Sécurité au niveau des rôles
Si vous êtes dans un environnement avec un petit nombre d'utilisateurs, vous constaterez probablement que la création de comptes d'utilisateurs et leur attribution directe d'autorisations sont suffisantes pour vos besoins. Cependant, si vous avez un grand nombre d'utilisateurs, vous serez submergé par la gestion des comptes et des autorisations appropriées. Pour alléger ce fardeau, les bases de données relationnelles prennent en charge les rôles. Les rôles de base de données fonctionnent de la même manière que les groupes Windows NT. Les comptes d'utilisateurs sont attribués à un ou plusieurs rôles et les autorisations sont ensuite attribuées au rôle dans son ensemble plutôt qu'aux comptes d'utilisateurs individuels. Par exemple, vous pouvez créer un rôle DBA, puis ajouter les comptes d'utilisateurs de votre personnel administratif à ce rôle. Après cela, vous pouvez attribuer une autorisation spécifique à tous les administrateurs actuels (et futurs) en attribuant simplement l'autorisation au rôle. Encore une fois, les procédures de création de rôles varient d'une plateforme à l'autre. Les administrateurs MS SQL Server doivent enquêter sur les sp_addrole procédure stockée tandis que les DBA Oracle doivent utiliser la CRÉER UN RLE syntaxe.
Octroi d'autorisations
Maintenant que nous avons ajouté des utilisateurs à notre base de données, il est temps de commencer à renforcer la sécurité en ajoutant des autorisations. Notre première étape sera d'accorder les autorisations de base de données appropriées à nos utilisateurs. Nous y parviendrons à l'aide de l'instruction SQL GRANT.
Voici la syntaxe de l'instruction:
ACCORDER.
[AU.
À.
[AVEC OPTION DE SUBVENTION]
Maintenant, examinons cette déclaration ligne par ligne. La première ligne, ACCORDER , nous permet de spécifier les autorisations de table spécifiques que nous accordons. Il peut s'agir d'autorisations au niveau de la table (telles que SELECT, INSERT, UPDATE et DELETE) ou d'autorisations de base de données (telles que CREATE TABLE, ALTER DATABASE et GRANT). Plusieurs autorisations peuvent être accordées dans une seule instruction GRANT, mais les autorisations au niveau de la table et les autorisations au niveau de la base de données ne peuvent pas être combinées dans une seule instruction.
La deuxième ligne, AU
Enfin, la quatrième ligne, AVEC OPTION DE SUBVENTION, est facultatif. Si cette ligne est incluse dans la déclaration, l'utilisateur concerné est également autorisé à accorder ces mêmes autorisations à d'autres utilisateurs. Notez que WITH GRANT OPTION ne peut pas être spécifié lorsque les autorisations sont attribuées à un rôle.
Exemple de subventions de base de données
Regardons quelques exemples. Dans notre premier scénario, nous avons récemment embauché un groupe de 42 opérateurs de saisie de données qui ajouteront et conserveront les dossiers des clients. Ils doivent accéder aux informations de la table Customers, modifier ces informations et ajouter de nouveaux enregistrements à la table. Ils ne devraient pas être en mesure de supprimer entièrement un enregistrement de la base de données.
Tout d'abord, nous devons créer des comptes d'utilisateurs pour chaque opérateur, puis les ajouter tous à un nouveau rôle, Saisie des données. Ensuite, nous devons utiliser l'instruction SQL suivante pour leur accorder les autorisations appropriées:
ACCORDER SÉLECTIONNER, INSÉRER, MISE À JOUR.
SUR les clients.
À la saisie de données.
Examinons maintenant un cas où nous attribuons des autorisations au niveau de la base de données. Nous voulons permettre aux membres du rôle DBA d'ajouter de nouvelles tables à notre base de données. De plus, nous voulons qu'ils puissent autoriser d'autres utilisateurs à faire de même. Voici l'instruction SQL:
DONNER CRÉER UNE TABLE.
À DBA.
AVEC OPTION DE SUBVENTION.
Notez que nous avons inclus la ligne WITH GRANT OPTION pour garantir que nos administrateurs de base de données peuvent attribuer cette autorisation à d'autres utilisateurs.
Suppression des autorisations
SQL inclut la commande REVOKE pour supprimer les autorisations précédemment accordées. Voici la syntaxe:
RÉVOQUER [OCTROI DE L'OPTION POUR]
AU.
DE.
Vous remarquerez que la syntaxe de cette commande est similaire à celle de la commande GRANT. La seule différence est que WITH GRANT OPTION est spécifié sur la ligne de commande REVOKE plutôt qu'à la fin de la commande. Par exemple, imaginons que nous souhaitions révoquer l'autorisation précédemment accordée à Mary de supprimer des enregistrements de la base de données Customers. Nous utiliserions la commande suivante:
RÉVOQUER SUPPRIMER.
SUR les clients.
DE Marie.
Il existe un mécanisme supplémentaire pris en charge par Microsoft SQL Server qui mérite d'être mentionné: la commande DENY. Cette commande peut être utilisée pour refuser explicitement une autorisation à un utilisateur qu'il pourrait autrement avoir via une appartenance à un rôle actuel ou futur. Voici la syntaxe:
NIER.
AU.
À.