by 김준수 [Oracle Admin] oracle view role [2022.09.08 10:59:17]
안녕하세요, 궁금한게 있어서 질문드려요!
role을 통한 dba 권한이 있는 admin 계정에서 다른 스키마(user)의 테이블(test_table)을 참조해 create view를 하는경우
ex)
create view test_view as
select * from user.test_table;
하단의 select 구문은 수행되지만
create view는 권한이 불충분하다고 실패합니다.
하지만 admin계정은 role을 통해 dba권한을 가지고 있구요
dba권한은 create any view를 포함합니다.
일단 해결방법은
1)
create view user.test_view as
select * from user.test_table;
유저의 스키마에 뷰를 생성하는건 가능합니다.
2)
grant select on user.test_table to admin;
으로 테이블 직접권한을 주면
create view test_view as
select * from user.test_table;
가 수행됩니다.
정말 궁금한건
grant select on user.test_table to dba;
와 같이 dba role 에게 테이블직접 권한을 주고 dba_tab_privs 에 등록되는걸 확인했는데도
create view는 안되더라구요
저장프로시저도 마찬가지로 비슷한 현상이 있는걸로 알고있는데요
보안을 위해서 롤을통한 접근권한은 제한하는걸로 알고있는데
view도 마찬가지로 이해해야하나요?
dba입문 2주차입니다. 많이 도와주세요!
고수님들의 답변 기다리겠습니다!
아래 문서 내용을 보면 role에 의해서 select나 create view 권한이 적용된경우 다른사용자의 테이블에 대한 view 생성에 제한이 있는 것 같습니다.
https://docs.oracle.com/cd/B19306_01/network.102/b14266/authoriz.htm#i1007401