近期在翻Oracle SQLPLUS官方文档,在讲SQLPLUS Security章节介绍了PUP这个机制。借此。我来使用下面:

PUP(PRODUCT_USER_PROFILE)介绍

  PRODUCT_USER_PROFILE是SYSTEM账户下一个表,可提供用户级别的安全限制。

PUP设置对DBA权限用户无效。

PUP仅仅针对本地数据库生效(Local Database)。









1、SYSTEM 用户创建PUP:

SQLPLUS SYSTEM

@ D:\app\Administrator\product\11.2.0\dbhome_1\sqlplus\admin\pupbld.sql

脚本内容

DROP SYNONYM PRODUCT_USER_PROFILE;

CREATE TABLE SQLPLUS_PRODUCT_PROFILE AS
SELECT PRODUCT, USERID, ATTRIBUTE, SCOPE, NUMERIC_VALUE, CHAR_VALUE,
DATE_VALUE FROM PRODUCT_USER_PROFILE; DROP TABLE PRODUCT_USER_PROFILE;
ALTER TABLE SQLPLUS_PRODUCT_PROFILE ADD (LONG_VALUE LONG); -- Create SQLPLUS_PRODUCT_PROFILE from scratch CREATE TABLE SQLPLUS_PRODUCT_PROFILE
(
PRODUCT VARCHAR2 (30) NOT NULL,
USERID VARCHAR2 (30),
ATTRIBUTE VARCHAR2 (240),
SCOPE VARCHAR2 (240),
NUMERIC_VALUE DECIMAL (15,2),
CHAR_VALUE VARCHAR2 (240),
DATE_VALUE DATE,
LONG_VALUE LONG
); -- Remove SQL*Plus V3 name for sqlplus_product_profile DROP TABLE PRODUCT_PROFILE; -- Create the view PRODUCT_PRIVS and grant access to that DROP VIEW PRODUCT_PRIVS;
CREATE VIEW PRODUCT_PRIVS AS
SELECT PRODUCT, USERID, ATTRIBUTE, SCOPE,
NUMERIC_VALUE, CHAR_VALUE, DATE_VALUE, LONG_VALUE
FROM SQLPLUS_PRODUCT_PROFILE
WHERE USERID = 'PUBLIC' OR USER LIKE USERID; GRANT SELECT ON PRODUCT_PRIVS TO PUBLIC;
DROP PUBLIC SYNONYM PRODUCT_PROFILE;
CREATE PUBLIC SYNONYM PRODUCT_PROFILE FOR SYSTEM.PRODUCT_PRIVS;
DROP SYNONYM PRODUCT_USER_PROFILE;
CREATE SYNONYM PRODUCT_USER_PROFILE FOR SYSTEM.SQLPLUS_PRODUCT_PROFILE;
DROP PUBLIC SYNONYM PRODUCT_USER_PROFILE;
CREATE PUBLIC SYNONYM PRODUCT_USER_PROFILE FOR SYSTEM.PRODUCT_PRIVS;

--禁用HR用户的DROP命令

SYSTEM@orcl> insert into product_user_profile values('SQL*Plus', 'HR', 'DROP', NULL, NULL, 'DISABLED', NULL, NULL);





已创建 1 行。





SYSTEM@orcl> commit;





提交完毕。





2、PUP表结构概览

SYSTEM@orcl> desc product_user_profile

 名称                                     是否为空?

类型

 ---------------------------------------- -------- ---------------------------

 PRODUCT                                  NOT NULL VARCHAR2(30)

 USERID                                            VARCHAR2(30)

 ATTRIBUTE                                         VARCHAR2(240)

 SCOPE                                             VARCHAR2(240)

 NUMERIC_VALUE                                     NUMBER(15,2)

 CHAR_VALUE                                        VARCHAR2(240)

 DATE_VALUE                                        DATE

 LONG_VALUE                                        LONG





 --PRODUCT : 说明要限制的程序 

 --USERID : 要限制的用户(大写)

 --ATTRIBUTE : 要限制的命令或角色

 --SCOPE : 不适用;放NULL

 --NUMERIC_VALUE : 不适用。放NULL

 --CHAR_VALUE :DISABLED

 --DATE_VALUE :不适用。放NULL

 --LONG_VALUE :不适用;放NULL

 





3、HR登录进行DROP操作证明设置生效:

SYSTEM@orcl> conn hr/hr

已连接。





HR@orcl> create table t(x int);





表已创建。





HR@orcl> drop table t;

SP2-0544: 在产品用户概要文件里禁用命令 "drop"

HR@orcl> conn system/oracle@orcl

已连接。





SYSTEM@orcl> delete from product_user_profile;





已删除 1 行。





SYSTEM@orcl> commit;





提交完毕。





SYSTEM@orcl> conn hr/hr@orcl

已连接。





HR@orcl> drop table t;





表已删除。









4、禁用角色

PRODUCT USERID ATTRIBUTE SCOPE NUMERIC_VALUE CHAR_VALUE DATE_VALUE LONG_VALUE

------- ------ --------- ----- -------- ------ ----- -----

SQL*Plus HR     ROLES                           ROLE1

SQL*Plus PUBLIC ROLES                          ROLE2





用户登录期间PUP行记录将翻译为下面命令

During login, these table rows are translated into the command

SET ROLE ALL EXCEPT ROLE1, ROLE2





样例:

SYS@orcl> create role r_t;

角色已创建。

SYS@orcl> grant select on t to r_t;

授权成功。

SYS@orcl> grant r_t to hr;

授权成功。

SYS@orcl> conn hr/hr

已连接。

HR@orcl> select * from sys.t;





未选定行

HR@orcl> conn system/oracle

已连接。





会话已更改。





SYSTEM@orcl> insert into product_user_profile values('SQL*Plus', 'HR', 'ROLES', NULL, NULL, 'r_t', NULL, NULL);





已创建 1 行。

SYSTEM@orcl> commit;





提交完毕。

SYSTEM@orcl> conn hr/hr

已连接。

HR@orcl> select * from sys.t;

select * from sys.t

                  *

第 1 行出现错误:

ORA-00942: 表或视图不存在





HR@orcl> select username, granted_role

  2      from user_role_privs

  3     where granted_role='R_T';





USERNAME                       GRANTED_ROLE

------------------------------ ------------------------------

HR                             R_T





HR@orcl> conn system/oracle

已连接。





会话已更改。

SYSTEM@orcl> delete from product_user_profile;





已删除 1 行。

SYSTEM@orcl> commit;





提交完毕。

SYSTEM@orcl> conn hr/hr

已连接。

会话已更改。





HR@orcl> select * from sys.t;





未选定行













------------------------‘

Dylan    Presents.

Oracle PUP(PRODUCT_USER_PROFILE)配置和使用的更多相关文章

  1. Oracle 11g DG配置简明版

    环境: 主库A机:在线生产环境,RHEL 6.4 + Oracle 11.2.0.3 备库B机:新增备机,RHEL 6.4 需求: 对生产环境最小影响前提下配置DG备库. 目录: 一.B机安装相同版本 ...

  2. oracle 客户端单独配置

    本文目的是在CentOS 5.3上安装Oracle 11.2 instant client来访问远端的Oracle 10.2数据库,笔者测试通过,应该也适用于Redhat Linux 5.x     ...

  3. 新建Oracle数据库时,提示使用database control配置数据库时,要求在当前oracle主目录中配置监听程序

    新建一个oracle数据库时,当提示使用database control配置数据库时,要求在当前oracle主目录中配置监听程序等字样的时候,问题是那个监听的服务没有启动,解决方法如下: 打开cmd命 ...

  4. BizTalk 2013R2 WCF-LOB Oracle Adapter安装配置/问题&解决方法

    BizTalk 2013R2 WCF-LOB Oracle Adapter安装配置/问题&解决方法 安装Oracle Adapter 安装Oracle客户端 BizTalk 2013R2 安装 ...

  5. Oracle 客户端安装配置

    电脑上安装了Oracle11G,我远程导出一个10g的数据库数据时,报了错误,猜测可能是我的11G客户端版本的问题.所以下载了10G的客户端 安装. 其实客户端的配置读取的是两个文件监听配置文件lis ...

  6. Oracle内存参数配置及版本问题

    Oracle的内存配置与Oracle性能息息相关.从总体上讲,可以分为两大块:共享部分(主要是SGA)和进程独享部分(主要是PGA).在 32 位操作系统下 的Oracle版本,不时有项目反馈关于内存 ...

  7. [转]Oracle GoldenGate安装配置

    ref:http://blog.sina.com.cn/s/blog_5d29418d0101cvyx.html 1 简介 Oracle Golden Gate软件是一种基于日志的结构化数据复制备份软 ...

  8. PL/SQL Developer 连接Oracle数据库详细配置方法

    PL/SQL Developer 连接Oracle数据库详细配置方法 近段时间很多网友提出监听配置相关问题,客户终端(Client)无法连接服务器端(Server).本文现对监听配置作一简单介绍,给出 ...

  9. oracle12c:通过oracle客户端工具配置tns,并使用sqlldr进行批量导入数据

    通过oracle客户端工具配置tns: 进入oracle配置工具“Net Configuration Assistant”-> 点击“下一步”,完成tns配置. 测试是否tns可用 命令:tns ...

随机推荐

  1. 12c weblogic需要输入用户名密码

    在目录/home/weblogic_12c/user_projects/domains/base_domain/servers/AdminServer/security下新增文件boot.proper ...

  2. 关于JAVA多线程并发synchronized的测试与合理使用

    在项目开发中, 或许会碰到JAVA的多线程处理, 为保证业务数据的正常, 必须加上锁机制,  常用的处理方法一般是加上synchronized关键字, 目前JDK版本对synchronized已经做了 ...

  3. 仿LOL项目开发第七天

    仿LOL项目开发第七天 by 草帽 不知不觉已经写到了第七篇这种类型的博客,但是回过头看看之前写的,发现都只能我自己能看懂. 我相信在看的童鞋云里雾里的,因为我基本上没怎么详细讲一个脚本怎么用?但是你 ...

  4. (a*b)%c 小的技巧

    (a*b)%c这个问题看上去好简单啊. 当然我们不是来说这么简单的问题了.你想一想,我们会不会遇到这种情况,a是__int64 ,b也是__int64 当两个数足够大的时候我们直接相乘的就会出现__i ...

  5. Python已成为网络攻击的首选编程语言

    Python已成为网络攻击的首选编程语言 最新的调查数据表明,Python已经变成了世界上最热门的编程语言了,而Python的热门风也刮到了信息安全领域中.Python,摇身一变,也变成了黑客开发网络 ...

  6. .Net垃圾收集机制—了解算法与代龄

    垃圾收集器在本质上就是负责跟踪所有对象被引用到的地方,关注对象不再被引用的情况,回收相应的内存.在.NET平台中同样如此,有效的提高.NET垃圾回收性能,能够提高程序执行效率. 其实垃圾收集并不是伴随 ...

  7. jQuery的搜索关键词自动匹配插件

    相信许多人都会用过搜索栏自动匹配关键词的功能,无论是像google的专业搜索引擎,还是普通的网站,现在许多都用上了这种关键词匹配技术,本文介绍的用jQuery实现的关键词匹配技术,当然要整合到自己的系 ...

  8. activity 保存数据

    activity 保存数据对android的商业项目十分的重要,譬如你在发微博的时候,突然来了一个电话,你洋洋洒洒写了100个字,你不能保存的话,你岂不要卖要骂娘. 那activity究竟是保存数据的 ...

  9. Transformer中引用iqd作为数据源的时提示TR1008无法连接问题

    刚接触tr的同行们可能都会遇到这么一个问题,当然我也遇到了. 今天把问题的解决办法详细的说明一下 从问题的表面来看是从cognos.ini文件缺少了什么配置东西,但是cognos10的安装中没有cog ...

  10. PreferenceScreen的应用

    PreferenceScreen preference是偏好.首选的意思,PreferenceScreen个人翻译成 "偏好显示",明确这个意思就好.就是说依据特点灵活的定义显示内 ...