Das System, an dem ich gerade arbeite, erfordert einige rollenbasierte Sicherheit, die im Java EE-Stack gut berücksichtigt wird. Das System soll ein Rahmen für Experten aus dem Bereich der Geschäftsdomäne sein, auf die sie ihren Code schreiben können.Daten 'Sicherheit' mit Java und Hibernate
Es gibt jedoch auch eine Anforderung für Daten security
. Das heißt, welche Informationen für einen Endbenutzer sichtbar sind.
Dies bedeutet effektiv die Sichtbarkeit der Zeilen (und vielleicht sogar der Spalten) in der Datenbank zu reduzieren.
Wir verwenden Hibernate für unsere Persistenz. Wir verwenden jedoch unsere eigenen Anmerkungen, um unsere Persistenzwahl nicht den Experten der Geschäftsdomäne zugänglich zu machen.
Für zeilenbasierte Sicherheit bedeutet dies, dass wir eine Annotation wie @Secured
auf Entitätsebene hinzufügen könnten, was dazu führen würde, dass eine zusätzliche Spalte zur zugrunde liegenden Tabelle hinzugefügt würde, um unsere Selects einzuschränken?
Für spaltenbasierte Sicherheit könnten wir vielleicht @Secured
haben, um entweder bei der Abfrageerzeugung zu helfen, oder vielleicht einen Aspekt verwenden, um die zurückgegebenen Informationen zu filtern?
Ich bin neugierig zu wissen, wie dies die Caching-Mechanismen von Hibernate beeinflussen könnte?
Ich bin mir sicher, dass viele andere das gleiche Problem haben werden, und ich habe mich gefragt, wie Sie das angehen?
Sehr geschätzt ...