控制用户访问
在多用户环境中,你想要控制数据库访问和使用的安全,可以用下面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可以创建表和视图。
如果用户被授予多个角色,他们收到所有角色的联合权限。
改变你的口令
:: DBA 创建用户帐号并且初始化其口令
:: 用ALTER USER语句用户可以改变他的口令
alter user scott
identified by lion;
User altered.
改变你的口令
DBA创建一个帐号并为每个用户初始化一个口令,你可以用ALTER USER语句改变你的口令。
语法
ALTER USER user IDENTIFIED BY password;
在语法中:
user 是用户的名字
password 指定新的口令
尽管该语句可以用于改变你的口令,还有许多其它的选择,为了改变任何其它的选项你必须有ALTER USER权限。
对象权限
object privilege Table View Sequence Procedure
ALTER √ √
DELETE √ √
EXECUTE √
INDEX √
INSERT √ √
REFERENCES √ √
SELECT √ √ √
UPDATE √ √
对象权限
对象权限 是在指定的表、视图、序列或过程上执行指定动作的权限或权利。每个对象都有一个特殊的可授予的权限集。幻灯片上的表列出了各种对象的权限注意,可用于序列的权限只有SELECT和ALTER。UPDATE、REFERENCES和INSERT权限可以通过指定一个可更新列的子集被限制,SELECT的权限可以通过创建带一个列子集的视图并且只授予SELECT权限来限制。一个在同义词上被授予的权限将转换为由同义词引用的基表上的权限。
对象权限
:: 不同的对象有不同的对象权限
:: 对象的所有者有关于该对象的所有权限
:: 对象的所有者能够给予指定的权限到独立的对象上
GRANT object_priv [(columns)]
ON object
TO {user|role|PUBLIC}
[WITH GRANT OPTION];
授予对象权限
不同的对象权限对于不同类型的方案对象的是有用的,一个用户自动拥有包含在该用户的方案中的所有对象权限,一个用户可以授予该用户所拥有的任何方案对象上任何对象权限给另一个用户或角色。如果授权包括WITH GRANT OPTION选项,那么,得到权限的用户可以再将权限授予其他的用户;否则,受让人可以使用权限,但不能授予它给其他用户。
在语法中:
object_priv 是将被授予的对象权限
ALL 指定所有对象权限
columns 从一个表或视图中指定被授予权限的列
ON object 是权限被授予的对象
TO 指定权限被授予谁
PUBLIC 授予权限给所有用户
WITH GRANT OPTION 允许被授予权限的人再授予对象权限给其他用户和角色
授予对象权限
:: 从EMPLOYEES表上授予查询权限到sue,rich.
GRANT select ON employees
TO sue, rich;
Grant succeeded.
:: 授予权限到以更新指定的列到用户和角色
GRANT update (department_name, location_id) ON departments
TO scott, manager;
Grant succeeded.
原则
:: 为了授予权限到一个对象上,对象必须在你自己拥有的方案中,或者你必须被用WITH GRANT OPTION选项授予了对象权限。
:: 一个对象所有者可以授予任何该对象上的对象权限给任何其他的用户或者数据库的角色。
:: 任何对象的所有者自动地获得该对象所有对象权限。
以上第一个例子授予用户Sue和Rich查询当前用户EMPLOYEES 表的权限。第二个例子授予在DEPARTMENTS表中指定列上的UPDATE权限给Scott和经理角色。
如果Sue或Rich现在想要从雇员表中SELECT数据,他们必须用的语法是:
SELECT *
FROM scott.employees;
作为选择。可以为该表创建一个同义词并且从同义词中选择:
CREATE SYNONYM emp FOR scott.employees;
SELECT * FROM emp;
注:DBAs 通常分配系统权限;任何拥有对象的用户都可以授予对象权限。
SQL>show user
'hr'
SQL>GRANT select ON employees to sh;
SQL>connect sh/sh
SQL>show user
'sh'
SQL>select * from sh.employees;
SQL>create synonym emp for hr.employees;
SQL>select * from emp;
使用WITH GRANT OPTION和PUBLIC关键字
:: 给一个用户授权以级联权限授予
GRANT select, insert
ON departments
TO scott
WITH GRANT OPTION;
Grant succeeded.
:: 允许所有在系统上的用户从Alice 的DEPARTMENTS 表中查询数据
GRANT select
ON alice.departments
TO PUBLIC;
Grant succeeded.
WITH GRANT OPTION关键字
带WITH GRANT OPTION子句被授予的权限可以被受让人传递到其他的用户和角色。当授予者的权限被撤消时,用WITH GRANT OPTION子句授予的对象权限也被撤消。
以上例子给予用户Scott访问你的DEPARTMENTS表的权限,包括查询表和添加表中行,该例子允许Scott再给予其他用户这些权限。
PUBLIC关键字
表的所有者可以用PUBLIC关键字给所有用户授权。
第二个例子允许所有用户从Alice的DEPARTMENTS表中查询数据。
教师注释
如果一个语句不用对象的全名,Oracle服务器隐式地用当前的用户名 (或方案) 作为对象名的前缀。例如,如果用户Scott查询DEPARTMENTS表,系统将从 SCOTT.DEPARTMENTS表中做选择。
如果一个语句不用对象的全名,并且当前用户不拥有该名字的对象,系统将用PUBLIC.作为对象名的前缀。例如,如果用户Scott查询USER_OBJECTS表,但Scott不拥有该表,系统将用PUBLIC.USER_OBJECTS公共同义词的方法从数据字典视图中进行选择。
确认已授予的权限
数据字典视图 说明
ROLE_SYS_PRIVS 授予角色的系统权限
ROLE_TAB_PRIVS 授予角色的表权限
USER_ROLE_PRIVS 可由用户访问的角色
USER_TAB_PRIVS_MADE 授予用户的对象上的对象权限
USER_TAB_PRIVS_RECD 授予用户的对象权限
USER_COL_PRIVS_MADE 授予用户对象的列上的对象权限
USER_COL_PRIVS_RECD 授予用户在指定列上的对象权限
USER_SYS_PRIVS 授予用户的系统权限
确认已授予的权限
如果你试图执行一个未授权的操作,例如从你没有删除权限的表中删除行,Oracle服务器将不允许该操作发生。
如果你收到Oracle服务器错误信息 “table or view does not exist,”说明发生了下面的错误:
:: 指定的表或视图不存在
:: 试图在一个你没有适当权限的表或视图上执行一个操作。
你可以通过访问数据字典来查看你所有的权限。上面的表中描述了各种数据字典视图。
撤消对象权限
:: 用REVOKE语句撤消授予其他用户的权限
:: 通过WITH GRANT OPTION子句授予其他用户的权限也被撤消
REVOKE {privilege [, privilege...]|ALL}
ON object
FROM {user[, user...]|role|PUBLIC}[CASCADE CONSTRAINTS];
撤消对象权限
你可以用REVOKE语句撤消授予其他用户的对象权限。当你用REVOKE语句时,你指定要从用户那里撤消的权限,并且通过WITH GRANT OPTION子句被级联授权的那些用户的权限也将被撤消。
在语法中:
CASCADE CONSTRAINTS 用于删除任何与该对象相关的约束和对象,例如索引、触发器、权限、完整性约束等。
撤消对象权限
用户Alice 撤消了在DEPARTMENTS表上给予用户Scott 的SELECT和INSERT权限
REVOKE select, insert
ON departments
FROM scott;
Revoke succeeded.
撤消对象权限 (续)
以上例子撤消给予用户Scott在DEPARTMENTS表上的SELECT和INSERT权限。
注:如果一个用户被用WITH GRANT OPTION子句授予权限,那么,该用户用WITH GRANT OPTION子句授予权限给其他用户,所以可能产生一个很长的受让人的链,但该链不允许循环。如果所有者从撤消了一个用户的权限,那么,所有授予的联地被撤消。
(级联删除)
例如,如果用户A用WITH GRANT OPTION子句授予表上的SELECT权限给用户B,用户B也可以再用WITH GRANT OPTION子句授予用户C SELECT权限,然后用户C还可以授予用户D SELECT权限,如果用户A撤消了用户B的权限,那么,被授予用户C和D的权限也被撤消。
数据库链接
数据库链接连接允许用户访问在远程数据库上的数据
本地 远程
DBA select * from emp@HQ_ACME.com; HQ_ACME.com(DB中的emp表)
-------------------> ------------------------>
数据链接
一个数据库链接是一个指针,该指针定义一条从Oracle数据库服务器到另一个数据库服务器的通信路径。链接指针实际上在一个数据字典表中被定义为一个条目,为了访问该链接,你必须被连接到包含数据字典条目的本地数据库。
一个数据库链接是一条有感知的路径,一个客户可以通过该路径连接到本地数据库 A,再用存储在数据库A中的链接访问数据库B中的信息,但连接到数据库B的用户不能使用同一个链接来访问数据库A中的数据,他们必须定义一个链接,并存储在数据库B的数据字典中。
一个数据库链接的连接提供本地用户访问远程数据库上数据的能力,为了产生这种连接,在分布式计算机系统中的每个数据库必须有一个唯一的全局数据库名,全局数据库名唯一地标识一个在分布式系统中的数据库服务器。
数据库链接最大的好处是,允许用户访问在远程数据库中的另一个用户的对象,但是他们被该对象所拥有的权限集合所限制,换句话说,一个本地用户可以访问远程数据库而不需要是远程数据库上的用户。
上面的例子显示了一个用户SCOTT用全局名HQ.ACME.COM访问在远程数据库上的EMP。
注:典型地,DBA负责创建数据库链接。字典视图USER_DB_LINKS包含有关用户可以访问的链接信息。
分享到:
相关推荐
以下是对Oracle权限和角色的详细解释。 首先,我们要理解什么是角色。角色是一组权限的集合,它可以被赋予一个或多个用户,使得用户获得角色中定义的所有权限。这样,当有一组用户需要相同的权限时,只需一次性地...
Oracle权限和角色是数据库管理中的核心概念,它们用于控制用户对数据库对象的访问和操作。在Oracle数据库系统中,权限允许用户执行特定的操作,而角色则是一组预定义的权限集合,可以方便地分配给多个用户。 1. ...
Oracle数据库系统在权限管理方面提供了精细的控制机制,旨在确保数据的安全性和访问的合理性。预定义的角色是这一机制的关键组成部分,其中包括CONNECT、RESOURCE、DBA、EXP_FULL_DATABASE和IMP_FULL_DATABASE这五个...
22. 角色的依赖分析(Role Dependency Analysis):使用DBA_ROLE_PRIVS和DBA_TAB_PRIVS视图可以帮助分析角色和权限之间的关系,以优化权限管理。 以上就是Oracle管理权限和角色的关键知识点,这些概念和操作是...
oracle 用户、权限和角色管理,oracle 人员必看。
Oracle用户权限角色设置,用来在新建的数据库中添加新的用户,并为其设置权限。
在Oracle数据库的管理中,用户、权限和角色的管理是确保数据安全和高效使用的关键环节。本文将详细阐述Oracle中的用户管理、权限设置,以及角色管理的重要概念和操作流程。 #### 一、Oracle数据库用户管理 Oracle...
Oracle 权限设置 一、权限分类: 系统权限:系统规定用户使用数据库的权限。(系统权限是对用户而言)。 实体权限:某种权限用户对其它用户的表或视图的存取权限。(是针对表或视图而言的)。 二、系统权限管理: 1、...
权限传递是 Oracle 权限大全的高级内容,包括授予权限同时授予管理员权限和授予权限同时授予授予权限。 with admin option 和 with grant option 是权限传递的关键字。 角色是 Oracle 权限大全的集合概念,包括创建...
本文将深入探讨MySQL和Oracle在数据库角色和权限管理上的不同之处,并提供实际的代码示例。 MySQL和Oracle在数据库角色和权限管理上各有特点。Oracle提供了更为复杂和灵活的权限管理机制,适合需要精细控制的场景。...
在Oracle数据库中,为了方便用户管理和使用权限,系统预定义了一系列的角色,这些角色包含了特定的权限组合,可以帮助管理员快速地为不同的用户分配合适的访问权限。本文将详细介绍Oracle系统中自带的一些关键角色...
通过理解和熟练掌握这些Oracle权限机制,数据库管理员可以更有效地管理和保护数据库,确保只有授权的用户和程序才能访问敏感信息。在日常运维中,合理分配权限不仅能保障数据安全,还能提升团队协作效率。对于开发者...
在Oracle数据库管理系统中,角色(Role)是一种权限的集合,它允许管理员批量分配权限,以简化权限管理。...通过对体系结构角色和用户定义角色的有效管理,可以实现更高效、更安全的Oracle数据库环境。
oracle数据库的dba权限,里面的权限解释。
在Oracle数据库中,系统角色是预定义的一组权限集合,它们为数据库管理员(DBA)提供了方便的方式来管理和分配权限。DBA角色是最具权限的角色之一,通常赋予那些负责数据库全面管理的用户。当误删除了这个关键角色时...
### Oracle权限管理详解 在Oracle数据库管理中,...通过以上介绍,我们可以看到Oracle权限管理的灵活性和强大性。正确地管理和使用权限不仅可以提高数据库的安全性,还可以优化数据库性能,确保数据的完整性和一致性。
### Oracle权限函数详解 在Oracle数据库管理中,权限管理是一项重要的任务,它涉及到对用户、角色及对象等数据库实体的访问控制。通过合理地分配权限,可以有效地保护数据的安全性和完整性,同时确保业务流程的正常...
Oracle权限分为两种基本类型:系统权限和对象权限。系统权限涉及到对数据库整体操作的访问,如创建表、执行DML(数据操纵语言)语句、备份数据库等。对象权限则针对特定数据库对象,如查看、修改、删除某张表的数据...
Oracle角色(Role)就是一组权限(privilege)(或者是每个用户根据其状态和条件所需的访问类型)。用户可以给角色授予或赋予指定的权限,然后将角色赋给相应的用户。 创建用户 ------ 创建用户可以使用create ...