Comment enlever les privilèges de SQL

Si vous avez une façon de donner des privilèges d'accès SQL aux gens, vous devez également avoir une façon de prendre ces privilèges loin. Emploi Les fonctions des gens changent, et avec ces changements à leurs besoins d'accès aux données changent. Dites un employé quitte l'organisation à se joindre à un concurrent. Vous devriez probablement révoquer tous les privilèges d'accès à cette personne - immédiatement.

SQL vous permet de supprimer les privilèges d'accès en utilisant le REVOKE déclaration. Cette déclaration agit comme le GRANT déclaration fait, sauf qu'il a l'effet inverse. La syntaxe de cette déclaration est la suivante:

REVOKE [GRANT OPTION FOR] privilège listeON objectFROM user-list [RESTRICT | CASCADE] -

Vous pouvez utiliser cette structure pour révoquer les privilèges spécifiques tout en laissant les autres intacts. La principale différence entre le REVOKE déclaration et la GRANT déclaration est la présence de l'option LIMITER ou CASCADE le mot-clé dans REVOKE déclaration.

Par exemple, supposons que vous avez utilisé WITH GRANT OPTION lorsque vous avez accordé certains privilèges à un utilisateur. Finalement, lorsque vous souhaitez révoquer ces privilèges, vous pouvez utiliser CASCADE dans le REVOKE déclaration. Lorsque vous révoquez les privilèges d'un utilisateur de cette manière, vous tirez aussi des privilèges de toute personne à qui cette personne avait accordé des privilèges.




D'autre part, la REVOKE déclaration auprès de la LIMITER option ne fonctionne que si le bénéficiaire n'a pas délégué les privilèges spécifiés. Dans ce cas, la REVOKE déclaration révoque les privilèges du bénéficiaire très bien. Mais, si le bénéficiaire a passé sur les privilèges spécifiés, le REVOKE déclaration auprès de la LIMITER option ne révoque pas quoi que ce soit - et au lieu renvoie un code d'erreur.

Ceci est un avertissement clair pour vous que vous avez besoin de savoir qui a obtenu des privilèges par la personne dont les privilèges que vous essayez de révoquer. Vous pouvez ou ne voulez pas révoquer les privilèges de cette personne.

Vous pouvez utiliser un REVOKE déclaration avec l'option GRANT OPTION POUR clause de révoquer seulement l'option d'attribution de privilèges spécifiés, tout en permettant au bénéficiaire de conserver ces privilèges pour lui-même.

Si le GRANT OPTION POUR clause et le CASCADE mot-clé sont tous deux présents, vous révoque tous les droits que le bénéficiaire accordée, ainsi que le droit du bénéficiaire d'accorder des privilèges - comme si vous aviez jamais accordé l'option d'attribution en premier lieu. Si le GRANT OPTION POUR clause et le LIMITER clause sont tous deux présents, une des deux choses l'une:

  • Si le bénéficiaire n'a pas accordé à quelqu'un d'autre l'un des privilèges que vous êtes la révocation, le REVOKE déclaration exécute et supprime la capacité du bénéficiaire à accorder des privilèges.

  • Si le bénéficiaire a déjà accordé au moins l'un des privilèges vous révocation, la REVOKE déclaration ne pas exécutée et renvoie un code d'erreur à la place.

Le fait que vous pouvez accorder des privilèges à l'aide WITH GRANT OPTION, combiné avec le fait que vous pouvez également révoquer sélectivement privilèges, rend la sécurité du système beaucoup plus complexe qu'il n'y paraît à première vue. Constituants multiples, par exemple, peuvent en théorie accorder un droit à un seul utilisateur. Si l'un de ces constituants révoque alors le privilège, l'utilisateur conserve ce privilège en raison de la subvention qui subsiste d'un autre mandant.

Si un privilège passe d'un utilisateur à un autre par l'intermédiaire de la WITH GRANT OPTION, Cette situation crée un chaîne de dépendance, dans lequel les privilèges d'un utilisateur dépendent de celles d'un autre utilisateur. Si vous êtes un DBA ou un propriétaire de l'objet, toujours être conscient que lorsque vous accorder un privilège en utilisant le WITH GRANT OPTION clause, ce privilège peut apparaître dans des endroits inattendus.

Révocation du privilège des utilisateurs indésirables tout en laissant les utilisateurs légitimes conservent le même privilège peut se révéler difficile. En général, la GRANT OPTION et CASCADE clauses englobent de nombreuses subtilités. Si vous utilisez ces clauses, vérifier à la fois la norme SQL et la documentation de votre produit - soigneusement - pour assurer que vous comprenez comment fonctionnent les clauses.


» » » » Comment enlever les privilèges de SQL