问题标签 [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 投票
3 回答
2580 浏览

sql - 同一个表的表和同义词产生不同的结果

在 OracleEBS 中,有 AP、AR、XLA 等模块。每个模块都有自己的模式,其名称与相应的模块名称相同。还有APPS模式。您可以通过在 APPS 模式中创建的对象的同义词访问来自不同模式的不同表。例如,在 xla 架构中有一个名为 xla.xla_transaction_entities 的表,并且该表在应用程序架构中有同义词。也就是说,以下两个选择查询应该产生相同的结果集:

但是,第二个查询产生的结果比第一个少。然后,我删除并重新创建了 apps.xla_transaction_entities 同义词。只有在重新创建同义词之后,上述两个查询才会产生相同的结果集。问题是,为什么会发生?是什么导致同义词产生不同的结果集?据我所知,同义词就是——同义词。顾名思义,它们应该产生与其对应的表相同的结果集。

编辑:在另一个测试实例中,我重现了同样的问题:

产生以下内容:


产生以下内容:


给了我以下内容:


输出以下内容:

因此,您可以看到 APPS.XLA_TRANSACTION_ENTITES 指向 XLA.XLA_TRANSACTION_ENTITIES。再一次,一旦我重新创建了同义词,问题就消失了。这让我如此困扰的原因是因为我们编写的大多数自定义报告都使用了同义词而不是实际的表名。所以,我想知道除非我在 APPS 模式中重新创建所有同义词,否则问题是否会持续存在。

0 投票
1 回答
554 浏览

acl - 用于行级安全性的自定义 ACL

我已经看到了一些使用具有如下结构的权限表的行级 ACL 实现

其中 Permission_Id 是(读取、写入、更新、删除、批准等)

我想知道用数据描述关系(Relationship_Id)而不是描述权限是否有任何好处。

我们将描述用户是“所有者”、“批准者”、“审阅者”、“公共查看者”等的想法。

然后,这种关系将定义一组权限。这可以减少权限的大小。

对这种方法有什么想法吗?

0 投票
1 回答
773 浏览

mysql - MYSQL 访问控制

我想对存储在我的 MySQL 数据库中的数据实现列级和行级访问控制。我在我的服务器上使用 NodeJS,该怎么做?我看到 SAP Hana 允许这样做,但想保留 MySQL。

0 投票
0 回答
99 浏览

sql-server - 列表视图中安全部分的条件

我们正在研究 XAF 中的安全部分,我们正在尝试在某些对象上实现安全模块,并且我们正在使用“实体框架”而不是“XPO”。

我们在对象权限中的标准有问题。问题是,每当我们在“角色”中为“目标类型”定义条件时,此条件不适用,因此每当我们使用“受保护的内容”值登录时,将显示不希望显示的行那个角色。

此外,我们通过“SQL Server Profiler”监控了我们的系统和 SQL Server 之间的所有事务,我们发现这个条件(条件条件)没有添加到发送到数据库的 where 子句中。但在 Security Demo 应用程序中,一切正常。

所以问题是:如何在某种类型上设置对象级别权限,使其适用于查询,因此从不从数据库中获取?目前,安全性适用于查询结果,而不是查询本身。所以它显示所有行,但有些行带有“受保护的内容”。

0 投票
2 回答
6138 浏览

sql - 为什么没有为 Postgres 视图启用行级安全性?

我需要严格控制我的 Postgres 数据的读写。可更新视图始终提供对我的数据读取的非常好的、严格的控制,并允许我添加有价值的计算列。Postgres 9.5 行级安全性引入了一种新的强大的方法来控制我的数据。但我不能同时使用这两种技术视图和行级安全性。为什么?

0 投票
0 回答
810 浏览

sql-server - SQL Server 2012:如何为 y 部门中的 x 用户角色设置表和行级安全性(访问控制)?

我有n 个用户角色,这些角色将限制访问程度,例如

  1. 阅读器(只读)
  2. 作者(选择、插入、更新、删除)
  3. 维护者(例如为其组织单位创建新表或视图)

在我们m 个组织单位(部门)的每一个中,例如国家/地区的销售部门

  1. 美国
  2. 日本
  3. 英国
  4. 德国

这将限制表和数据行的可见性(行级安全性)。

问题:满足我的访问控制要求的最佳设置是什么

  • 无需创建太多登录名、数据库用户或数据库角色(例如,创建 n * m 的完整矩阵不是一个选项,n + m 将是完美的)。
  • 允许用户查看他们的表以使用标准查询/报告工具(视图是可以接受的)
  • 最小化用户更改所需的数据库更改(我使用的是 Active Directory)
  • 将维护者用户角色创建的新表限制为例如她/他有权访问的(国家?)模式?

我想过使用基于 Windows AD 组的数据库角色,但没有看到避免 n * m 角色爆炸的方法(因此数据库登录以引用 AD 组)。

注意:我看到了一个类似的问题,但它与将组织单位分组为(重叠)层次结构有关(但没有区分用户角色):

SQL Server 行级安全性 - 多对多

我正在使用 Microsoft SQL Server 2012,并且用户和组在 Active Directory 中维护......

像SQL Server 2012 中的行级安全性白皮书中描述的解决方案对我来说似乎太复杂了(直到它是唯一的选择 ;-)

0 投票
1 回答
466 浏览

sql - Postgres 上的行级选择策略(greenplum)

我使用的是 Greenploum 数据库,但我假设它或多或少与 Postgres 相同。我想根据表分区的列的值来实现行级安全策略。

我有一张桌子。TABLE rank(id int、rank int、year int、gender char(1)、count int、source_system 文本)

示例数据: (1,2, 2012, 1,1, source_system_a), (2,1, 2012, 1,1, source_system_b), (3,4, 2012, 1,1, source_system_a), (4,3, 2012, 1,1, source_system_c),

该表基于 source_system 列进行分区。我希望有一组可以看到所有数据的用户和一组不能看到基于 source_system 列的所有内容的用户。source_system_a 应该是一个安全值,因此只有具有安全权限的人才能看到具有 source_system_a 的行。

例如,

用户 a(可以查看全部)执行“从排名中选择 *;”

结果: 1,2, 2012, 1,1, source_system_a, 2,1, 2012, 1,1, source_system_b, 3,4, 2012, 1,1, source_system_a, 4,3, 2012, 1,1, source_system_c,

用户 b(不安全)确实“从排名中选择 *;”

结果: 2,1, 2012, 1,1, source_system_b, 4,3, 2012, 1,1, source_system_c,

非常感谢

0 投票
0 回答
890 浏览

sql - Cloudera Impala 中的行级安全性

我需要在 Impala 中实现基于用户 ID 的行级安全性。我现在遵循的方法是我有一个用户到角色的映射,并使用它来形成一个主查询,如下所示:

然后,有另一个查询如下:

这样,每当用户登录时,他只需要查询众所周知的视图,而无需基于每个用户/角色创建视图。问题是这个查询在 Hue 中超时(这是它最常使用的地方),并且至少需要 10 分钟才能在 shell 中执行一个基本查询。有没有更好的方法来完成这项工作?

0 投票
1 回答
4836 浏览

postgresql - PostgreSQL 9.5 - 行级安全/ROLE 最佳实践

我想掌握在支持 Web 应用程序的多租户数据库中使用新行级安全功能的最佳方法。

目前,该应用程序有几个不同的可用角色,具体取决于它尝试采取的操作。

一旦应用程序使用自己的 ROLE 建立连接,应用程序就会将身份验证参数(由用户提供)传递到不同的函数中,这些函数会根据用户提供的身份验证参数过滤掉行。该系统旨在与成千上万的用户一起使用,并且似乎可以正常工作;然而,它显然很笨重(而且很慢)。

似乎如果我想使用新的行级安全功能,我需要为每个真实世界的用户(不仅仅是 Web 应用程序)创建一个新的角色来访问数据库。

这个对吗?如果是这样,在数据库中创建数千个角色是个好主意吗?


从评论中的a_horse_with_no_name链接更新(感谢,该线程是正确的):

现在,我很困惑,current_setting('app_name.app_user')因为我的印象是这只适用于配置参数......在哪里app_name定义?

0 投票
1 回答
859 浏览

postgresql - postgres 中的角色、组和设置会话授权

我正在为多租户应用程序处理 postgres 行级安全性。我想通过一个策略来实现这一点,该策略基于我表中的一列租户名称来分隔行。我有每个租户的角色。但是,我通过超级用户的连接来维护一个连接池。这样我就可以只有一个连接池。一旦我有来自租户的查询,我想先删除该租户的权限,然后执行查询。

所以我以超级用户身份连接到数据库,然后执行“设置会话授权租户角色”。这将设置 session_user 和 current_user 变量。但是,问题在于该租户用户可以自己执行“设置会话授权 some_other_tenant”,然后行安全性无关紧要。我猜这是因为数据库登录上下文是超级用户。

那么我该如何实现呢?一旦我对某个用户执行“设置会话授权”或“设置角色”,该用户将无法再次运行相同的操作。

谢谢