Oracle 的用户访问控制
1、权限
Oracle 数据库安全分为:
系统安全
数据安全
系统权限:访问数据库的权限
对象权限:操作数据库对象的内容
schema:对象的集合。如表、视图、索引等。
schema 举例:
scott user 下的 table、index、sequence、view 等数据库对象统称为 scott schema。
schema 和 user 的关系:一一对应。
在 oracle 中创建一个 user,就会创建一个以该 user 命名的 schema,以后通过该 schema
来管理该 user 下的对象。
描述 select * from scott.emp;
访问 scott schema 下的 emp 对象
scott user 下的所有对象集合称为 scott schema
2、Oracle 系统权限:
166 种以上的权限
DBA 拥有最高的系统权限,典型的权限包括:
创建用户
删除用户
删除表
备份表
......
2.1 创建用户
[oracle@centos1 ~]$ sqlplus / as sysdba
SQL*Plus: Release 11.2.0.1.0 Production on Fri Aug 31 16:43:53 2012
Copyright (c) 1982, 2009, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL> create user test identified by test;
User created.
SQL> conn test/test;
ERROR:
ORA-01045: user TEST lacks CREATE SESSION privilege; logon denied
Warning: You are no longer connected to ORACLE.
2.2 用户的系统权限
创建用户后,用户是没有任何系统权限的,DBA 可以为这个用户授予特殊的系统权限:
开发人员可能需要如下系统权限:
create session
create table
create sequence
create view
create procedure
语法: grant privilege [,privilege...] to user [,user]
SQL> grant create session to test;
Grant succeeded.
SQL> conn test/test;
Connected.
SQL> create table t1 ( id number(4));
create table t1 ( id number(4))
*
ERROR at line 1:
ORA-01031: insufficient privileges
SQL> conn / as sysdba
Connected.
SQL> grant create table to test;
Grant succeeded.
SQL> alter user test quota unlimited on users;
User altered.
SQL> conn test/test
Connected.
SQL> create table t1 ( id number(4));
Table created.
3、角色
Oracle 引入 role 概念是为了简化权限管理。
举例:如果把 create table\create view\create session\create sequence 四个权限
分配给3 个user,如果不引入 role,则需要一一分配 12 次。
如果引入 role dev,可以把这四种权限授予 dev role,然后把 dev role 一一分配给
这 3 个 user,这样只需执行 3 次分配即可。
创建角色
SQL> create role dev;
Role created.
为角色授予权限
SQL> grant create table,create view,create session to dev;
Grant succeeded.
将角色分配给用户
SQL> grant dev to test;
Grant succeeded.
修改 user 密码
SQL> grant dev to test;
Grant succeeded.
对象权限:
对象 table view sequence procedure
ALTER YES YES
DELETE YES YES
EXECUTE YES
INDEX YES
INSERT YES YES
REFERENCES YES
SELECT YES YES
UPDATE YES YES
对象权限的授权
GRANT OBJECT_PRIV ON OBJECT TO [USER|ROLE|PUBLIC] WITH GRANT OPTION
示例:
SQL> grant select on scott.emp to test;
Grant succeeded.
SQL> grant select on scott.dept to dev,test;
Grant succeeded.
1、权限
Oracle 数据库安全分为:
系统安全
数据安全
系统权限:访问数据库的权限
对象权限:操作数据库对象的内容
schema:对象的集合。如表、视图、索引等。
schema 举例:
scott user 下的 table、index、sequence、view 等数据库对象统称为 scott schema。
schema 和 user 的关系:一一对应。
在 oracle 中创建一个 user,就会创建一个以该 user 命名的 schema,以后通过该 schema
来管理该 user 下的对象。
描述 select * from scott.emp;
访问 scott schema 下的 emp 对象
scott user 下的所有对象集合称为 scott schema
2、Oracle 系统权限:
166 种以上的权限
DBA 拥有最高的系统权限,典型的权限包括:
创建用户
删除用户
删除表
备份表
......
2.1 创建用户
[oracle@centos1 ~]$ sqlplus / as sysdba
SQL*Plus: Release 11.2.0.1.0 Production on Fri Aug 31 16:43:53 2012
Copyright (c) 1982, 2009, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL> create user test identified by test;
User created.
SQL> conn test/test;
ERROR:
ORA-01045: user TEST lacks CREATE SESSION privilege; logon denied
Warning: You are no longer connected to ORACLE.
2.2 用户的系统权限
创建用户后,用户是没有任何系统权限的,DBA 可以为这个用户授予特殊的系统权限:
开发人员可能需要如下系统权限:
create session
create table
create sequence
create view
create procedure
语法: grant privilege [,privilege...] to user [,user]
SQL> grant create session to test;
Grant succeeded.
SQL> conn test/test;
Connected.
SQL> create table t1 ( id number(4));
create table t1 ( id number(4))
*
ERROR at line 1:
ORA-01031: insufficient privileges
SQL> conn / as sysdba
Connected.
SQL> grant create table to test;
Grant succeeded.
SQL> alter user test quota unlimited on users;
User altered.
SQL> conn test/test
Connected.
SQL> create table t1 ( id number(4));
Table created.
3、角色
Oracle 引入 role 概念是为了简化权限管理。
举例:如果把 create table\create view\create session\create sequence 四个权限
分配给3 个user,如果不引入 role,则需要一一分配 12 次。
如果引入 role dev,可以把这四种权限授予 dev role,然后把 dev role 一一分配给
这 3 个 user,这样只需执行 3 次分配即可。
创建角色
SQL> create role dev;
Role created.
为角色授予权限
SQL> grant create table,create view,create session to dev;
Grant succeeded.
将角色分配给用户
SQL> grant dev to test;
Grant succeeded.
修改 user 密码
SQL> grant dev to test;
Grant succeeded.
对象权限:
对象 table view sequence procedure
ALTER YES YES
DELETE YES YES
EXECUTE YES
INDEX YES
INSERT YES YES
REFERENCES YES
SELECT YES YES
UPDATE YES YES
对象权限的授权
GRANT OBJECT_PRIV ON OBJECT TO [USER|ROLE|PUBLIC] WITH GRANT OPTION
示例:
SQL> grant select on scott.emp to test;
Grant succeeded.
SQL> grant select on scott.dept to dev,test;
Grant succeeded.