Oracle之FGA 策略(细粒度审计)的研究
【IT168 技术文档】
增加 FGA 策略
审计表
GRANT RESOURCE,CONNECT TO BANK IDENTIFIED BY BANK;
![]()
CREATE TABLE BANK.ACCOUNTS
(
ACCT_NO NUMBER PRIMARY KEY,
CUST_ID NUMBER NOT NULL ,
BALANCE NUMBER(15,2) NULL
);
insert into bank.accounts values(1,1,10000);
insert into bank.accounts values(2,2,20000);
commit;
![]()
Begin
dbms_fga.drop_policy (
object_schema=>;'BANK',
object_name=>;'ACCOUNTS',
policy_name=>;'ACCOUNTS_ACCESS');
dbms_fga.add_policy (
object_schema=>;'BANK',
object_name=>;'ACCOUNTS',
policy_name=>;'ACCOUNTS_ACCESS');
end;
/
![]()
select * from bank.accounts;
select timestamp, db_user,os_user,object_schema,object_name,sql_text from dba_fga_audit_trail;
![]()
审计列和审计条件, 在add_policy中加入
audit_column =>; 'BALANCE'
audit_condition =>; 'BALANCE >;= 11000'
Begin
dbms_fga.drop_policy (
object_schema=>;'BANK',
object_name=>;'ACCOUNTS',
policy_name=>;'ACCOUNTS_ACCESS');
![]()
dbms_fga.add_policy (
object_schema=>;'BANK',
object_name=>;'ACCOUNTS',
audit_column =>; 'BALANCE',
audit_condition =>; 'BALANCE >;= 11000',
policy_name=>;'ACCOUNTS_ACCESS');
end;
/
![]()
这个不可用,Why?
select BALANCE from bank.accounts;
select timestamp, db_user,os_user,object_schema,object_name,sql_text from dba_fga_audit_trail;
管理 FGA 策略
要删除策略,您可以使用以下语句:
begin
dbms_fga.drop_policy (
object_schema =>; 'BANK',
object_name =>; 'ACCOUNTS',
policy_name =>; 'ACCOUNTS_ACCESS'
);
end;
/
对于更改策略而言,没有随取随用的解决方案。要更改策略中的任何参数,必须删除策略,再使用更改后的参数添加策略。
需要临时禁用审计收集 — 例如,如果您希望将线索表移动到不同的表空间或者要删除线索表。您可以按如下方法禁用 FGA 策略:
begin
dbms_fga.enable_policy (
object_schema =>; 'BANK',
object_name =>; 'ACCOUNTS',
policy_name =>; 'ACCOUNTS_ACCESS',
enable =>; FALSE
);
end;
/
0
相关文章
