RSS订阅
RSS订阅TT数据库

限制用户从SQL*Plus访问Oracle对象

2008-7-21  选择字号:  | |
打印本文章

导读:作者在文中说明了如何限制用户从SQL*Plus访问Oracle对象的方法和步骤。包括一般观点、 创建表、表结构、Column的说明和用途以及管理等方面。

关键词:SQL*Plus 安全 Oracle安全 限制用户

正在加载数据... 【TechTarget中国原创】许多Oracle产品都使用PRODUCT_USER_PROFILE,SYSTEM帐户里的表,提供产品层安全来补充SQL GRANT产品层安全,并且撤销用户role。这个表能用于限制用户从SQL*Plus访问Oraclel对象。我们在这里提到的这一技巧适用于Oracle版本8,8i和9i。

【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必须分开禁用。

还没有登录? 阅读全文请先登录或注册
用户名:(请填写您的E-mail做为登录账号)
  • 获取最新的IT业界资讯、市场动态、行业趋势等独家原创内容。
  • 分享国内外技术专业人士提供的技巧经验。
  • 利用专注IT的技术资源中心,不断更新专业知识。
  • 享受白皮书、Webcast等系列特色增值服务。
  • 免费参加TT中国举办的各种会员活动。
  • 更多的精彩服务,在不断开发中……
用户名:(请填写您的E-mail)
密 码:
 永久登录
请输入您的登录email:
2009年是不是升级Oracle数据库和应用软件的一年?如果是,我们应该升级哪些Oracle数据库和应用软件呢?现在是不是实施Oracle架构的时候?
既然数据库连接的也是大小写敏感的,那么我们连接不同的数据库版本时应该应该注意什么问题?本文列出了这些药注意的问题:11g连接到11g:创建数据库连接时……
Oracle RAC安装配置流程包括哪些步骤?第一步是生成SSH的公共密钥和专用密钥,第二步将每个主机上的公共密钥文件id_rsa.pub和id_dsa.pub的内容复制到……。
据国外媒体报道,甲骨文周一修改了对德国软件业巨头SAP的指控,称在SAP收购TomorrowNow以前,SAP董事会曾得到过有关TomorrowNow从事非法活动的警告。
公司应该采取什么样的安全预防措施保护他们的Oracle数据库呢?公司能采取什么步骤来保护他们机密的财政数据?为什么安全是符合HIPPA法案最主要的部分?在安全方面你……

本专题介绍了SQL Server服务代理相关方面的知识,包括SQL Server服务代理基础知识的概述、消息类型、契约、队列、服务和路由、SEND命令和RECEIVE命令、性能方面的改进以及对运行状况的监控等等。

无论你是否计划将SQL Server数据库转换服务(DTS)包迁移到SQL Server集成服务(SSIS)或在SQL Server 2005里运行DTS包,都需要专家的一些建议。这一指南主要是包括SSIS的相关基础知识、技巧帮助你进行SSIS调整,还介绍了SSIS有经验的一些用户的具体信息等等。

子查询是一个嵌套在SELECT、INSERT、UPDATE 或DELETE语句,或者另一个子查询里的查询。一个子查询可以返回一行或多行结果给父查询。标量子查询是只返回一个值的查询:只有一个字段的一行记录。标量子查询可以在SQL语句的大多数位置,其中你可以使用一个表达式或一个实际值。
最新更新
专家答疑
技巧
Michael Hillenbrand
你能解释一下数据库公程师、数据库架构师以及数据库管理员之间有什么区别吗?数据库管理员:这是目前最普遍使用的对从事数据库相关的工作的人的头衔。数据库管理员是指……
Brian Peasland
对5GB大小的Oracle 7.3存档或删除的最佳办法是什么?为了便于管理机构查询,这些数据至少需要再用20年的时间。我们担心将来我们不能对它重新获取并迁入一个更新的……
Rudy Limeback
如何创建一个约束限制2007年1月1日之前的日期被录入?用CHECK约束就可以。如下面的示例……