1 权限概览
系统权限:允许用户在数据库中执行特定操作
对象权限:允许用户访问和操作特定对象
系统特权:每个系统特权允许用户执行特定的数据库操作或类数据库操作。例如,创建表空间的特权是一个系统特权。系统特权可以由管理员授予,也可以由被明确授予权限来管理该特权的人授予。有170多种不同的系统特权。许多系统特权包含ANY子句。
对象特权:对象特权允许用户对特定对象执行特定操作,例如表、视图、序列、过程、函数或包。没有特定的权限,用户只能访问他们自己的对象。对象特权可以由对象的所有者、管理员或被显式授予对对象特权的权限的人授予
2 权限管理
可以在创建用户时或稍后管理系统权限。
使用ANY子句授予特权意味着特权跨越模式行。例如,如果拥有CREATE TABLE特权,那么可以创建一个表——但只能在自己的模式中。SELECT ANY TABLE特权允许从其他用户拥有的表中进行选择。SYS用户和具有DBA角色的用户被授予所有特权;因此,它们可以对任何数据对象执行任何操作。ANY系统特权的范围可以通过使用Oracle Database Vault选项来控制。
With Admin,使用户能够管理权限并将系统权限授予其他用户。
授予系统特权的SQL语法是:
GRANT <system_privilege> TO
在授予系统权限之前仔细考虑安全需求。一些系统特权通常只授予管理员:
受限会话:此特权允许登录,即使数据库已在受限模式下打开。3
3 特殊权限
SYSDBA和SYSOPER:这些特权允许在数据库中关闭、启动和执行恢复和其他管理任务。
SYSOPER允许用户执行基本的操作任务,但不允许查看用户数据。
它包括以下系统特权:
启动和关闭
创建SPFILE
改变数据库打开/ MOUNT /备份
改变数据库ARCHIVELOG
更改数据库恢复(仅完全恢复)。任何形式的不完全恢复,例如until|change|cancel|using backup controlfile时,都需要作为SYSDBA连接。
限制会话
另外,SYSDBA系统特权还允许不完全恢复和删除数据库。实际上,SYSDBA系统特权允许用户作为SYS用户进行连接。
SYSASM:该特权允许启动、关闭和管理ASM实例。
DROP ANY对象:DROP ANY特权允许删除其他模式用户拥有的对象。
创建、管理、删除和更改表空间:这些特权允许对表空间进行管理,包括创建、删除和更改表空间属性。
创建库:Oracle数据库允许开发人员从PL/SQL创建和调用外部代码(例如,C库)。库必须由数据库中的库对象命名。CREATE LIBRARY特权允许用户创建可从PL/SQL执行的任意代码库。
创建任意目录:作为一种安全措施,代码所在的操作系统目录必须链接到一个虚拟Oracle目录对象。使用CREATE ANY DIRECTORY特权,可以潜在地调用不安全代码对象。
CREATE ANY DIRECTORY特权允许用户对Oracle软件所有者可以访问的任何目录创建一个目录对象(具有读和写访问权)。这意味着用户可以访问这些目录中的外部过程。用户可以尝试直接读写任何数据库文件,比如数据文件、重做日志和审计日志。确保组织有一个安全策略,防止滥用像这样的强大特权。
GRANT ANY OBJECT PRIVILEGE:此权限允许不拥有的对象授予对象权限。
ALTER DATABASE和ALTER SYSTEM:这些非常强大的特权允许修改数据库和Oracle实例(例如,重命名数据文件或刷新缓冲区缓存)。
4 练习题
大概描述几个常见的特殊权限