系统权限
系统权限是指被授权用户是否可以连接到数据库上及在数据库中可以进行哪些系统操作。
系统权限是在数据库中执行某种系统级别的操作,或者针对某一类的对象执行的某种操作的权利。
下面列举4个常见的系统权限:
1) create session:连接到数据库。
2) create table:创建表。
3) create view:创建视图。
4) create sequence:创建序列。
对象权限
对象权限是指用户对数据库中具体对象所具有的权限。
对象权限是针对某个特定的模式对象执行操作的权利,只能针对模式对象来设置和管理对象权限。
Oracle数据库用户有两种途径获得权限。
1.管理员直接向用户授予权限。
2.管理员将权限授予角色,然后再将角色授予一个或多个用户。(角色可以理解为一组权限的“集合”)
授予权限语法:
grant 权限|角色 to 角色名;
撤销权限语法:
revoke 权限|角色 from 用户名;
数据库用户安全设计原则:
1.数据库用户权限按照最小分配原则。
2.数据库用户分为管理、应用、维护、备份四类用户。
3.不允许使用sys和system用户创建数据库应用对象。
4.禁止将dba权限赋予用户。
Oracle系统预定义角色
1.connect:适用于需要连接上数据库的用户,特别是不需要创建表的用户。
2.resource:适用于更为可靠和正式的数据库用户。可以创建表、触发器、过程等。
3.dba:数据库管理员角色,拥有管理数据库的最高全向。一个具有dba角色的用户可以撤销任何其他用户甚至其他dba权限,一般情况下,最好不要对用户授予这个角色。
对象权限例子:
--授予用户A_hr修改System模式下employee表(ename, sal)的权限
GRANT UPDATE(ename, sal) ON employee
TO A_hr;
或
GRANT ALL ON employee
TO A_hr
WITH GRANT OPTION;
--撤销权限
REVOKE ALL ON employee FROM A_hr;
或
UPDATE system.employee SET sal=sal+100 WHERE empno=7788;
select * FROM system.employee;
ROLLBACK;
系统权限例子
--授予连接会话权限
GRANT CREATE SESSION TO A_hr;
--授予创建表权限
GRANT CREATE TABLE TO A_hr;
--权限合并
GRANT CREATE SESSION,CREATE TABLE TO A_hr;
--多个用户
GRANT CREATE SESSION,CREATE TABLE TO A_hr,A_oe;
--将权限授予所有用户
GRANT CREATE SESSION,CREATE TABLE TO PUBLIC;
--使被授予者进一步将权限或角色授予其他用户或角色
GRANT CREATE TABLE TO A_hr WITH ADMIN OPTION;
--撤销权限
REVOKE CREATE TABLE FROM A_hr;
--查询权限
SELECT * FROM DBA_SYS_PRIVS WHERE grantee ='A_HR';