我目前正在实现 2 层安全性,这意味着我们在应用程序代码和数据库中都有 orm 查询过滤。在数据库中,我使用的是 Postgre 行级安全性。
在理想情况下,应用程序代码中构建的所有过滤查询都是完美的,并且行级安全策略永远不会删除条目。但是,如果它确实过滤掉了一个结果,这意味着我们在过滤应用程序代码时有一个错误,必须修复。我希望能够记录下来。
是否可以配置 Postgresql 以通知我/记录这些事件?
我目前正在实现 2 层安全性,这意味着我们在应用程序代码和数据库中都有 orm 查询过滤。在数据库中,我使用的是 Postgre 行级安全性。
在理想情况下,应用程序代码中构建的所有过滤查询都是完美的,并且行级安全策略永远不会删除条目。但是,如果它确实过滤掉了一个结果,这意味着我们在过滤应用程序代码时有一个错误,必须修复。我希望能够记录下来。
是否可以配置 Postgresql 以通知我/记录这些事件?
您可以在策略中使用具有记录数据副作用的函数。但这并不可靠,因为很可能在其他查询条件之前应用了 RLS 条件,因此您会得到无论如何都不会成为结果集一部分的误报。
我不认为有办法做你想做的事。这不是 RLS 的工作:它使某些行对用户不可见,因此没有人可以看到他们不应该看到的数据。