Accorder des privilèges aux objets
Lorsque vous accordez des privilèges à un utilisateur ou à un groupe, vous devez décider si le privilège doit être limité à une ou plusieurs bases de données, à un ou plusieurs schémas, ou s'il doit s'appliquer globalement à toutes les bases de données du système. Dans les versions antérieures à la version 7.0.3, les administrateurs attribuaient des privilèges globaux ou locaux en effectuant des GRANT ou des REVOKE à des endroits spécifiques. Par exemple :
- Pour un privilège global, vous devez vous connecter à la base de données du système et accorder le privilège pour la classe d'objets à l'utilisateur ou au groupe.
- Pour un privilège spécifique à une base de données, vous devez vous connecter à cette base de données et accorder le privilège pour l'objet à l'utilisateur ou au groupe.
À partir de la version 7.0.3, vous pouvez continuer à utiliser ces méthodes pour attribuer des privilèges locaux et globaux, et vous pouvez également utiliser des noms d'objets pleinement qualifiésdatabase.schema.obj_ ou_obj_class) et des classes pour définir la portée à partir de n'importe quelle connexion à la base de données/au schéma. Vous devez être l'utilisateur admin, ou vous devez avoir le droit de modifier les privilèges des utilisateurs ou des groupes que vous souhaitez gérer.
Dans le nom d'objet pleinement qualifié, vous pouvez spécifier ce qui suit :
- Pour la base de données, vous pouvez spécifier un nom de base de données pour étendre le privilège à une base de données spécifique, ou le mot-clé ALL pour spécifier toutes les bases de données, y compris celles qui seront créées à l'avenir.
- Pour le schéma, vous pouvez spécifier un nom de schéma pour étendre le privilège à un schéma spécifique, ou le mot-clé ALL pour spécifier tous les schémas, y compris les schémas créés à l'avenir.
- Pour la valeur obj_ou_obj_class, vous pouvez spécifier un nom d'objet afin d'étendre le privilège à cet objet. Vous pouvez également spécifier une classe d'objets telle que Base de données, Table, Vue, Synonyme ou autres pour autoriser le privilège pour tous les objets de ce type.
Par exemple, pour accorder à user1 le privilège d'accéder à toutes les bases de données et à tous les schémas, exécutez cette commande à partir de n'importe quelle connexion à la base de données :
GRANT list ON all.all.database TO user1;
GRANT
Si vous accordez une subvention globale de cette manière, vous pouvez affiner l'accès à des bases de données spécifiques en modifiant l'accès de l'utilisateur à cette base de données. Par exemple, si vous souhaitez que l user1 n'ait pas accès à la base de données appelée secure_info, vous devez user1 accorder un ensemble de privilèges d'accès réduits à cette base de données cible. Par exemple :
GRANT select ON secure_info TO user1;
GRANT
Dans cet exemple, l'utilisateur dispose d'un accès sélectif à la base de données, ce qui n'est pas suffisant pour autoriser une connexion à la base de données si user1 n'est pas le propriétaire de la base de données. Pour plus d'informations sur les privilèges, voir le Guide de l'administrateur du systèmeIBM® Netezza®.