日期:2014-05-16  浏览次数:20539 次

ORACLE 权限和角色
控制用户访问
   在多用户环境中,你想要控制数据库访问和使用的安全,可以用下面Oracle服务器提供的数据库安全措施:
:: 控制数据库访问
:: 在数据库中只允许访问指定的对象
:: 用Oracle数据字典确认给予的和收回的权限
:: 创建数据库对象的同义词

   数据库安全可以被划分为两个范畴:系统安全和数据安全。系统安全在系统级别访问和使用数据库,例如,用户名和口令,分配给用户的磁盘空间和用户能够执行的系统操作;数据库安全包括访问和使用数据库对象和用户能够对数据库对象进行的操作。


权限
:: 数据库安全:
–系统安全
–数据安全
:: 系统权限:授权访问数据库
:: 对象权限:操纵数据对象的内容
:: 方案:对象的集合,例如表、视图和序列

权限:
    权限是执行特殊SQL语句的权利。数据库管理员 (DBA) 是一个具有授予用户访问数据库及其对象的能力的高级用户。用户需要系统权限来访问数据库,需要对象权限来操纵数据库中对象的内容。用户也可以将被授予的权限给其它用户或者角色,角色是相关权限的命名分组。

方案:
   方案是对象的集合,例如,视图和序列的集合。方案被数据库用户所拥有,并且与用户有相同的名字。



系统权限

:: 有100 多个可用权限
:: 数据管理员有执行任务的高级系统权限,例如:
–创建新用户
–删除用户
–删除表
–备份表


典型的DBA权限:

系统权限 授权的操作
CREATE USER 受让人可以创建其他 Oracle 用户 (需要有 DBA 角色权限)。
DROP USER 受让人可以删除另一个用户。
DROP ANY TABLE 受让人可以删除在任意方案中的表。
BACKUP ANY TABLE 受让人用导出实用程序可以备份在任何方案中的任何表。
SELECT ANY TABLE 受让人可以查询在任何方案中的表、视图或快照。./././././
CREATE ANY TABLE 受让人可以在任何方案中创建表



Creating Users

DBA用CREATE USER语句创建用户

CREATE USER user
IDENTIFIED BY password;

CREATE USER scott
IDENTIFIED BY tiger;
User created.

创建用户
     DBA通过执行CREATE USER语句来创建用户,在这时用户没有任何权限。DBA可以给用户授予权限,这些权限决定用户能够在数据库级别做什么。

  以上给出了用有删节的语法创建用户的例子。

在语法中:
user 是被创建的用户的名字
password 指定用户必须用该口令登录


使用系统权限


:: 一旦一个用户被创建,DBA 能够授予指定的系统权限给一个用户

GRANT privilege[, privilege...]
TO user [, user| role, PUBLIC...];

//不是语句的全语法.

:: 应用程序的开发者,例如,可能有下面的系统权限:
–CREATE SESSION
–CREATE TABLE
–CREATE SEQUENCE
–CREATE VIEW
–CREATE PROCEDURE

典型的用户权限
   现在已经创建了一个用户,DBA可以指定权限给该用户。
系统权限 授权的操作
CREATE SESSION 连接到数据库
CREATE TABLE 在用户的方案中创建表
CREATE SEQUENCE 在用户的方案中创建序列
CREATE VIEW 在用户的方案中创建视图
CREATE PROCEDURE 在用户的方案中创建存储过程、函数或包

在语法中:
  privilege 要被授予的系统权限
user|role|PUBLIC 是用户的名字,角色的名字或PUBLIC,PUBLIC
指定每一个用户被授予权限

注:当前会话的系统权限可以在字典视图SESSION_PRIVS中找到。

SQL> select * from session_privs;

PRIVILEGE
---------------------------
CREATE SESSION
ALTER SESSION
UNLIMITED TABLESPACE
CREATE TABLE
CREATE CLUSTER
CREATE SYNONYM
CREATE VIEW
CREATE SEQUENCE
CREATE DATABASE LINK
CREATE PROCEDURE
CREATE TRIGGER

PRIVILEGE
----------------------------
CREATE TYPE
CREATE OPERATOR
CREATE INDEXTYPE

已选择14行。




授予系统权限

DBA能够授予用户指定的系统权限
GRANT create session, create table, create sequence, create view
TO scott;
Grant succeeded

授予系统权限
   DBA使用GRANT语句给用户分配系统权限,一旦用户被授予权限,用户就可以立即使用它们。

   以上用户Scott已经被指定了创建会话、表、序列和视图的权限。

   用户要有足够的空间来创建表.



角色

什么是角色?
   角色是命名的可以授予用户的相关权限的组,该方法使得授予、撤回和维护权限容易的多。
一个用户可以使用几个角色,并且几个用户也可以被指定相同的角色。角色典型地为数据库应用程序创建。

创建和分配角色
   首先,DBA必须创建角色,然后,DBA可以分配角色给角色和用户。

语法
CREATE ROLE role;

在语法中:
   role 要被创建的角色的名字

  现在角色已被创建,DBA可以用GRANT语句给用户指定角色,也可以指定权限给角色。




创建角色并且授予权限给角色

:: 创建角色

create role manager;
Role created;

::授予权限给一个角色

grant create table ,create view
to manager;
Grant succeeded.

::授予一个角色给用户

grant manager to dehaan,SH;
Grant succeded;

创建角色
   上面的例子创建一个经理角色,然后允许经理创建表和视图,然后授予该DeHaan角色和SH用户,现在DeHaan和SH可以创建表和视图。

  如果用户被授予多个角色,他们收到所有角色的联合权限。



改变你的口令