Oracle数据库安全性 - 仅插入特定值

时间:2015-10-13 18:49:13

标签: oracle security oracle11g insert roles

我开始探索Oracle数据库安全(11G)的一些功能,并且我创建了一个虚构的小型银行数据库。其中一个表是" TRANSACTIONS"列如:

  • TRANS_ID
  • DATE
  • 说明
  • TYPE 等。

我将创建客户和银行柜员等用户,但我想限制他们可以做的事情。我的问题是:我是否可以允许用户将数据插入TRANSACTIONS表,但仅限于特定类型或具有特定描述?

例如,我希望我的银行柜员用户能够插入" FEE REVERSAL"和仅提款或存款。这是否像创建角色一样简单:

CREATE ROLE TELLER_ROLE IDENTIFIED BY TELLER;
GRANT UPDATE ON TRANSACTIONS TO TELLER_ROLE
WHERE TRANSACTION.TRANSACTION_TYPE = 'FEE REVERSAL';

或者我应该以不同的方式解决这个问题?

1 个答案:

答案 0 :(得分:0)

将ROLES分配给用户对于限制他们在数据库中可以执行的操作非常重要,但我觉得您正在寻找更多要强制执行的数据约束。根据您用于前端的内容,您可以限制其选项,甚至利用存储过程仅传递某些值,但要在数据库级别强制执行数据完整性,您将需要使用CONSTRAINTS。以下示例;

ALTER TABLE transactions
ADD CONSTRAINT check_teller_transaction
  CHECK (record_action IN ('FEE REVERSAL', 'WITHDRAWAL', 'DEPOSIT'));