Comment les personnes ont-elles utilisé une approche abac lors de l'exécution de rapports ou même simplement en sélectionnant plusieurs enregistrements d'une base de données?Avec ABAC/XACML, comment protégez-vous les ressources dans les rapports/grands ensembles de résultats?
Par exemple, si vous avez une politique qui stipule:
Les médecins ne peuvent voir les patients dans leur hôpital
Il est évident que le moyen efficace de mettre en œuvre est d'inclure un filtre dans votre requête (where hospital = XXX
), mais cela semble rompre avec le principe d'ABAC car il introduit la règle dans le SQL lui-même.
Je sais que Axiomatics offre un mécanisme de requête inverse qui génère apparemment des filtres pour vous en fonction des règles - mais mon système a beaucoup de SQL complexe qui devrait être refactorisé un peu pour fonctionner avec cela.
Comment d'autres personnes ont-elles géré ce problème?
Merci David. J'ai lu beaucoup de vos commentaires/messages au cours de la semaine dernière et j'espérais que vous verriez cela. – jbd
J'ai l'impression que c'est un problème inhérent à l'autorisation en général. Je considère une approche, où le point d'interception se produit avant d'exécuter réellement la requête. Par exemple, déterminez si Alice peut voir les documents à l'hôpital X. Si oui, autorisez l'exécution de la requête. Essentiellement, la requête elle-même devient la ressource que le sujet veut exécuter. Des commentaires sur cette approche? Je suis sûr que d'autres l'ont fait. – jbd
J'ai ajouté une nouvelle approche à la réponse. Vous avez raison de dire qu'il existe deux niveaux de contrôle d'accès: le niveau fonctionnel (vous avez le droit de récupérer l'ensemble des dossiers médicaux) et le niveau de données (vous ne pouvez consulter que les dossiers dans votre service) –