作为加强安全性的练习,我将删除 Oracle 数据库用户的所有系统权限。现在这个用户只有以下系统权限:
- 创建会话
- 无限表空间
我希望用户不能执行任何 DDL 命令。但令我惊讶的是,即使无法创建一个,用户也可以在自己的模式中 DROP TABLE。
Oracle文档说 DROP TABLE 的先决条件是“该表必须在您自己的模式中,或者您必须具有 DROP ANY TABLE 系统特权”。只是!!!我不了解 Oracle 的安全逻辑,但有什么办法可以防止用户删除自己的表?
另一种方法是创建另一个用户来运行应用程序并授予对象访问权限,我宁愿避免这样做,因为存在潜在问题。