xia*_*tus 3 oracle database-design permissions vpd
让我们假设我们有以下情况:我们有一个 Oracle 模式/用户:USER_TEST(具有“创建会话”权限)。SYS 作为 SYSDBA 在模式 USER_TEST 上创建几个表。是否可以禁止用户 USER_TEST 访问其架构上的表?
虽然您没有可以撤销的特权,而且我想知道为什么您不能创建另一个用户,但您的问题的答案是......
如果您拥有 Oracle 企业版,您可以使用虚拟专用数据库功能来防止选择表。以下是Oracle 数据库安全指南 11g 第 2 版的概述:
Oracle 虚拟专用数据库 (VPD) 使您能够创建安全策略以在行和列级别控制数据库访问。从本质上讲,Oracle 虚拟专用数据库将动态 WHERE 子句添加到针对应用了 Oracle 虚拟专用数据库安全策略的表、视图或同义词发出的 SQL 语句。
Oracle 虚拟专用数据库直接在数据库表、视图或同义词上强制实施精细级别的安全性。因为您将安全策略直接附加到这些数据库对象,并且每当用户访问数据时都会自动应用这些策略,所以无法绕过安全性。
当用户直接或间接访问受 Oracle Virtual Private Database 策略保护的表、视图或同义词时,Oracle 数据库会动态修改用户的 SQL 语句。此修改创建了一个 WHERE 条件(称为谓词),该条件由实现安全策略的函数返回。Oracle 数据库使用可以在函数中表达或由函数返回的任何条件动态地、对用户透明地修改语句。您可以将 Oracle 虚拟专用数据库策略应用于 SELECT、INSERT、UPDATE、INDEX 和 DELETE 语句。
要防止SELECT
在桌子上,您需要执行以下操作: