问题标签 [row-level-security]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
75 浏览

sql - 行级安全性 + Switch 语句

我有一张大表,里面有很多数据,需要一些 RLS 安全性。

RLS 基于另一个表(用户使用配置文件编号登录)。

我必须根据配置文件编号制定不同的过滤逻辑......

假设如果 userProfile 为 1,他可以看到所有数据。如果用户个人资料为 2,则他只能根据colA他是否为 3来查看数据,则colB必须检查谁。

例子 :

我试图创建一个Switch基于profileType但它不起作用的语句。而且我不知道我们是否可以在 switch 中返回过滤。

我的尝试:

任何帮助表示赞赏

0 投票
1 回答
876 浏览

query-performance - 行级安全,性能差

我正在评估使用 PostgreSQL 的行级安全 (RLS) 功能来软删除客户的可能性。不幸的是,我遇到了性能不佳的问题。这是 PostgreSQL 版本 9.5.10 中的简单测试设置:

包含 10,000,000 个客户的表:

包含每个客户的一个订单的表:

将只执行 SELECT 的不受信任的用户:

使隐藏客户对不受信任的用户不可见的策略:

一个简单的测试查询:order_id = 4711 下订单的客户叫什么名字?

没有 RLS:

使用 RLS:

加入表时如何避免顺序扫描?我已经尝试了我能想到的所有索引,但无济于事。

0 投票
1 回答
889 浏览

sql - 行级策略不适用于我的表

我有一个表,我正在尝试对其应用策略,设置如下所示:

当我将角色设置为anonymous并从中选择所有记录时mytable

我预计不会返回任何行,因为我在using策略中的子句中的表达式是,null但我得到了一切。
我尝试了不同的postgresql版本(9.5、9.6、10.3),但它们都有相同的行为,我在这里做错了吗?

0 投票
0 回答
226 浏览

postgresql - 我可以按用户使用 RLS

我想使用 PostgreSQL RLS 功能在包含健康敏感数据的数据库中启用行级安全性。

设计隐私是我主要关心的问题。

基本上,我被迫使用通用应用程序用户连接到数据库以从连接池中受益,但是我想使用某种魔法来使用来自授权令牌的用户 GUID 来防止他访问其他用户的数据。

因为我使用的是 GraphQL,并且不想在客户端和/或 DAL 代码中硬编码这种行为,所以我想知道 PostgreSQL 中的 RLS 是否有帮助。

感谢您的见解。

编辑1:也许这个答案可能会有所帮助。

0 投票
0 回答
31 浏览

sql - 将 postgresql 上的使用与行级安全性相交

期望输出:

应该只显示(2,'{"section2"}'),但它显示了一切。

输入的时候sub_section,应该去section_table找到对应的section和intersect user_table,一旦intersect的值不为null,那么应该返回对应的值 user_table

我很困惑为什么它没有显示正确的预期结果。

0 投票
1 回答
33 浏览

sql - 某些用户仅读取活动记录(标志 1 或最新日期)的安全性

在 DataWarehouse (SQL Server 2012) 和某些表中,我想实现一个选项,其中一些用户只能看到最新的行(日期或标志)而不是整个历史记录。这可能吗?

0 投票
2 回答
609 浏览

sql - 组的行级安全性或使行可用于组

我希望只有组成员可以访问表中的行。我通过以下方法创建用户并将它们添加到组中,

然后我写的策略使它只能被当前用户访问。但我需要整个小组才能访问它。

pgUser 命名可以访问该行的用户。我希望用 pgRole 替换列 pgUser,其中提到了组的名称,其成员可以访问该特定行。任何提示或方法都可以使整个组可以访问行。

0 投票
2 回答
1499 浏览

sql - 当用户具有“授予所有”权限和宽松政策时,如何使用 RLS 将记录插入 Postgres

我是 Postgres 的 RLS 功能的新手。我相信我正在适当地遵循文档,但是却遇到了意外的行为。考虑以下情况:

  • 我有一张名为report_files
  • 这张桌子有一个简单的政策,policy <name> for all using (true)
  • 用户grant all对表具有权限(grant all on all tables in schema testing to testuser;,以及grant execute on all functions ...grant usage对于架构)
  • 用户现在可以读取表中的所有字段,但不能insert记录,出乎意料

这是psql的一个非常短的片段,展示了上述内容:https ://gist.github.com/cdaringe/85dd9a7b1278afe4770869dc494216f3

我已经设置了一个许可策略,它清楚地评估 OK,正如成功的select命令所证明的那样。

我可以解决什么问题才能insert使其正常工作?

谢谢!

0 投票
1 回答
214 浏览

sql - 仅在 SELECT 上的行级安全性

我在表上启用行级安全性。我只希望 SELECT 上的行安全性。以便其他用户可以插入和更新各自的记录。我正在使用 postgreSQL,而且我几乎是“行级别安全”的初学​​者。我正在尝试使用以下命令。如果我混合使用 PSQL 和 MySQL 命令,请更新。或任何更好的方法来实现它。

它工作正常,但是当我指定选择时,

我收到错误:

0 投票
1 回答
1807 浏览

sql - Performance issue using Row Level Security using lookup table

I have implemented Row Level Security using on SQL Server 2016. I think I have a failry complex setup, but our security requirement is complex.

This is in the context of a data warehouse. I have basic fact and dimension tables. I applied row level security to one of my dimension table with the following setup:

Table 1 : dimDataSources (standard physical table)
Table 2 : dimDataSources_Secured (Memory Optimized table)

I created a Security Policy on the dimDataSources_Secured (In-Memory) that uses a Natively Compiled function. That function read another Memory Optimized table that contains lookup values and Active Directory Groups that can read the record. The function use the is_member() function to return 1 for all records that are allowed for my groups.

So the context seems a bit complex but so far it works. But... now I get to use this in jonctions with fact table and we get performance hit. Here, I am not applying row level security directly on the fact table... only on the dimension table.

So my problem is if I run this:

It returns quickly, let's say 2 seconds.

If I run the same query but with a join on the secured table (or view), it will take 5-6 times longer:

This retrieves only the source I have access to based on my AD groups. When the execution plan changes, it seems like it retrieves the fact table data quickly, but then will do a nested loop lookup on the In-Memory table to get the allowed records.

Is that behavior caused by the usage of the Filter Predicate functions? Anyone had good or bad experiences using Row Level Security? Is it mature enough to put in production? Is it a good candidate for data warehousing (i.e. processing big volumes of data)?

It is hard to put more details on my actual function and queries without writing a novel. I'm mostly looking for guidelines or alternatives.