【问题标题】:Does row-level security (RLS) apply on a join statement?行级安全性 (RLS) 是否适用于连接语句?
【发布时间】:2021-09-01 19:20:42
【问题描述】:

给定以下(简化的)表格:

users
-----
id (pk)

posts
-----
id (pk)
user_id (fk)

likes
-----
user_id (pk)
post_id (pk)

如果我运行以下查询来获取用户(?)喜欢哪些帖子:

SELECT *
FROM posts p
INNER JOIN likes l
ON l.post_id = p.id
WHERE l.user_id = ?

是否会同时调用 likes 表和 posts 表上的 SELECT 的 RLS 策略,或者它是否仅适用于 posts 表,因为这是我们从中选择的地方?我假设它适用于两个表,但只是想仔细检查并确保。如果这有什么不同,我正在使用 PostgreSQL。

感谢您的帮助!

【问题讨论】:

    标签: sql postgresql security row-level-security


    【解决方案1】:

    如果用户无权查看表中的行,这将应用于整个查询,而不仅仅是返回的列。

    基本上,表格(或行)对用户是不可见的。

    【讨论】:

    • 因此,如果我无权查看派对表中的行,那么我能否在 likes 表中看到类似的内容并不重要?反之亦然?
    • @bryan-vh 。 . .安全控制“可见性”。如果用户无法“看到”该行,则该行对查询是不可见的。您可以看到 likes 中的行,但没有任何内容可以加入。
    猜你喜欢
    • 2021-05-19
    • 2018-10-12
    • 2020-10-25
    • 1970-01-01
    • 1970-01-01
    • 2020-12-16
    • 2017-04-23
    • 2021-03-31
    • 2017-05-02
    相关资源
    最近更新 更多