如何禁止特定用户使用sqlplus或PL/SQL Developer等工具登陆?

简介:
最早想要实现禁止某些特定用户使用SQLPLUS或PL/SQL Developer等工具登陆是在2010年的3月,当时发现用户的一套数据库中有大量的用户使用老版本的PL/SQL Developer登陆,具体的版本号记不清楚了,大约是PL/SQL Developer 5的版本,是否正版授权不得而知, 反正就是一个办公室里有大量的阿姨、大叔都靠这个图形化工具访问数据库,做一些必要的数据操作,主要是一些SQL查询语句,有时候他们还会用工具栏查一些对象(search object),正是因为他们使用了老版本的PL/SQL Developer,造成在使用一些widget的时候会引起Oracle出现一些非致命的ORA-00600错误,虽然这些600错误不会导致严重的问题,但是只要是出现在告警日志Alert.log中的600还是需要我们去分析。 当时我的想法是直接从Oracle的角度禁止普通用户以PL/SQL Developer工具登陆,虽然当时没有真的这样做。 题外话,要真的这么做了,估计那一办公室的阿姨、叔叔都要找我的麻烦,他们可不会用SQLPLUS来登数据库;让他们升级PL/SQL Developer到高版本的想法也基本可以打住,让阿姨、叔叔们升级可要比登天还难。 Google了一番,没有找到太多有用的信息。 闲来无事,我在著名的Oracle-l Freelist邮件列表中发了一封邮件,集思广益:  
Hello every,

           Anyone can advise how to ban plsql developer  connect to oracle?
The plsql developer search widget may cause  some ora-600 warning in alert
log . So I want to ban any connection using plsql developer.
  Oracle-l Free List不愧是卧虎藏龙,第二天就收到了十分有用的信息,感谢这位 Coskan Gundogar的网友。    Damir-Vadas 在他的博客上提供了一种有效的方式 ,通过建立LOGON DATABASE的Trigger触发器,实现了仅允许拥有特定角色(Role)的用户通过sqlplus登陆实例。   这和我们的需求大致相仿,值得借鉴。我们的实际需求是: 针对某些已知的数据库用户账号,限制其使用SQLPLUS、PL/SQL Developer、Toad等工具登陆实例; 因为这里所要限制的用户账号和工具模块名(module)都是已知的,所以不必要如Damir-Vadas那样做成白名的形式,而只需要定义blacklist即可。实际这样做的一大目的是尽可能限制人为的登录; 我们知道当应用程序登录数据库时,根据应用程序的构成不同,可能使用JDBC Thin Client、Pro*C、ODBC等多种模块名(Module),我们不想限制应用程序的正常登录, 而仅仅想禁止人为地使用这些应用程序所使用的账号来登录实例(应用程序的账号信息可能被写在应用层中,或者为开发人员所知晓),一般我们只要限制SQLPLUS、PL/SQL Developer、Toad这几种主流的客户端程序,就可以限制人为地登录数据库了;当然这其实是防君子不防小人,实际如果hacker真的掌握了应用程序的账号密码的话,完全可以通过自己编写程序来访问数据库。   建立示例的,禁止以SQLPLUS和PL/SQL DEVELOPER登陆的用户账号TRY_LOGON_BY_TOOLS:  
SQL> select * from v$version;

BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 64bi
PL/SQL Release 10.2.0.1.0 - Production
CORE    10.2.0.1.0      Production
TNS for Linux: Version 10.2.0.1.0 - Production
NLSRTL Version 10.2.0.1.0 - Production

SQL> select * from global_name;

GLOBAL_NAME
--------------------------------------------------------------------------------
www.oracledatabase12g.com  & www.askmaclean.com

SQL> create user TRY_LOGON_BY_TOOLS IDENTIFIED BY abc;

User created.

SQL> grant connect,resource to TRY_LOGON_BY_TOOLS;

Grant succeeded.

  创建以下LOGON DATABASE Trigger即可限制TRY_LOGON_BY_TOOLS用户以SQLPLUS、Toad、PL/SQL DEVELOPER 三种软件登陆数据库,



本文转自maclean_007 51CTO博客,原文链接:http://blog.51cto.com/maclean/1278173

相关文章
|
29天前
|
SQL 大数据 数据处理
Flink SQL 详解:流批一体处理的强大工具
Flink SQL 是为应对传统数据处理框架中流批分离的问题而诞生的,它融合了SQL的简洁性和Flink的强大流批处理能力,降低了大数据处理门槛。其核心工作原理包括生成逻辑执行计划、查询优化和构建算子树,确保高效执行。Flink SQL 支持过滤、投影、聚合、连接和窗口等常用算子,实现了流批一体处理,极大提高了开发效率和代码复用性。通过统一的API和语法,Flink SQL 能够灵活应对实时和离线数据分析场景,为企业提供强大的数据处理能力。
180 26
|
3月前
|
SQL 数据采集 监控
局域网监控电脑屏幕软件:PL/SQL 实现的数据库关联监控
在当今网络环境中,基于PL/SQL的局域网监控系统对于企业和机构的信息安全至关重要。该系统包括屏幕数据采集、数据处理与分析、数据库关联与存储三个核心模块,能够提供全面而准确的监控信息,帮助管理者有效监督局域网内的电脑使用情况。
54 2
|
4月前
|
SQL 数据可视化 安全
微软SQL Server可视化工具与技巧
微软SQL Server不仅提供了强大的数据库管理功能,还集成了多种可视化工具,帮助用户更直观地理解和管理数据
|
4月前
|
SQL 数据可视化 关系型数据库
【数据库工具】DBeaver:一款免费的通用数据库工具和 SQL 客户端
【数据库工具】DBeaver:一款免费的通用数据库工具和 SQL 客户端
295 1
|
6月前
|
SQL 数据处理 数据库
|
6月前
|
SQL 存储 监控
|
6月前
|
Java 开发者 前端开发
Struts 2、Spring MVC、Play Framework 上演巅峰之战,Web 开发的未来何去何从?
【8月更文挑战第31天】在Web应用开发中,Struts 2框架因强大功能和灵活配置备受青睐,但开发者常遇配置错误、类型转换失败、标签属性设置不当及异常处理等问题。本文通过实例解析常见难题与解决方案,如配置文件中遗漏`result`元素致页面跳转失败、日期格式不匹配需自定义转换器、`<s:checkbox>`标签缺少`label`属性致显示不全及Action中未捕获异常影响用户体验等,助您有效应对挑战。
123 0
|
6月前
|
SQL Oracle 关系型数据库
SQL与PL/SQL:数据库编程语言的比较
【8月更文挑战第31天】
156 0
|
6月前
|
SQL 存储 数据处理
SQL中的运算符:数据操作的核心工具
【8月更文挑战第31天】
413 0