我开始探索Oracle数据库安全(11G)的一些功能,并且我创建了一个虚构的小型银行数据库。其中一个表是" TRANSACTIONS"列如:
我将创建客户和银行柜员等用户,但我想限制他们可以做的事情。我的问题是:我是否可以允许用户将数据插入TRANSACTIONS表,但仅限于特定类型或具有特定描述?
例如,我希望我的银行柜员用户能够插入" FEE REVERSAL"和仅提款或存款。这是否像创建角色一样简单:
CREATE ROLE TELLER_ROLE IDENTIFIED BY TELLER;
GRANT UPDATE ON TRANSACTIONS TO TELLER_ROLE
WHERE TRANSACTION.TRANSACTION_TYPE = 'FEE REVERSAL';
或者我应该以不同的方式解决这个问题?
答案 0 :(得分:0)
将ROLES分配给用户对于限制他们在数据库中可以执行的操作非常重要,但我觉得您正在寻找更多要强制执行的数据约束。根据您用于前端的内容,您可以限制其选项,甚至利用存储过程仅传递某些值,但要在数据库级别强制执行数据完整性,您将需要使用CONSTRAINTS。以下示例;
ALTER TABLE transactions
ADD CONSTRAINT check_teller_transaction
CHECK (record_action IN ('FEE REVERSAL', 'WITHDRAWAL', 'DEPOSIT'));