问题标签 [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.
sql - 如何在 Oracle 数据库中查看 VPD 添加的谓词?
行级安全策略添加的谓词不会显示在 10046 跟踪文件中。一个建议是使用 10053(优化器)跟踪来查看 VPD 谓词,但很难从另一个会话中设置给定会话的 10053 跟踪。
有没有其他方法可以查看 RLS 策略添加了哪些谓词?
场景:RLS 策略应用于会话 #1 中的查询。我们需要从会话#2 分析会话#1 中发生的情况。
数据库 10g 是 Oracle 10g。
mysql - 通过 rails session 参数过滤 MySQL 数据
我有一个由 MySQL 支持的 rails 应用程序。它使用行级权限模型。即我在名为 projects 的表上有几列(permission1、permission2、permission3),我需要检查具有他们可以在会话中访问的权限详细信息的用户是否可以看到从项目表中查询的数据并对其进行过滤如果他们不这样做。
我可能会根据具体情况执行此操作,但我正在寻找通用的东西,以便(i)它适用于其他表,我可能会在以后添加权限模型和(ii)所以如果我运行 Projects.all某处忘记添加适当的 where 子句我不会不小心向无权查看数据的用户显示数据。
以前我在 Java webapp 中使用了修改后的 JDBC 驱动程序,但我不知道 rails + MySQL 的等效解决方案应该是什么。
security - 在 Hive 中提供对视图的访问
我是 Hadoop/Hive 的新手。我有一个与 Hive 中的 VIEWS 相关的问题。
我在 Hive 中有一个要求,我需要向某些用户授予对表的特定行的访问权限,向某些用户授予对表的特定列的访问权限。我知道我们可以在 Hive 中创建视图。但是是否可以使用 GRANT 语句仅向用户提供对 VIEWS 的访问权限而不授予对基表的访问权限?
如果这不可能,是否有任何其他方法可以在 Hive 中仅提供列或行级别的访问?
请告诉我。感谢您的帮助。
oracle11g - 如果 DB 用户具有 SELECT 权限,如何限制他查看表数据
Oracle DB 用户对 DB 模式的所有表都具有 SELECT 权限。我可以限制用户查看表格数据吗?用户应该能够选择表格但不能看到数据。
对于使用 Oracle Data Modeler 3.3 审查 DB 设计并为 DB 生成 ALTER 脚本的用户,他只能看到表设计并将其与 ERD 进行比较,需要此特定要求
我可以使用 FGAC 或 RLS 来实现它吗?
oracle - 在 Oracle VPD / RLS 中,如何防止恶意用户谓词泄露信息?
我一直在阅读 Oracle VPD(虚拟私有数据库,又名细粒度安全性,基于标签的安全性的基础)的文档,但有些东西我很难掌握。VPD 如何防止用户使用WHERE
条款中的恶意函数泄露信息?
假设您有一个生成静态谓词的 VPD 策略cust_no = SYS_CONTEXT('order_entry', 'cust_num');
(如Oracle VPD 教程)。
这会导致查询被重写,因此:
变成:
就目前而言还不错。但是如果用户写:
? Wheremy_malicious_function
将它看到的每个值插入到恶意用户控制的另一个表中,这样他们就可以通过选择该表来查看秘密数据。
根据文档,VPD 重写器将产生如下内容:
但是 Oracle 可以自由地重新排序WHERE
. my_malicious_function
如果它认为这将是更便宜或更有选择性的谓词,是什么阻止它首先运行?(当安全条件是SYS_CONTEXT
查找时不太可能,但如果条件是针对另一个表的子查询,或者它本身是 UDF,则很可能)。
我已经阅读了文档,但没有看到它在哪里指定执行 VPD 谓词与用户提供的谓词的任何顺序保证。是否有这样的保证或任何其他机制来防止恶意谓词函数?
(我也很好奇 VPD 策略中的恶意谓词函数是否会导致特权用户通过生成引用恶意函数的谓词来运行他们不想要的用户提供的代码,但这在某种程度上是分开的。)
sql-server-2008 - 如何配置 SQL Server 用户以过滤多租户应用程序的表
我们需要构建一个在访问我们的多租户 SQL 数据库的客户服务器上运行的 EXE 应用程序。
对于我们在 Web 应用程序中使用的每个表,我们都有一个列 SubscriberId,以将用户限制为仅属于他们的 SubscriberId 的记录——这非常好(在我们的服务器上)。
我们有一个 Exchange 到 SQL 服务,该服务在我们的服务器上运行,它将 Exchange 联系人和约会同步到我们的 SQL 表。一个问题是我们需要客户授予我们 Exchange 'ApplicationImpersonation' 角色,以便我们访问他们服务器上的数据 - 这意味着我们可以访问他们的整个 Exchange 数据库存储。
大多数客户都愿意为我们提供该访问级别,但少数客户不希望我们拥有该级别的访问权限——这是可以理解的。
我们的同步应用程序是一个 C# .NET 控制台应用程序,我们希望对其进行调整,以便最终用户在他们的服务器上安装该应用程序并使其与我们的服务器远程同步。
问题:是否可以在 SQL Server 2008R2 上创建一个用户,该用户只能访问该用户过滤的 WHERE SubscriberId = 201 的行(例如)。
我们将允许端口 1433 访问他们的服务器,并且用户/密码将用于 App.config 中的连接字符串。
如果是这样,我们可以在 Windows exe 应用程序中创建一个管理面板,在其中设置 SQL 用户/密码及其 Exchange 超级用户。然后他们可以远程同步 - 但只能在我们的 SQL 数据库中看到他们自己的记录。
否则,我们似乎需要重新设计应用程序以使用 API 和备用安全方案。那显然需要做更多的工作:-(
谢谢,查尔斯
tableau-api - 如何在 Tableau 中创建多级行级别安全性?
我正在尝试使用 tableau 8.1 中的自动行级安全性,但如果我在最高级别创建安全性,它不会将安全性传递给该级别的子级。我只能通过创建一个包含我希望允许访问的每个对象的大型 Excel 表来实现这一点。我可以使用手动方式,但这太乏味了。我相信有人已经找到了解决这个问题的方法,但我在网上找不到任何东西。
database - 客户端-数据库方案中的行级安全性
我正在寻找一种很好的模式来实现适合在客户端-> 数据库环境中使用的行级安全控制(例如通过代理、中间人 Web 服务或存储过程)。我控制客户端和数据库。一些要求:
- 禁止用户查看他们无权查看的查询结果中的行
- 允许用户将自己的行插入和更新到表中,这使他们有权查看它们
- (软要求)允许用户授予其他人读取或写入其行的权限
- 在 Linux 上运行的开源或低成本解决方案。据我了解,没有免费的数据库可以实现行级安全性。甲骨文支持这一点,但它太$$$$。Postgres可能会在 9.4 中实现这一点,但它最初是针对 9.3 的并且滑倒了,并且有关于 ML 的讨论它可能会再次滑倒。我暂时考虑使用 postgres 只是因为它们似乎在此功能上走得最远。
我有一些(不是非常好的)想法:
- 使用 postgresql 的安全屏障视图并拒绝用户访问基础表。不幸的是,没有将行插入安全屏障视图的好方法,因此某些特权代理/Web 服务将不得不处理插入语句。这似乎很难做对。
- 使用常规视图,并拒绝用户访问基础表。这允许
insert
,但我需要非常严格地锁定权限(例如,不创建函数),并且似乎有很多泄漏信息的陷阱(如除以零)。 - 定义 SQL 的某个子集,并创建一个代理,它是您与数据库的唯一通信点。代理解析您的 SQL 查询并重写它以强制执行安全要求。一般来说,这似乎很难做到,但也许在 postgres 真正实现行级安全性之前,我可以使用一个非常小的 SQL 子集。
- 只是为不同的用户(甚至不同的数据库)提供不同的表。但是,我不确定这适用于很多用户的效果如何。此外,这似乎不符合软要求。
- 找到一些实际支持这一点的商业但成本合理的数据库
- 使用Veil但是好像没有维护,并且有其他解决方案的大部分限制
我在这个话题上做了很多谷歌搜索,但我还没有看到有人在现实世界的场景中如何解决这个问题的事后分析。有一些 MS SQL 的文档,但在 MySQL 中似乎不鼓励使用,并且 postgres 基本上不存在文章。
这似乎是一个非常普遍的问题,但我想很多人正在编写 Web 应用程序并且满足于将他们的用户束缚在某些预先审查过的查询中,但我真的需要给我的用户尽可能多的灵活性来查询数据我的客户。
jasper-reports - Jasper 在行级别报告行级别安全性
我正在使用 jasperserver 5.5。用户级别的行安全工作正常,但角色级别似乎有一些问题。
我将它插入 JIProfileAttribute
插入JIProfileAttribute
( id
, attrName
, attrValue
, principalobjectclass
, principalobjectid
) 值 (8, 'test_attr', 'val1,val2,val3, 'com.jaspersoft.jasperserver.api.metadata.user.domain.impl.hibernate.RepoRole', 7);
这是我的安全文件的片段..
所有文档仅在用户级别发言。有没有办法让他们达到角色级别?
任何帮助,将不胜感激。谢谢!
oracle - 预期 UDT 在虚拟专用数据库策略中获得 NUMBER
我有以下问题:我想对数据库中的表实施“行级安全策略”并添加了此功能:
我从 DBMS_RLS 调用了 ADD_POLICY 以将其添加到其他策略中
当我在 sql plus 中调用该函数而不将其添加为 RLS 策略时,将返回预期的“where”子句
但如果我将其称为 VPD-Policy,则会出现此错误消息。
我猜这是因为结果是 Select 而不是 VARCHAR,但是将 TO_CHAR 添加到“select to_char(...) into return_value”和“return TO_CHAR(return_value)”似乎都可以解决问题。
其他政策工作得很好。
谢谢你的帮助。
马蒂亚斯