Contrôle ACL des champs de fonction
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, voir Champ de fonction.
Dans Rome et antérieurement, le système vérifie simplement l’accès au champ de fonction lui-même (comme pour tout autre champ). Si les ACL de ce champ autorisent l’accès, l’utilisateur reçoit la valeur résultante, qu’il ait accès ou non aux champs de contribution.
Dans Zurich et 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 des ACL du champ de contribution refusent l’accès, le champ de fonction refuse également l’accès.
Les seules opérations concernées par la nouvelle exigence sont la lecture et la 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 les deux conditions suivantes sont vraies :
|
| report_view opération | Un utilisateur n’a report_view accès à un champ de fonction que si toutes les conditions suivantes sont vraies :
|
Exemples
- Table : salaire
- Colonnes : base, bonus, total (toutes sont des entiers dans cet exemple)
- Champ de fonction : la colonne Total est marquée comme champ de fonction, avec la définition
de fonction glidefunction :add(base, bonus). - Champs de contribution : base et bonus, puisqu’ils sont utilisés dans la définition de la fonction
- Rôles : salary_admin, bonus_admin
| ACL | Résultat |
|---|---|
| Total, Base, Bonus : lu et report_view pour les salary_admin de rôles, sans conditions ni scripts | Un utilisateur disposant du rôle salary_admin se voit accorder un accès en lecture et report_view à Total parce qu’il dispose du rôle requis. |
| ACL | Résultat |
|---|---|
|
Un utilisateur disposant du rôle salary_admin se voit refuser l’accès en lecture et report_view au total, car la prime refuse l’accès en lecture à son rôle. |
| ACL | Résultat |
|---|---|
|
Un utilisateur disposant du rôle salary_admin bénéficie d’un accès en lecture sur Total, car il dispose du rôle requis pour tous les champs. Mais le même utilisateur avec le salary_admin se voit refuser l report_view accès, car l’ACL de lecture avec le script refuse l’accès par défaut pour ce cas, même s’il a le rôle requis. |