关于权限设置的一个小把戏

简介: 现在有一个需求,需要开放一些"特殊“的权限给开发组。 具体的背景是这样的: 有三个数据库用户,tabowner, tabconn, tab_temp三个用户 tableowner是owner用户,里面存放着表,索引,序列,存储过程等。
现在有一个需求,需要开放一些"特殊“的权限给开发组。
具体的背景是这样的:
有三个数据库用户,tabowner, tabconn, tab_temp三个用户
tableowner是owner用户,里面存放着表,索引,序列,存储过程等。
tabconn是一个连接用户,在这个用户里面建立了一些同义词,可以直接通过这个用户来进行数据的增删改查。
tab_temp是一个临时的连接用户,通过这个用户只能查询一些有限的信息,不能进行数据的改动。而且不能执行select sequence_name.nextval from dual这样类型的语句,避免人为干扰sequence的增长。

现在的问题是,因为没有开放select on sequence的权限给tab_temp,所以通过tab_temp无法查询到tabowner里的sequence信息。
举个简单的例子。
--tabowner创建一个视图,从user_sequence里面查询当前schema中的sequence信息,得到的结果是实时的。
SQL> create view a as select *from user_sequences;
View created.
--里面有198条记录
SQL> select count(*)from a;
  COUNT(*)
----------
       198
如果我尝试把视图访问的权限赋予tabconn,那么是否可以通过tabconn访问到tabowner中的user_sequences信息呢?
SQL> grant select on a to tabconn;
Grant succeeded.

SQL> conn tabconn/ tabconn
Connected.

SQL> select count(*)from tabowner.a;
  COUNT(*)
----------
         0
可以看到,这样是行不通的         

不过可以做一个小把戏,使得权限的访问可以选择性的开放。 通过dblink
目前tabconn可以访问all_sequences的信息,里面包含tabowner里的sequence信息
可以在tab_temp下创建一个db link,然后通过这个db link来做一些工作。
SQL> conn tab_temp/ tab_temp
Connected.
SQL> 
SQL> create database link temp_link connect to tabconn identified by tabconnusing 'TESTDB';
Database link created.

SQL> select count(*)from all_sequences@temp_link;
  COUNT(*)
----------
       230

可以看到能够查到数据了,不过如果足够细心的话,发现结果好像多了一点,按照我们的要求,指定查询的是tabowner下的sequence信息。
SQL>  select count(*)  from all_sequences@temp_link where sequence_owner='TABOWNER'
  2  /
  COUNT(*)
----------
       197
这样就没有问题了。
创建视图
create view sequence_summary_v as select *from  all_sequences@temp_link where sequence_owner='TABOWNER';

直接暴露视图也不太好,可以通过同义词来进行屏蔽
SQL> select count(*)from sequence_summary;
  COUNT(*)
----------
       197
SQL>  create synonym sequence_summary for sequence_summary_v;
Synonym created.
这样对于开发来说,就能够查到实时的sequence信息了。而且也能够杜绝增长/修改sequence value 的情况。
目录
相关文章
|
19天前
|
Linux 数据安全/隐私保护
权限
Linux权限管理是一种控制用户和程序对文件和文件夹的访问的方法。它使用三个主要的概念:所有者(owner)、群组(group)和其他(others)。 每个文件和文件夹都有一个所有者,这是创建该文件或文件夹的用户。所有者拥有最高的权限,可以对文件和文件夹进行更改、读取和删除。群组是一组用户,他们可以共享文件和文件夹的权限。其他用户是除所有者和群组以外的其他用户。 Linux使用三个主要的权限:读、写和执行。读权限允许用户查看文件或文件夹的内容,写权限允许用户更改文件或文件夹的内容,执行权限允许用户运行文件或文件夹中的程序。是一种控制用户和程序对文件和文件夹的访问的方法。它使用三个主要的概念:
14 1
|
缓存 网络协议 安全
权限提升
权限提升
182 0
权限提升
Confluence 6 权限设置
备注:当 '外部用户管理' 权限没有被选择的时候,你仅可以指派 LDAP 用户到本地用户组中。 只读(Read Only) 从你目录服务器上获得 LDAP 用户,用户组只能通过你的目录服务器进行修改。
1251 0
cetnos6下特殊权限
版权声明:转载请注明出处:http://blog.csdn.net/dajitui2024 https://blog.csdn.net/dajitui2024/article/details/79396740 ...
1146 0
|
Shell 数据安全/隐私保护 Linux
|
Linux 数据安全/隐私保护 Unix

热门文章

最新文章