对操作Oracle数据库的用户进行安全权限控制

WBOY
풀어 주다: 2016-06-07 17:05:57
원래의
966명이 탐색했습니다.

一、采用数据库级别触发器控制非sys、system的alter\drop\truncate权限 --控制alter操作 CREATE OR REPLACE TRIGGER SYS.TRIGGE

一、采用数据库级别触发器控制非sys、system的alter\drop\truncate权限

--控制alter操作

CREATE OR REPLACE TRIGGER SYS.TRIGGER_ALTER
BEFORE ALTER
ON DATABASE
begin
if ora_login_user not in ('SYS','SYSTEM') THEN
Raise_application_error (-20001,'Please not do ALTER!');
end if;
end;
/

--控制drop操作

CREATE OR REPLACE TRIGGER SYS.TRIGGER_DROP
BEFORE DROP
ON DATABASE
begin
if ora_login_user not in ('SYS','SYSTEM') THEN
Raise_application_error (-20001,'Please not do DROP!');
end if;
end;
/

--控制truncate操作
CREATE OR REPLACE TRIGGER SYS.TRIGGER_truncate
BEFORE truncate
ON DATABASE
begin
if ora_login_user not in ('SYS','SYSTEM') THEN
Raise_application_error (-20001,'Please not do TRUNCATE!');
end if;
end;
/

经过测试,一般用户进入数据库后无法进行alter、drop、truncate的操作

限制了对数据的破坏性操作,若进行上述操作,系统会产生

ORA-00604: error occurred at recursive SQL level 1
ORA-20001: Please do not DROP!

之类错误

PS:未限制create操作,因为1、create操作不会对生产数据产生破坏性影响;

2、若限制create操作,,可能会导致create index的操作失败

======================================================

二、调整tssa用户权限

REVOKE "DBA" FROM "TSSA";
GRANT "CONNECT" TO "TSSA";

将dba权限从tssa用户移除,并重新对其赋予connect权限

经过业务测试,未发现引起业务异常

=======================================================

三、创建只读用户bzwh


CREATE USER "BZWH" PROFILE "DEFAULT"
    IDENTIFIED BY "bzwh" DEFAULT TABLESPACE "USERS"
    ACCOUNT UNLOCK;
GRANT CREATE SESSION TO "BZWH"
GRANT SELECT ANY DICTIONARY TO "BZWH"
GRANT SELECT ANY SEQUENCE TO "BZWH"
GRANT SELECT ANY TABLE TO "BZWH"

linux

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿