Droits d'accès ultraprécis

Restez organisé à l'aide des collections Enregistrez et classez les contenus selon vos préférences.

Cette page décrit les droits que vous pouvez accorder à un rôle de base de données pour un contrôle d'accès précis.

Pour en savoir plus sur les rôles de base de données et le contrôle des accès précis, consultez la page À propos du contrôle des accès précis.

SELECT

Permet au rôle d'effectuer des instructions SELECT sur une table. Si une liste de colonnes est spécifiée, le droit n'est valide que sur ces colonnes. Si aucune liste de colonnes n'est spécifiée, le droit est valide sur toutes les colonnes de la table, y compris celles ajoutées ultérieurement.

  • Après avoir accordé SELECT sur un sous-ensemble de colonnes d'une table, l'utilisateur FGAC ne peut plus utiliser SELECT * sur cette table. Les requêtes sur cette table doivent nommer toutes les colonnes à inclure.

  • Le rôle SELECT accordé sur une colonne générée n'accorde pas SELECT sur les colonnes de base sous-jacentes.

  • Pour les tables entrelacées, SELECT accordé sur la table parente ne se propage pas à la table enfant.

  • Lorsque SELECT est utilisé avec une fonction d'agrégation sur des colonnes spécifiques, par exemple SUM(col_a), le rôle doit disposer du droit SELECT sur ces colonnes. Si la fonction d'agrégation ne spécifie aucune colonne, par exemple COUNT(*), le rôle doit disposer du droit SELECT sur au moins une colonne de la table.

Examples

GRANT SELECT ON TABLE employees TO ROLE hr_director;

GRANT SELECT ON TABLE customers, orders, items TO ROLE account_mgr;

GRANT SELECT(name, level, cost_center, location, manager) ON TABLE employees TO ROLE hr_manager;

GRANT SELECT(name, address, phone) ON TABLE employees, contractors TO ROLE hr_rep;

Dans l'exemple final précédent, toutes les colonnes nommées doivent être présentes dans les deux tables.

INSERT

Permet au rôle d'insérer des lignes dans les tables spécifiées. Si une liste de colonnes est spécifiée, l'autorisation n'est valide que sur ces colonnes. Si aucune liste de colonnes n'est spécifiée, le droit est valide sur toutes les colonnes de la table.

  • Si des noms de colonnes sont spécifiés, toute colonne non incluse obtient sa valeur par défaut lors de l'insertion.

  • Impossible d'accorder le rôle"INSERT"aux colonnes générées.

Examples

GRANT INSERT ON TABLE employees, contractors TO ROLE hr_manager;

GRANT INSERT(name, address, phone) ON TABLE employees TO ROLE hr_rep;

UPDATE

Permet au rôle de mettre à jour les lignes des tables spécifiées. Les mises à jour peuvent être limitées à un sous-ensemble de colonnes du tableau.

  • En plus du droit UPDATE, le rôle doit disposer du droit SELECT sur toutes les colonnes de clé et sur toutes les colonnes interrogées. Les colonnes interrogées incluent les colonnes de la clause WHERE et les colonnes permettant de calculer les nouvelles valeurs des colonnes mises à jour et générées.

  • Impossible d'accorder le rôle"UPDATE"aux colonnes générées.

Examples

GRANT UPDATE ON TABLE employees, contractors TO ROLE hr_manager;

GRANT UPDATE(name, address, phone) ON TABLE employees TO ROLE hr_rep;

DELETE

Permet au rôle de supprimer des lignes des tables spécifiées.

  • DELETE ne peut pas être accordé au niveau des colonnes.

  • Le rôle a également besoin de SELECT sur toutes les colonnes de clé et toutes les colonnes pouvant être incluses dans les clauses de requête WHERE.

  • Pour les tables entrelacées, le droit DELETE n'est requis que sur la table parente. Si une table enfant spécifie ON DELETE CASCADE, les lignes de la table enfant sont supprimées même si le droit DELETE n'est pas appliqué à la table enfant.

Exemple

GRANT DELETE ON TABLE employees, contractors TO ROLE admin;

Autres informations

Pour en savoir plus, consultez :