Oracle用户修改审计策略报ORA-01031权限不足问题咨询
Oracle跨用户修改审计策略权限缺失解决方案
问题复现场景
- 用户user_a创建名为
select_action_on_tables的审计策略,创建语句如下:
create audit policy select_action_on_tables actions select on user_a.test_table1;
- 管理员已为user_b授予
audit_admin角色,授权语句如下:
grant audit_admin to user_b;
- user_b执行如下语句修改该审计策略时,系统抛出
ORA-01031: insufficient privileges错误,操作失败:
alter audit policy select_action_on_tables add actions select on user_a.test_table2;
权限缺失原因
audit_admin角色的默认权限仅支持用户修改、删除自身创建的审计策略,且仅能为自身schema下的对象配置审计规则。本场景中user_b要修改其他用户(user_a)创建的审计策略,还要为其他schema下的表新增审计规则,两类操作都超出了audit_admin的默认权限范围。
需要补充的必要权限
使用SYS或拥有GRANT ANY PRIVILEGE权限的管理员账号,给user_b授予以下两类权限即可:
- 跨用户修改审计策略的系统权限:
ALTER ANY AUDIT POLICY,该权限允许用户修改数据库内所有用户创建的统一审计策略,授权语句:grant alter any audit policy to user_b; - 跨schema对象审计配置权限,二选一即可:
- 如果需要让user_b后续可以给任意schema的对象配置审计规则,授予
AUDIT ANY系统权限:grant audit any to user_b; - 如果仅需要让user_b完成本次针对
test_table2的策略修改,仅授予该表对应的对象审计权限即可,权限范围更小更安全:grant audit on user_a.test_table2 to user_b;
- 如果需要让user_b后续可以给任意schema的对象配置审计规则,授予
授权完成后user_b即可正常执行审计策略修改语句,无需重启会话。
补充说明:如果后续需要user_b能删除user_a创建的该审计策略,还需要额外授予
DROP ANY AUDIT POLICY系统权限,本次修改操作不需要该权限。
内容的提问来源于stack exchange,提问作者Mich
相关产品推荐
相关产品推荐

