반응형
결론 :
1. Oracle 에서 칼럼 단위로 권한 부여가 가능한것은 Insert , Update 에 대해서다
2. Delete 의 경우 Row의 구성 Column 전체에 대한 작업이니 칼럼 단위 권한 부여 자체가 불가능한것으로 생각된다.
3. select 의 경우 View 를 통한 대체가 가능하다.
SYS> create table myemp as select * from scott.emp ;
SYS> grant select on myemp to scott ;
SYS> grant update ( sal ) on myemp to scott ;
SYS> create public synonym myemp for myemp ;
SCOTT> select * from myemp ;
==> 조회 가능
SCOTT>delete myemp ;
delete myemp
*
ERROR at line 1:
ORA-01031: insufficient privileges
==> 삭제 불가능
SCOTT>insert into myemp ( empno, ename) values ( 9999, ’TG’);
insert into myemp ( empno, ename) values ( 9999, ’TG’)
*
ERROR at line 1:
ORA-01031: insufficient privileges
==> 입력 불가능
SCOTT>update myemp set ENAME=’TG’ where empno=7369 ;
update myemp set ENAME=’TG’ where empno=7369
*
ERROR at line 1:
ORA-01031: insufficient privileges
==> 권한 없는 칼럼 Update 불가능
SCOTT>update myemp set sal = sal*2 where EMPNO=7369;
1 row updated.
==> 권한 있는 칼럼 Update 가능
SYS>grant update (job) on myemp to scott ;
Grant succeeded.
==> 다른 칼럼에 대한 Update 권한 추가적으로 부여
-- 칼럼에 대한 선택적인 권한 부여가 가능하다.
[ 추가 테스트 ]
1. 선택적 Column 에 대한 Select 권한 부여
SYS>grant select ( empno, ename ) on emp to scott ;
grant select ( empno, ename ) on emp to scott
*
ERROR at line 1:
ORA-00969: missing ON keyword
SYS>grant select ( empno ) on emp to scott ;
grant select ( empno ) on emp to scott
*
ERROR at line 1:
ORA-00969: missing ON keyword
==> Select 권한에 대해서는 칼럼 단위로 권한을 부여 할수 없다.
2. 선택적 Column 에 대한 Insert 권한 부여
SYS>grant insert ( empno, ename ) on myemp to scott ;
Grant succeeded.
SCOTT>insert into myemp ( empno,ename) values (9999,’TG’);
1 row created.
==> 권한 있는 칼럼에 대한 Insert 가능
SCOTT>insert into myemp ( empno,ename,job) values (9998,’TG2’,’Clerk’);
insert into myemp ( empno,ename,job) values (9998,’TG2’,’Clerk’)
*
ERROR at line 1:
ORA-01031: insufficient privileges
==> 권한 없는 칼럼에 대한 Insert 불가능
3. 권한 체크
SYS>select GRANTEE, TABLE_NAME, PRIVILEGE from dba_Tab_privs where table_name =’MYEMP’;
no rows selected
SYS> select GRANTEE, TABLE_NAME, COLUMN_NAME, PRIVILEGE
from dba_col_privs where table_name =’MYEMP’
order by TABLE_NAME, PRIVILEGE,COLUMN_NAME, GRANTEE ;
GRANTEE TABLE_NAME COLUMN_NAME PRIVILEGE
------------ ------------- ------------ ----------
SCOTT MYEMP ENAME INSERT
SCOTT MYEMP EMPNO INSERT
SCOTT MYEMP SAL UPDATE
SCOTT MYEMP JOB UPDATE
출처 : http://www.oracleclub.com/article/24483
1. Oracle 에서 칼럼 단위로 권한 부여가 가능한것은 Insert , Update 에 대해서다
2. Delete 의 경우 Row의 구성 Column 전체에 대한 작업이니 칼럼 단위 권한 부여 자체가 불가능한것으로 생각된다.
3. select 의 경우 View 를 통한 대체가 가능하다.
SYS> create table myemp as select * from scott.emp ;
SYS> grant select on myemp to scott ;
SYS> grant update ( sal ) on myemp to scott ;
SYS> create public synonym myemp for myemp ;
SCOTT> select * from myemp ;
==> 조회 가능
SCOTT>delete myemp ;
delete myemp
*
ERROR at line 1:
ORA-01031: insufficient privileges
==> 삭제 불가능
SCOTT>insert into myemp ( empno, ename) values ( 9999, ’TG’);
insert into myemp ( empno, ename) values ( 9999, ’TG’)
*
ERROR at line 1:
ORA-01031: insufficient privileges
==> 입력 불가능
SCOTT>update myemp set ENAME=’TG’ where empno=7369 ;
update myemp set ENAME=’TG’ where empno=7369
*
ERROR at line 1:
ORA-01031: insufficient privileges
==> 권한 없는 칼럼 Update 불가능
SCOTT>update myemp set sal = sal*2 where EMPNO=7369;
1 row updated.
==> 권한 있는 칼럼 Update 가능
SYS>grant update (job) on myemp to scott ;
Grant succeeded.
==> 다른 칼럼에 대한 Update 권한 추가적으로 부여
-- 칼럼에 대한 선택적인 권한 부여가 가능하다.
[ 추가 테스트 ]
1. 선택적 Column 에 대한 Select 권한 부여
SYS>grant select ( empno, ename ) on emp to scott ;
grant select ( empno, ename ) on emp to scott
*
ERROR at line 1:
ORA-00969: missing ON keyword
SYS>grant select ( empno ) on emp to scott ;
grant select ( empno ) on emp to scott
*
ERROR at line 1:
ORA-00969: missing ON keyword
==> Select 권한에 대해서는 칼럼 단위로 권한을 부여 할수 없다.
2. 선택적 Column 에 대한 Insert 권한 부여
SYS>grant insert ( empno, ename ) on myemp to scott ;
Grant succeeded.
SCOTT>insert into myemp ( empno,ename) values (9999,’TG’);
1 row created.
==> 권한 있는 칼럼에 대한 Insert 가능
SCOTT>insert into myemp ( empno,ename,job) values (9998,’TG2’,’Clerk’);
insert into myemp ( empno,ename,job) values (9998,’TG2’,’Clerk’)
*
ERROR at line 1:
ORA-01031: insufficient privileges
==> 권한 없는 칼럼에 대한 Insert 불가능
3. 권한 체크
SYS>select GRANTEE, TABLE_NAME, PRIVILEGE from dba_Tab_privs where table_name =’MYEMP’;
no rows selected
SYS> select GRANTEE, TABLE_NAME, COLUMN_NAME, PRIVILEGE
from dba_col_privs where table_name =’MYEMP’
order by TABLE_NAME, PRIVILEGE,COLUMN_NAME, GRANTEE ;
GRANTEE TABLE_NAME COLUMN_NAME PRIVILEGE
------------ ------------- ------------ ----------
SCOTT MYEMP ENAME INSERT
SCOTT MYEMP EMPNO INSERT
SCOTT MYEMP SAL UPDATE
SCOTT MYEMP JOB UPDATE
출처 : http://www.oracleclub.com/article/24483
반응형
'ORACLE > ADMIN' 카테고리의 다른 글
[ DB Server의 dba group 아닌 다른 Unix 계정에 대해서 sqlplus 및 TNSNAMES.ORA 참조 환경 구성 ] (0) | 2009.04.10 |
---|---|
SID, DB_NAME,GLOBAL_NAME (0) | 2009.04.08 |
오라클 간단한 보안 시큐리티설정들.. (0) | 2009.04.02 |
ORACLE Data Pump (0) | 2009.04.02 |
as sysdba로 접속시 암호 물어보게 하는 방법 (0) | 2009.03.27 |