权限的分类
系统权限
什么是系统权限
使用户可以在数据库中执行特定的操作
如:创建索引,表,会话,表空间
授予系统权限
grant {system_priv|role},{system_priv|role}.. to {user|role|public} [with admin option]
system_priv
:指定要授予的系统权限
role
:指定要授予的角色名
public
:将系统权限授权给所有用户
with admin option
:使被授权者进一步将此权限授予其他用户或角色
查看某个用户拥有哪些权限:
select * from dba_sys_privs where grantee='';
撤销系统权限
revoke {system_oriv|role}
from {user|role|public}
对象权限
什么是对象权限
使用户可以访问和操纵特定对象
如,对表的一些操作
授予对象权限
grant {obj_priv[(column_list)]},..|ALL[privileges]
on [schema.]object
to {user|role|public},..
[with grant option]
--示例
grant update(列1,列2) on 表名
to 用户名;
obj_priv
:指出表授予谁
column_list
:可以具体到某列的权限
all
:将所有权限授予已被授予with grant option 的对象
on object
:表示将要被授予权限的表
with admin option
:使被授权者也用于对其他用户授权此功能的
撤销对象权限
revoke {obj_priv|role},..
on [schema.]object
from {user|role|public},..
--示例
revoke all on employee from 用户名;
系统权限与用户权限的撤销区别 with grand option:
系统:不会收回赋予后的
用户:会收回
管理角色
角色的优点
- 通过角色Oracle提供简单且可控制的权限管理
- 是授予用户或其他角色的相关权限的命名组
- 意义在于减轻数据库中的权限管理
使用预定义角色
类别 | 说明 |
---|---|
connect | 需要连接上数据库的用户,特别是那些不需要创建表的用户,通常赋予该角色 |
resource | 更为可靠和正式的数据库用户可以赋予该角色,可以创建表,触发器,过程等 |
dba | 数据库管理员角色,拥有数据库的最高权限 |
数据库安全设计原则
- 数据库用户权限授权按照最小分配原则
- 不允许使用sys和system用户建立数据库应用对象
- 禁止
grant dba to user
- 删除或锁定数据库测试用户scott
- 修改可用用户的默认密码
- 对查询用户只开放查询权限
- 对新建用户初次登陆数据库强制修改密码
- 开发环境,测试环境,生产环境中
相同用户的权限的设置必须完全一致
总结
- 权限分为系统权限和对象权限
- 系统:使用户可以在数据访问中执行特定的操作
- 对象:使用户可以访问和操作特定的(数据表)对象
- 创建和撤销权限
- 通过角色Oracle提供简单且可控制的权限管理
- 数据库安全设计原则