[Oracle] 오라클, Synonym 객체 권한 및 생성, 사용법 예제
- Database/Oracle
- 2019. 7. 9. 21:51
Synonym을 사용하는 이유
- 데이터베이스의 투명성을 제공하기 위해서 사용 한다고 보면 된다. 시노님은 다른 유저의 객체를 참조할 때 많이 사용을 한다.
- 만약에 실무에서 다른 유저의 객체를 참조할 경우가 있을 때 시노님을 생성해서 사용을 하면은 추후에 참조하고 있는 오프젝트가 이름을 바꾸거나 이동할 경우 객체를 사용하는 SQL문을 모두 다시 고치는 것이 아니라 시노님만 다시 정의하면 되기 때문에 매우 편리 하다.
- 객체의 긴 이름을 사용하기 편한 짧은 이름으로 해서 SQL코딩을 단순화 시킬 수 있다.
- 또한 객체를 참조하는 사용자의 오브젝트를 감추 수 있기 때문에 이에 대한 보안을 유지할 수 있다. 시노님을 사용하는 유저는 참조하고 있는 객체를에 대한 소유자, 이름, 서버이름을 모르고 시노님 이름만 알아도 사용 할 수 있다.
Synonym을 사용하는 경우
- 객체의 실제 이름과 소유자 그리고 위치를 감춤으로써 데이터베이스 보안을 개선하는데 사용 한다
- 객체의 Public Access를 제공 한다
- Remote 데이터베이스의 TABLE, VIEW, PROGRAM UNIT를 위해 투명성을 제공 한다.
- 데이터베이스 사용자를 위해 SQL 문을 단순화 할 수 있다.
Synonym 사용 레퍼토리
- 상황 : 관리자 계정으로 뷰를 생성하여 관리자 계정에 할당된 뷰를 새계정이 조회해야합니다.
1. 오라클 관리자 계정으로 로그인합니다. 그리고 계정을 생성합니다. ( guest/guest123 )
create user guest identified by guest123 ;
2. 생성한 guest 유저에 권한을 할당합니다.
GRANT CREATE SESSION TO guest;
GRANT CREATE SYNONYM TO guest;
3. 뷰를 생성합니다. 뷰는 생성했다고 치고 뷰네임을 GUEST_MUST_SELECT 라는 뷰로 생성했다 칩니다.
create or replace VIEW GUEST_MUST_SELECT...
4. 관리자 계정으로 새 계정에게 뷰 조회 권한을 줍니다.
GRANT SELECT ON GUEST_MUST_SELECT TO guest;
5. guest/guest123으로 (새계정) 로그인해서 뷰네임으로 접근하면 접근이 안됩니다. 관리자계정(관리자 계정이 system이라 치면) select * from system.GUEST_MUST_SELECT 으로 접근해야만 합니다. 따라서 시노님 객체를 만들어 system.GUEST_MUST_SELECT 를 GUEST_MUST_SELECT 로 호출하도록 합니다.
create synonym GUEST_MUST_SELECT for system.GUEST_MUST_SELECT;
Synonym 객체는 Alias 개념입니다. 새로 생성된 계정은 관리자 계정(혹은 뷰를 생성한 계정)의 계정명을 참조해야만 뷰를 조회할 수 있습니다. 따라서 select 시에 뷰네임으로만 접근하고 싶거나 보안적으로 관리자 계정을 가려 정보노출을 최소화 하고싶을 때 사용할 수 있겠습니다.
guest 계정이 시노님GUEST_MUST_SELECT를 호출하면 시노님GUEST_MUST_SELECT은 system.GUEST_MUST_SELECT을 호출하는 원리입니다.
'Database > Oracle' 카테고리의 다른 글
[Oracle] 오라클 함수, ADD_MONTHS() (0) | 2019.05.29 |
---|---|
[Oracle] sql developer, 엑셀로 테이블에 데이터 삽입하기. (0) | 2019.04.21 |
[Oracle] 오라클, 프로시저 구문 예제 및 응용법(2) - 참조형(%type, %rowtype) (0) | 2019.04.21 |
[Oracle] 오라클, 프로시저 구문 예제 및 응용법(1) (0) | 2019.04.15 |
PL/SQL( Procedural Language Extensions to SQL )이란? (2) | 2019.03.31 |