Contrôle ACL des champs de fonction

  • Rversion finale: Xanadu
  • Mis à jour 1 août 2024
  • 3 minutes de lecture
  • Lors de l’évaluation de l’accès à un champ de fonction, en plus de vérifier l’accès au champ de fonction lui-même, le système vérifie également l’accès aux champs de contribution de la fonction. Les champs de contribution sont ceux utilisés comme arguments dans une définition de fonction donnée.

    Pour plus d’informations sur les champs de fonction, reportez-vous à la rubrique Champ de fonction.

    À partir Rome des années précédentes, le système vérifie simplement l’accès au champ de fonction lui-même (comme pour n’importe quel autre champ). Si les ACL de ce champ autorisent l’accès, l’utilisateur reçoit la valeur résultante, qu’il ait ou non accès aux champs de contribution.

    À partir Xanadu des versions ultérieures, le système nécessite également l’accès à tous les champs de contribution afin de permettre l’accès au champ de fonction. Si une ou plusieurs ACL de champ de contribution refusent l’accès, le champ de fonction refuse également l’accès.

    Les seules opérations affectées par la nouvelle exigence sont read et report_view. Report_view a ses propres exigences supplémentaires.

    Opération Description
    Opération de lecture Un utilisateur a un accès en lecture à un champ de fonction uniquement si deux des conditions suivantes sont remplies :
    • L’utilisateur dispose d’un accès en lecture au champ de fonction.
    • L’utilisateur a un accès en lecture à tous les champs de contribution utilisés dans la fonction.
    report_view opération Un utilisateur a report_view accès à un champ de fonction uniquement si toutes les conditions suivantes sont remplies :
    • L’utilisateur a report_view accès au champ de fonction.
    • L’utilisateur a report_view accès à chacun des champs de contribution.
    • Il existe une ACL de lecture de rôle uniquement, sans conditions et sans script, et l’utilisateur dispose de ce rôle.
    • L’utilisateur dispose d’un accès en lecture aux champs de contribution avec un rôle uniquement, de sorte que seuls les ACL sans condition ni script peuvent l’autoriser.

    Exemples

    Donné:
    • Tableau : salaire
    • Colonnes : base, bonus, total (tous sont des entiers dans cet exemple)
    • Champ de fonction : La colonne Total est marquée comme un champ de fonction, avec la définition de fonction glidefunction :add(base, bonus).
    • Champs de contribution : base et bonus, car ils sont utilisés dans la définition de la fonction
    • Rôles : salary_admin, bonus_admin
    Tableau 1. Exemple 1 : Tous les champs autorisent l’accès
    ACL Résultat
    Total, base, bonus : lire et report_view pour le rôle salary_admin, sans conditions ni scripts Un utilisateur disposant du rôle salary_admin se voit accorder l’accès en lecture et report_view au total, car il possède le rôle requis.
    Tableau 2. Exemple 2 : le champ Contribution refuse l’accès en lecture
    ACL Résultat
    • Total, base : lecture et report_view pour les salary_admin de rôle, sans conditions ni scripts
    • Bonus : report_view pour le rôle salary_admin, sans conditions ni scripts
    • Bonus : Lecture pour le rôle bonus_admin, sans conditions ni scripts
    Un utilisateur ayant le rôle salary_admin se voit refuser l’accès en lecture et report_view au total, car le bonus refuse l’accès en lecture à son rôle.
    Tableau 3. Exemple 3 : l’ACL du champ Contribution comporte un script
    ACL Résultat
    • Total, base : lecture et report_view pour les salary_admin de rôle, sans conditions ni scripts
    • Bonus : report_view pour le rôle bonus_admin, sans conditions ni scripts
    • Bonus : lisez pour le rôle salary_admin, avec un script (notez que ce qu’il y a dans le script n’a pas d’importance, seulement qu’il soit là)
    Un utilisateur ayant le rôle salary_admin se voit accorder un accès en lecture à Total, car il possède le rôle requis pour tous les champs.

    Mais l’accès est refusé report_view même utilisateur avec le salary_admin, car l’ACL de lecture avec le script refuse l’accès par défaut dans ce cas, même s’il dispose du rôle requis.