问题标签 [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 回答
27 浏览

postgresql - 为行指定的 postgresql 9.5 中的授权

我想为不同的用户添加带有 where 子句的授权,而不是列。我正在使用这个授权更新(ename),在emp上插入(empno,ename)到xyz;用于捕获列,但我不能对行执行此操作。

有什么方法吗?

0 投票
1 回答
619 浏览

sql-server - SQL Server 2016:如何为规范化表设置行级安全性 (RLS)

我有三张桌子MST_EMployeeMST_ProfitCenterMapping_Employee_ProfitCenter。我想在表上设置行级安全性Mapping_Employee_ProfitCenter

我正在执行以实现的步骤:

第 1 步:创建表值函数:

第 2 步:安全策略在映射表上创建和添加过滤器,并将用户名作为参数传递,其 id 存在于映射表中。

现在,当我执行以下查询而不是为用户“User1”提供记录时,它是为所有用户提供的。

如果有人知道如何处理这种情况,请帮助我。

谢谢!

0 投票
1 回答
439 浏览

sql-server - 将过滤器和块谓词应用于新表

我正在使用实施了行级安全性的 SQL Server 数据库。要访问某个用户的内容,我需要将其附加到 SQL 查询中:

这适用于数据库中的现有表。但是,我必须向数据库添加一个新表,并且我无法为我的新表添加相同的安全性。

这是现有表属性的样子

这就是新表属性的样子

这是我在 Microsoft 文档中找到并实现的代码。

显然我得到了一个错误:

找不到对象“RLS.fn_securitypredicate”或该对象不是内联表值函数。

现在我不知道在哪里可以找到要在新表上使用的正确块/过滤谓词。

TL;DR:在 SQL Server 数据库中的哪个位置列出了 RLS 谓词,我如何使用 Microsoft SQL Server Management Studio 访问/查看它们?

0 投票
1 回答
2588 浏览

postgresql - 如何在 postgres 中使用“更新跳过锁定”而不锁定查询中使用的所有表中的行?

当您想使用 postgres 的 SELECT FOR UPDATE SKIP LOCKED 功能来确保从表中读取并声明任务的两个不同用户不会被彼此阻塞并且也不会得到另一个用户已经读取的任务:

查询中正在使用连接来检索任务。除了包含主要信息的表之外,我们不希望任何其他表具有行级锁定。下面的示例查询 - 仅锁定表中的行 - 以下查询中的“任务”

现在,如果用户 A 正在检索该表的大约 200 行,则用户 B 应该能够检索另一组 200 行。

编辑:根据下面的评论,查询将更改为:

如何最好地下订单以便对行进行排序?虽然如果多个用户调用此命令,该命令将生效,但仍应维护正在返回的行的一些顺序神圣性。

此外,这是否还确保调用相同选择查询的多个线程将检索一组不同的行,或者仅对更新命令进行锁定?

0 投票
1 回答
603 浏览

sql - SQL Server 表值函数执行代码

基于行级安全性,我创建了一个表值函数:

假设MainTable包含数百万行。是否独立userAccessPredicate计算SELECT Value FROM dbo.Values每一行?如果是这样,我想它是无效的。如何检查执行表值函数时生成的确切代码?SQL Server Profiler 不行,因为我使用的是 Azure DB。

我正在使用 SQL Server 2016 Management Studio。

0 投票
1 回答
990 浏览

java - 行级策略中的应用程序用户:如何设置会话变量

我正在尝试编写在执行查询之前检查用户权限的行级策略。在这种情况下,我需要能够在从连接池中获取连接时设置一个包含用户标识符的会话变量,并在将连接返回池时取消设置/释放相同的会话变量。以下博客可能会提供一个很好的背景来解释我正在尝试做的事情:https ://blog.2ndquadrant.com/application-users-vs-row-level-security/

在我的设置中,我有以下层:

  1. 光:HikariDataSource
  2. Spring:(TransactionAwareDataSourceProxy使用Hikari数据源),DataSourceTransactionManager(使用Hikari数据源)
  3. jOOQ:(DataSourceConnectionProvider使用 Spring 数据源),DefaultDSLContext

前两层仅供内部使用。也就是说,应用程序中的所有查询都是通过最后一层 jOOQ 完成的。

所以,我需要能够在连接take from poolgive back to pool.

我一直在查看 Hikari 和 Spring 的文档,但找不到任何有用的东西。这可能是我的第一个问题:Hikari 和/或 Spring 是否提供这样的回调?

我调查的下一步是 jOOQ。我偶然发现ExecuteListener。这是我的后续问题:这会ExecuteListener是一个很好的应用程序吗?这并没有实现连接被取回并返回的实际点,但execution context在我的情况下可能已经足够好了(因为我所有的查询都是在 jOOQ 中完成的)?如果是这样,我应该实现startandend功能吗?

0 投票
1 回答
216 浏览

sql - SQL 行级安全性多用户和系统管理员

因此,当我注意到当我应用它时,我正在执行行级安全策略,它应该为用户工作。但是对于我作为系统管理员来说,我再也看不到表格内容了。因为政策也对我隐瞒了。

我如何添加自己也可以查看表格?

0 投票
1 回答
1459 浏览

sql-server - 同一表上的多个安全谓词 (FILTER|BLOCK)

我正在对我的数据库实施 RBAC-RLS 安全性,我有一个问题。这是场景:

我有一个函数,它有一个输入参数@PermissionId,用于检查登录的用户是否具有该权限。数据库中的每个角色都关联多个权限,每个用户可以拥有多个角色。

假设我有一个表Products,我只希望有权限ReadProducts的用户能够查看表的内容。

没关系,但现在我也有权限SystemAdministrator,他也需要有权限才能查看Products表的内容。

如果我添加另一个策略

它会像预期的那样工作吗,还是这两项政策之间会发生冲突?

或者其他情况,如果我在第一个策略中添加另一个过滤谓词怎么办。所以它会是这样的:

这会好吗?我的意思是,如果我作为用户拥有这两种权限之一,我可以看到表格的内容Products吗?

0 投票
1 回答
1053 浏览

sql - 一行有多个用户的行级安全性

我正在尝试在 SQL Server 2016 中实现行级安全性。

问题是,我可以有多个用户应该对给定的行具有读取权限,并且当我在谓词中编写一些复杂的条件时,性能变得非常非常非常糟糕。

我试图将所有用户名保留在表的一列和谓词中以通过它们搜索SYSTEM_USERwith% LIKE %但性能很低。

我的受控表中用户名列中一行的值示例:

domain\john.wick;domain\red.eagle;domain\spartak.something....

这是我的功能:

执行时间从 2 秒变为 50 秒。任何改进建议。

0 投票
1 回答
268 浏览

postgresql - 使用行级安全设置选择

我正在尝试select在 postgres 的行级安全策略的权限检查中添加一个。

我这里有 2 个表要关心 1) 组 2) group_member

  • group - 有一个 group_id 和 person_id(即创建组的人)
  • group_member - 有 group_id 和 person_id

我想表达的是群主踢群成员或群成员自行离开的能力。

这是我的政策:

但是,我收到以下错误 -syntax error at or near "group"

我怀疑,postgres 不明白group_id来自哪里。在这种情况下,也许对一般情况感到困惑group。我的问题是,我在这里缺少什么?我怎样才能得到这个工作。