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

database - PostgreSQL 行级安全性涉及视图或带有连接的选择

(欢迎提出更好或更具描述性的标题的建议)。

我想知道在 PostgreSQL 中是否可以使用 RLS(或任何其他机制)进行以下操作。如果用户名与另一个表中的列匹配,我希望用户能够更新表的某些行。在下面的示例中,我希望在 tablenene中显示为 column的 user能够更新 column 和table 。我要表达的是对 t2 中将由以下 select 语句匹配的行应用策略: ut0apt2SELECT a, p FROM t2 INNER JOIN t1 ON (t2.t1id = t1.id) INNER JOIN t0 ON (t1.t0id = t0.id) WHERE t0.u = 'nene';

这可能吗?关于如何进行的任何建议?一个明显的解决方法是在表 t2 上复制用户名,但这会在 t2 上添加无关信息,并且需要强制执行额外的约束。

这是我的三个表(实际情况下字段更多,表 t1 不能排除在问题之外;我将它留在示例中,因为需要两个连接可能会改变解决方案空间)。

  • t0是用创建的CREATE TABLE t0 (id TEXT PRIMARY KEY, u TEXT UNIQUE, pn TEXT);,现在包含:

    /li>
  • t1是用创建的CREATE TABLE t1 (id TEXT PRIMARY KEY, t0id TEXT REFERENCES t0(id), pn TEXT);,现在包含:

    /li>
  • t2是用创建的CREATE TABLE t2 (id TEXT, t1id TEXT REFERENCES t1(id), a INET, p INT);,现在包含

    /li>
0 投票
0 回答
190 浏览

sql - 如何使用模式保护行级别的表?

我正在尝试对我的数据模型实施行级安全权限。因为我使用的是 SQL Server 2012,所以我必须使用视图和与视图连接的用户名来执行此操作。(这不是重点,但对于那些有兴趣的人,我粘贴了帮助我获得预期效果的链接 http://www.sqlservercentral.com/articles/Stairway+Series/128866/)。

我决定使用模式权限来限制访问。一切正常,但不是一个方案。我的观点包括对我限制的几个方案中的表的选择。但是,即使我禁用了对存在问题的架构的访问(假设它是“CDN”方案),我也无法从我的视图中引用 CDN 方案中的表。我发现这是架构类型“数据库角色”,所有者是 CDN。如果我将 CDN 方案的所有者更改为“用户”类型的“dbo”,我可以在我的视图中访问该模式。

我不知道这些类型之间的区别,但我不想更改 CDN 的所有者。有人可以给我任何线索来解决这个问题吗?提前致谢。M。

我发现当在常规选项卡中的角色> CDN 的数据库角色中,我从我的视图中添加架构时,我可以执行我的视图。但是不知道这个改动是否安全?

我可能没有正确定义问题。我将重新定义它:

  1. 我的目标是限制对数据库中所有表和视图等的访问,“Qlik”模式中的除外。

  2. 我的视图(在 Qlik 架构中)连接到不同的架构,即 CDN、TBC、dbo(Qlik.MyCostumersView - 示例视图):

    /li>

在任何情况下我都无法达到我的目标。

我发现我可以管理具有相同所有者的模式之间的访问。但是 CDN 将 CDN 作为所有者。当我在其他架构中将所有权更改为 CDN 时,它工作正常,不幸的是,除了 dbo 架构(dbo 所有者)。

模式和所有权 - 图片

0 投票
0 回答
213 浏览

sql-server - 跨多个架构 SQL Server 2012 的行级安全访问

我想保护对表中行的访问。问题是我需要连接到数据库和不同模式之间的数据。当我的数据在一个数据库和模式中时,我或多或少可以处理它。当视图需要从具有不同所有者的其他数据库和模式中获取数据时,问题就始于视图。

我创建了一个表,我根据登录情况授予对数据的访问权限

像这样:PermissionTab

登录

1 登录1

2 登录1

3 登录1

4 登录2

5 登录3

6 登录4

7 登录5

1 登录6

2 登录6

3 登录6

4 登录6

5 登录6

我已经在模式 CDN、TBC、dbo 和 Optima 中设置数据不可访问(这些模式有不同的所有者 CDN - CDN - 其余 dbo)。我已经创建了架构 Qlik(dbo 所有者)(用户可以访问),其中是从表中获取数据的视图(在不同的架构中)。为了在我的视图中获得行级安全性,我添加了类似的内容。

这些视图也必须连接到许多数据库。

这是一个示例视图 [Qlik].[DekretPomocniczyView] 从 [CDN] 中选择 *。[DekretyNag] 内部连接 ​​[CDN].[DekretyElem] 在 DeN_DeNId=DeE_DeNId 左侧 外部连接 [CDN].[DekretyKonta] 在 DeE_DeEId=DeK_DeEId 左侧DeK_AccId=Acc_AccId 上的外部连接 Aplikacja.Qlik.MPKKontaView

我发现使用模式获得行级权限并在表之间进行连接是不可能的。一个数据库中的视图经常连接到另一个数据库中的视图,后者也从另一个数据库中获取数据。

因为这个问题对我来说很紧迫,经过多次测试,我发现我可以使用角色和仅对特定视图而不是模式设置权限来获得效果。现在(在我问完这个问题之后)我想知道我是否可以使用模式来获得它,以及我的模型是否正确且安全。这是 SQL 2012。

0 投票
1 回答
57 浏览

php - 通过 PHP 登录 MySQL 数据库帐户,同时实现行级安全

我正处于一个我正在从事的项目中,由于信息过多且没有足够的 MySQL 经验,我正在过度思考事情,所以我非常希望这里的专家说“闭嘴,做这。” 我什至愿意接受有关我的整个方法很愚蠢并且应该彻底改革的建议。这个项目中唯一不可协商的是使用 php 和 MySQL。

所以我试图在 MySQL 中实现行级安全性。阅读一些解释 MySQL 没有角色的好文章,因此您要么需要为每个需要 FGAC 的表使用视图,要么需要在其中过滤用户可识别信息(如用户 ID)的条件。由于数据库的相对复杂性和数据库性质的安全问题,我选择了视图路线。这是我的视图示例:

由于每个用户都有自己的数据库帐户,其中绝大多数用户只能选择、更新、插入等相关视图,这完美地为我提供了用户工作的组织,用户组织的直属子组织,以及属于上述任何组织的任何系统。用户名是他们的电子邮件地址,因此 user 函数的 substring_index 中的 2 是他们的密码,并且他们的密码已充分散列。

当我添加 Web 界面时,问题就出现了。显然,当用户使用他们的用户名和密码登录时,这些将通过 mysqli_connect() 传递给数据库。据我所知,最佳实践是在每个事务或事务组运行后关闭连接。

那么问题就变成了,用户如何在他的数据库账号下进行连接呢?我显然不会要求他每次都重新输入密码。将散列密码保存在 $_SESSION 变量中是个坏主意,对吧?鉴于此,是否可以在 MySQL 端做一些事情来连接为更通用的帐户,但将用户设置为他自己,这样 user() 将返回他的实际数据库帐户名称?

或者,正如我在开头所问的那样,这种方法是不是很愚蠢,应该被废弃以支持更好的做法?感谢您提供的任何信息。

0 投票
1 回答
1354 浏览

sql - 规范化表上 Postgres 中的行级安全性

前提

在文档中,行级安全性似乎很棒。根据我读过的内容,我现在可以停止创建这样的视图:

最重要的是,Postgres 对它进行了很好的分析,view从索引扫描开始,然后对user_data表进行哈希连接,这正是我们想要发生的,因为它非常快。将其与我的 RLS 实现进行比较:

这种糟糕的策略会为表中的每一行执行条件data,而不是像我们的视图那样通过将查询范围限定为我们CURRENT_USER有权访问的行来进行优化。需要明确的是,这意味着select * from data命中表中的每一data

问题

我如何编写一个内部策略,该内部策略未在目标表中的每一行上select测试。换一种说法:在对结果运行实际查询之前,如何让 RLS 在目标表上运行我的策略?select

ps 我已经把这个问题留给了一些人含糊不清,主要是因为sqlfiddle还没有达到 9.5。如果我需要添加更多颜色或一些要点来解决我的问题,请告诉我。

0 投票
1 回答
695 浏览

azure - 对 SQL Azure 的 Active Directory B2C onBehalfOf 身份验证

我有一个针对 Azure Active Directory 对用户进行身份验证的应用程序。然后将返回的 JWT 令牌从应用程序传递到验证令牌的 Web API。

然后,我要求 Active Directory 代表用户为 SQL Azure 生成另一个 JWT 令牌。Web API 现在可以使用 OnBehalfOf 令牌向 SQL Azure 进行身份验证。从这里开始,数据库通过使用 JWT 中的一些唯一信息来相应地过滤结果来实现 RLS(行级安全性)。

为此,用于请求 onBehalfOf 令牌的 Active Directory 应用程序必须具有 SQL Azure 的 requiredResourceAccess。这是通过在 Azure 门户中编辑应用程序清单来完成的,指定 SQL Azure (022907d3-0f1b-48f7-badc-1ba6abab6d66) 可以访问 Azure SQL DB 和数据仓库 (c39ef2d1-04ce-46dc-8b5f-e9a5c60f0fc9)。

我想支持社交登录,Azure B2C 通常更适合我的要求。但是 Azure Active Directory B2C 是否可以支持此身份验证流程?

0 投票
0 回答
139 浏览

sql-server - SQL Server 2016 中具有行级安全性的全文搜索

我正在开发实现行级安全功能的多租户应用程序。另外,我想对一些具有安全策略的表执行一些基于文本的搜索。例如:按 SKU、描述和客户全名搜索,如下图所示。在 SP 内部,我使用此视图通过给定参数搜索内容。

我知道您不能在视图上创建索引,因为相关表具有安全策略。我的看法如下:

无法创建视图“dbo.vwSales”上的索引,因为该视图正在引用安全策略引用的表“dbo.Sales”。

从表中删除安全策略并将其添加到视图不起作用,因为很有可能从查询中访问表。所以我认为桌子应该有政策或者我错了。

是否有任何解决方法来满足这种真实情况?(当您在视图中连接多个表并创建索引时会发生这种情况。)

0 投票
1 回答
1192 浏览

ssas - SSAS 表格模型的行级安全性 (RLS)

我是用于开发分析模型的 SSAS 技术的新手。我必须为安全性非常重要的大型应用程序构建几个表格模型。我想做的是重新使用多维数据集源中存在的行级安全性并将其应用于多维数据集本身。

例如,如果我从一个模式的两个表构建一个表格模型,并且这两个表启用了 RLS,我希望多维数据集考虑到这种安全性,这样当我访问报表并以用户身份登录时,我将仅根据我拥有的权限查看汇总数据。

通过网络搜索,我找到了在多维数据集中实现 RLS 的方法,但没有从源代码继承它。但同样,我是这项技术的新手,所以我更愿意在这里问。谢谢

0 投票
0 回答
188 浏览

postgresql - how can i use table partition and row level secrity on tables together in postgresql?

I want to partition a table and then use row level security on those table to grant access to application users.Partition is based on organisation id and as such and is dynamic.

0 投票
1 回答
402 浏览

sql-server - 为什么要为 SQL Server 中的安全对象创建单独的架构?

我确实想使用 SQL Server 2016 的行级安全功能。在文档的最佳实践部分中,它说:

强烈建议为 RLS 对象(谓词函数和安全策略)创建单独的模式。

这种说法背后的原因是什么?有什么好处?