OCP复习 - PLSQL(16),管理(16-19) - 权限管理

来源:互联网 发布:数据库中double的精度 编辑:程序博客网 时间:2024/05/29 18:37

Oracle权限管理的几个基本概念

Oracle权限管理的几个基本概念是用户、角色、系统权限、对象权限。
用户(user)的概念显而易见。
系统权限(system privilege)是指系统层面的权限,如创建会话、创建表、索引等。
对象权限(object privilege)是指针对具体每个对象的权限。对象包括表、列、视图等。
角色(role)是一组权限的集合,因为Oracle的权限非常多,为了管理方便,引入了角色的概念。
通过创建用户,为用户分配角色,或直接分配权限,可以实现对用户权限的管理。

权限分配的过程如下:
1、从头开始,DBA创建了一个新用户:
创建一个用户,首先要指定默认表空间及配额、临时表空间。
CREATE USER user
  IDENTIFIED {BY password | EXTERNALLY}
  [ DEFAULT TABLESPACE tablespace ]
  [ TEMPORARY TABLESPACE tablespace ]
  [ QUOTA {integer [K | M ] | UNLIMITED } ON tablespace
  [ QUOTA {integer [K | M ] | UNLIMITED } ON tablespace ] ...]
  [ PASSWORD EXPIRE ]

  [ ACCOUNT { LOCK | UNLOCK }]
  [ PROFILE { profile | DEFAULT }]

ALTER USER user IDENTIFIED BY password;

2、然后,需要给新用户分配权限,典型的权限是:
  CREATE SESSION //这是一个的权限,创建会话。
  CREATE TABLE
  CREATE OTHER OBJECTS...
分配系统权限的语法是:
  GRANT privilege1, 2, ... TO user1, user2, ...
分配对象权限的语法是:
  GRANT {object_priv(, object_priv...)|ALL}[(columns)] //注意权限可以控制到列级别
    ON object
    TO {user[, user...]|role|PUBLIC} //PUBLIC表示分配给所有人
    [WITH GRANT OPTION]; //这个选项允许被分配权限的用户、角色将这个权限再分配给别人

3、也可以先创建角色,为角色分配权限(包括系统和对象级别的,语法同上),再将角色分配给用户:
  SQL> CREATE ROLE manager;
  Role created.
  SQL> GRANT create table, create view TO manager;
  Grant succeeded.
  SQL> GRANT manager TO cvelasqu, aropebur;
  Grant succeeded.

收回权限的语法如下:
  REVOKE {privilege [, privilege...] | ALL}
    ON object
    FROM {user[, user...]|role|PUBLIC}
    [CASCADE CONSTRAINTS]

同义词
在基于user、Schema的资源权限管理模型中,Oracle的另一个对象类型是同义词。通过为用户A指定Schema B中对象的同义词,允许用户A访问Schema B的对象,而无需显式指定Schema。
创建同义词:

CREATE [PUBLIC] SYNONYM synonym //PUBLIC表示这是一个公共同义词
FOR object;

删除同义词的语法:
DROP SYNONYM s_dept;

Profile
Profile用来控制用户的资源权限,注意CPU、I/O、内存、并发会话这些高级选项:
Password aging and expiration
Password history
Password complexity verification
Account locking
CPU time
I/O operations
Idle time
Connect time
Memory space (private SQL area for MTS only)
Concurrent sessions

PROFILE管理的相关SQL语句:
CREATE PROFILE profile LIMIT
DROP PROFILE profile [CASCADE]
使用CREATE/ALTER USER将PROFILE关联给用户。

典型的系统权限

如果系统权限有ANY关键字,表示可以在任何schema上执行该操作。
典型的系统权限:
CREATE ANY INDEX
ALTER ANY INDEX
DROP ANY INDEX

CREATE TABLE
CREATE ANY TABLE
ALTER ANY TABLE
DROP ANY TABLE
SELECT ANY TABLE
UPDATE ANY TABLE
DELETE ANY TABLE

CREATE SESSION
ALTER SESSION
RESTRICTED SESSION

CREATE TABLESPACE
ALTER TABLESPACE
DROP TABLESPACE
UNLIMITED TABLESPACE

系统权限管理的相关SQL语句:
GRANT {system_priv|role}
[, {system_priv|role} ]...
TO {user|role|PUBLIC}
[, {user|role|PUBLIC} ]...
[WITH ADMIN OPTION]

REVOKE {system_priv|role}
[, {system_priv|role} ]...
FROM {user|role|PUBLIC}
[, {user|role|PUBLIC} ]...

对象权限的相关SQL语句:
GRANT { object_priv [(column_list)]
  [, object_priv [(column_list)] ]...
  |ALL [PRIVILEGES]}
  ON [schema.]object
  TO {user|role|PUBLIC}
  [, {user|role|PUBLIC} ]...
  [WITH GRANT OPTION]

REVOKE { object_priv
  [, object_priv ]...
  |ALL [PRIVILEGES] }
  ON [schema.]object
  FROM {user|role|PUBLIC}
  [, {user|role|PUBLIC} ]...
  [CASCADE CONSTRAINTS]

用户管理的相关数据字典:
dba_ts_quotas
DBA_USERS


用户权限的相关数据字典视图:
v$pwfile_users;
DBA_SYS_PRIVS
SESSION_PRIVS
DBA_TAB_PRIVS
DBA_COL_PRIVS

 

ORAPWD用来管理密码文件。


数据库审计

数据库审计可以用来监控数据库、用户、会话、对象、语句的活动。

相关SQL语句:

AUDIT user;
AUDIT select any table BY summit BY ACCESS;
AUDIT LOCK ON summit.employee BY ACCESS WHENEVER SUCCESSFUL;

AUDIT {statement|system_priv}
[, {statement|system_priv} ]...
[BY user [, user ]... ]
[BY {SESSION|ACCESS} ] --按每会话或者每个语句来记录一个审计记录
[WHENEVER [NOT] SUCCESSFUL]

AUDIT statement [, statement ]...
ON {[schema.]object|DEFAULT}
[BY {SESSION|ACCESS}]
[WHENEVER [NOT] SUCCESSFUL]

原创粉丝点击