2

我正在尝试分析 DBMS 提供的安全性,以下场景简要描述了我正在寻找的内容。

// 当前连接数据库的用户是“master”

// 1. 创建新用户的基本步骤

CREATE USER slave
IDENTIFIED BY SlavePassword
DEFAULT TABLESPACE SomeTablespace;

// 2. 为新用户授予基本角色

GRANT CONNECT TO slave;
GRANT RESOURCE TO slave;

// 3. 新用户“slave”现在已连接到数据库

// 用户“slave”创建数据库对象(表、过程等),并授予系统其他用户的权限

如何让创建者“主人”在没有得到“奴隶”用户明确许可的情况下获得所创建的用户“奴隶”拥有或将来将拥有的任何特权?

我知道奴隶可以将他的任何特权授予其他用户,但是是否有特殊特权允许其他用户获得“奴隶”将来拥有的特权?

我正在使用 Oracle,但我不确定其他 DBMS 是否允许这种情况。

4

4 回答 4

3

使用 Database Vault 执行此操作的唯一方法。如果您为“从属”用户创建一个领域并将“主”用户添加到该领域,那么主用户将拥有该架构中所有对象的权限。本教程来自 OTN

http://apex.oracle.com/pls/apex/f?p=44785:24:0::NO:24:P24_CONTENT_ID,P24_PREV_PAGE:4544,29

引导您创建领域。您只需完成将“master”添加为领域参与者的附加步骤

于 2013-01-06T14:48:37.987 回答
1

您可以使用代理用户来执行此操作。

这将让 MASTER 看到 SLAVE 的对象。但是,当 MASTER 作为 SLAVE 连接时,它不再能看到 MASTER 对象。

--Create master user
create user master identified by master;
grant connect, create table to master;

--Create slave user, and grant proxy to master
create user slave identified by slave;
grant connect, create table to slave;
alter user slave grant connect through master;

--Connect as master, create a table
sqlplus master/master@orcl2
create table master_table(a number);
exit;

--Connect as slave, create a table
sqlplus slave/slave@orcl2
create table slave_table(a number);
exit;

--Connect as master, but pretending to be slave
sqlplus master[slave]/master@orcl2

--You can see the slave tables 
select * from slave_table;
    no rows selected

--But you cannot see the master tables
select * from master.master_table;
    ERROR at line 1:
    ORA-00942: table or view does not exist              *
于 2013-01-06T18:22:50.970 回答
1

Oracle 帐户模型无法按照您描述的方式工作。创建用户的用户对该用户创建的对象没有特殊权限。所有用户都出生在手动状态

对象权限只有两个级别:

  • 授予个别模式中特定对象的权限
  • 授予每个模式中给定类型的所有对象的特权,通过 ANY 特权获得。

第一级是您提到的机制,SLAVE 将其对象的权限授予 MASTER。第二级非常强大,因为它适用于所有用户拥有的所有对象,包括 Oracle DBMS 帐户,例如 SYS。因此,只有 DBA 用户拥有 ANY 级别的权限是正常的。

出现这种情况的原因是 Oracle 使用用户和模式作为控制对数据和功能的访问的机制。在这种情况下,完全由另一个用户拥有的用户没有任何意义。

于 2013-01-06T00:47:23.933 回答
0

我不确定您在这里的要求...如果您希望“主”用户自动访问“从”对象,那么您可以通过授予 dba 主

grant dba to master;

如果您打算做其他事情,请用更多细节来澄清您的问题,以帮助您。

于 2013-01-05T21:31:18.677 回答