许多Oracle产品都使用PRODUCT_USER_PROFILE,SYSTEM帐户里的表,提供产品层安全来补充SQL GRANT产品层安全,并且撤销用户role。这个表能用于限制用户从SQL*Plus访问Oraclel对象。我们提到的这个技巧适用于Oracle版本8,8i和9i。 一般观点: 在SQL*Plus环境里数据库管理员能够用PRODUCT_USER_PROFILE使SQL和SQL*Plus命令无效。
SQL*Plus而不是Oracle加强了数据库的安全性能。这样数据库管理员还能够限制用户访问GRANT, REVOKE和SET ROLE命令、控制用户改变访问数据库权限的能力。 ……
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】
微信公众号
TechTarget
官方微博
TechTarget中国
许多Oracle产品都使用PRODUCT_USER_PROFILE,SYSTEM帐户里的表,提供产品层安全来补充SQL GRANT产品层安全,并且撤销用户role。这个表能用于限制用户从SQL*Plus访问Oraclel对象。我们提到的这个技巧适用于Oracle版本8,8i和9i。
一般观点:
在SQL*Plus环境里数据库管理员能够用PRODUCT_USER_PROFILE使SQL和SQL*Plus命令无效。SQL*Plus而不是Oracle加强了数据库的安全性能。这样数据库管理员还能够限制用户访问GRANT, REVOKE和SET ROLE命令、控制用户改变访问数据库权限的能力。
SQL*Plus从PRODUCT_USER_PROFILE语句读取限制范围。用户下次登录到SQL*Plus时,PRODUCT_USER_PROFILE的操作就会生效。
创建表
你可以通过运行带有SQL扩展名的PUPBLD命令文件,如SYSTEM创建PRODUCT_USER_PROFILE语句。准确地文件扩展名格式以及文件位置由SYSTEM决定。注意Oracle设置和用户指南为你或你的DBA提供了更多的有关操作系统方面的信息。
表结构
PRODUCT_USER_PROFILE表由下面这些column组成:
PRODUCT NOT NULL char (30)
USERID char(30)
ATTRIBUTE char(240)
SCOPE char(240)
NUMERIC_VALUE NUMBER(15,2)
char_VALUE char(240)
DATE_VALUE DATE
LONG_VALUE LONG
Column的说明和用途:
下面的列表示对PRODUCT_USER_PROFILE表里Column的说明以及对每个column的用法。
Product:必须包括产品名称(在SQL *Plus文件)。你不能在这一column里输入通配符或NULL,还必须注意产品名称SQL*Plus必须在列入混合文件中,以便经过验证。
Userid:必须包括你想禁用的命令的用户名(在uppercase里)。为了使一个以上的用户不执行这个命令,使用SQL通配符(%)或输入多条语句。因此,下面的语句无效:
SCOTT
CLASS1
CLASS% ( 所有名字以CLASS开头的用户)
% (所有用户)
Attribute:必须包括SQL、SQL*Plus或你想禁用的PL/SQL命令(如GET)。如果你禁用了一个role,那么它必须包括字符串“ROLES”,但是你不能输入一个通配符。参考下面在SQL和能禁用的SQL*Plus列表中的“Administration”。
Scope:SQL*Plus不用包括这个列,你只需要输入NULL。其他产品可以在它里面存储一些数值。
char_Value:必须包括字符串DISABLED用来禁用一个SQL、SQL*Plus或者PL/SQL命令。如果你正禁用role,那么它一定要包含你想禁用的role的名称。你不能用通配符。
Date_Value:SQL*Plus不用包含列。你可以在这一列里输入NULL。其他的产品可在column里存储DATE值。
Long_Value:SQL*Plus不包含这一列。你可以在它里面输入NULL。其他的产品可以在这一列中储存LONG数值。
管理
DBA用户SYSTEM拥有PRODUCT_USER_PROFILE.上的所有权限(当用户SYSTEM登录时,SQL*Plus不执行读PRODUCT_USER_PROFILE.的任务。因此,对于用户SYSTEM.没有权县范围的限制)。其他Oracle用户名只能通过select访问这个表,这样他们就能够了解表对用户名和对PUBLIC的限制范围。当PUPBLD命令文件运行时,它就允许select语句访问PRODUCT_USER_PROFILE to PUBLIC。
禁用SQL*Plus、SQL以及PL/SQL命令
如果想让用户禁用SQL*Plus、SQL以及PL/SQL命令,就只需要在Userid栏里插入一行用户名、在Attribute列里插入一行命令名、在char_Value栏里插入DISABLED。Scope、Numeric_Value以及Date_Value栏都应该包含NULL。如:
PRODUCT USERID ATTRIBUTE char_VALUE
-------- ------ --------- ----------
SQL*Plus SCOTT HOST DISABLED
SQL*Plus % insert DISABLED
SQL*Plus % update DISABLED
SQL*Plus % delete DISABLED
再运行这些命令时,需要删除含限制范围的行。
你能禁用如下SQL*Plus命令:COPY、 EDIT、execute、EXIT、GET、HOST(或者是HOST操作系统的别名,如VMS 上的$以及UNIX上的!)、QUIT、 PASSWORD、RUN、SAVE、SET (查看下面的注释)、 SPOOL和START。
注:禁用SQL*Plus SET指令的同时也会禁用SQL SET ROLE和SET TRANSACTION命令。禁用SQL*Plus START的同时也会禁用SQL*Plus @和@@命令。
你同样也可以禁用下面的SQL命令:alter、ANALYZE、AUDIT、CONNECT、create、delete、drop、GRANT、insert、 LOCK、NOAUDIT、rename、REVOKE、select、SET ROLE、SET TRANSACTION、truncate和update。
你还可以禁用PL/SQL命令:BEGIN,DECLARE。
注:禁用BEGIN和DECLARE并不妨碍使用SQL*Plus execute命令。SQL*Plus execute必须分开禁用。
翻译
相关推荐
-
关乎企业文化的BYOD
如今,BYOD已经以星火燎原之势在企业内部迅速蔓延,然而对于BYOD的普及,很多企业仍然持观望态度
-
Oracle 数据库12c新特性总结(四)
本文是Oracle数据库12c新特性的系列文章的第四篇,作者将重点介绍一些对开发者而言非常有用的新特性。
-
甲骨文针对Java 7发布零天漏洞更新
甲骨文公司昨日发布了两个针对Java零天(zero day)漏洞的带外(out-of-band)安全更新,其中漏洞CVE-2013-0422在发现当天就已被攻击。
-
SSH 加密MySQL复制的正确建制
MySQL数据库很受人欢迎的原因,有它的免费性与开源性,而且MySQL数据库拥有比较详细的文档与内置支持数据MySQL复制等。