A 사이트의 기술 의뢰 …
개발자들이 DB에 들어와 조회를 하는 데 조회 전용 유저에 SELECT 만 허용하고 SELECT FOR UPDATE 를 막을 수 있는 방법이 없나요?
1 |
SELECT … FROM<table_name> FOR UPDATE ; |
사실 Oracle 12c 부터는 READ 라는 권한이 생겨서 조회 만 가능한 Synonym 유저에 그냥 주면 됩니다.
12c 이후 부터는 운영과 보안을 위해 테이블 또는 뷰에 대한 쿼리 권한 만 필요한 사용자에게
SELECT 또는 SELECT ANY TABLE 대신 READ 또는 READ ANY TABLE 권한을 부여하기 시작할 수 있습니다.
Examples :
1 2 3 4 5 |
SQL> GRANT READ ON XX.XXLE_CUSTOMERS_T TO smith; SQL> GRANT READ ON XX.XXLE_SUPPLIERS_VW TO smith; SQL> GRANT READ ANY TABLE TO peter; SQL> REVOKE READ ON XX.XXLE_SUPPLIERS_VW FROM smith; SQL> REVOKE READ ANY TABLE FROM peter; |
Oracle 12c 이하에서는 어떻게 해야 할까???
아쉽게 문의 주었던 사이트는 Oracle 10g 버전을 사용하고 계셧습니다.
다음과 같이 뷰를 만들면 SELECT를 하면 됩니다.
1 |
SQL> create or replace view v as select * from t union all select * from t where 1=0 with read only; |
이렇게 VIEW를 해당 조회 전용 유저에 만들어 주면 SELECT 만 되고 SELECT FOR UPDATE 는 막히게 됩니다.
1 2 3 4 5 |
SQL> select * from system.v for update; select * from system.v for update * ERROR at line 1: ORA-02014: cannot select FOR UPDATE from view with DISTINCT, GROUP BY, etc. |
When I originally commented I clicked the -Notify me when new comments are added- checkbox and now each time a comment is added I get four emails with the same comment. Is there any way you can remove me from that service? Thanks!