Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql Oracle:通过视图控制对数据的访问?_Sql_Oracle_View - Fatal编程技术网

Sql Oracle:通过视图控制对数据的访问?

Sql Oracle:通过视图控制对数据的访问?,sql,oracle,view,Sql,Oracle,View,我在控制对数据库中数据的访问时遇到问题。这些数据是我公司的价格数据和从数据提供商处购买的价格数据的混合体,因为它们对能够访问其数据的每个用户收费,所以我需要能够限制对数据的访问 我有一个保存所有价格数据的方案“数据”。我想有两个附加的方案(例如:LIM_访问和FULL_访问),其中视图是建立在数据方案上的。例如: CREATE VIEW LIM_ACCESS.V_PRICES AS<br> SELECT [] FROM DATA.PRICES<br> WHERE SOUR

我在控制对数据库中数据的访问时遇到问题。这些数据是我公司的价格数据和从数据提供商处购买的价格数据的混合体,因为它们对能够访问其数据的每个用户收费,所以我需要能够限制对数据的访问

我有一个保存所有价格数据的方案“数据”。我想有两个附加的方案(例如:LIM_访问和FULL_访问),其中视图是建立在数据方案上的。例如:

CREATE VIEW LIM_ACCESS.V_PRICES AS<br>
SELECT [] FROM DATA.PRICES<br>
WHERE SOURCE = [MyCompany]

CREATE VIEW FULL_ACCESS.V_PRICES AS<br>
SELECT [] FROM DATA.PRICES
创建查看LIM\u ACCESS.V\u价格为
从数据中选择[]。价格
其中SOURCE=[MyCompany] 创建查看完整访问权限的价格作为
从DATA.PRICES中选择[]
但根据我的经验,LIM_访问和完整访问方案必须在数据表上具有选择权限才能创建视图,然后我回到第1步

作为一个数据库新手,我觉得必须有一个相对简单的解决方案,所以任何建议或提示(如果这个问题以前被问过并回答过)都非常感谢:-)

亲切的问候,

Svend

使用视图不会阻止一部分用户访问数据。您需要做的是实现行级安全性


另一种方法是使用某种形式的基于角色的权限,仅允许您想要访问“付费”信息的特定用户组。这可以通过下面的示例来完成

create user foo  
identified by password;  
--没有权限

create role paid_data;  
--在此为
付费数据
角色授予特权

grant paid_data to foo

用户
foo
现在将拥有
paid_data
角色拥有的权限。使用这样的角色的好处是,您可以快速撤销该组中每个人的访问权限/添加更多需要合并的访问权限。

您可以将所有视图放入数据架构中。然后,
根据需要向其他模式授予SELECT
,最好是通过Woot4Moo建议的数据库角色。

正如GriffeyDog建议的那样,这是最好的方法。首先在模式中创建两个视图,然后将这些视图上的select授予这两个用户

CREATE VIEW LIM_ACCESS_V_PRICES AS<br>
SELECT [] FROM DATA.PRICES<br>
WHERE SOURCE = [MyCompany];

GRANT SELECT ON LIM_ACCESS_V_PRICES TO LIM_ACCESS;

CREATE VIEW FULL_ACCESS_V_PRICES AS<br>
SELECT [] FROM DATA.PRICES;

GRANT SELECT ON FULL_ACCESS_V_PRICES TO FULL_ACCESS;
创建查看限制访问价格为
从数据中选择[]。价格
其中SOURCE=[MyCompany]; 向LIM_ACCESS授予选择LIM_ACCESS价格; 创建查看完整访问价格为
从DATA.PRICES中选择[]; 将完全访问价格选择授予完全访问权;
另一种方法是使用Oracle,也称为Oracle标签安全性。我用它大大简化了我的应用程序设计,同时确保用户只看到他们允许看到的数据。

感谢大家的建议-他们非常有用:-)祝您周末愉快:-)