[Oracle] 오라클, Synonym 객체 권한 및 생성, 사용법 예제

Synonym을 사용하는 이유
  1. 데이터베이스의 투명성을 제공하기 위해서 사용 한다고 보면 된다. 시노님은 다른 유저의 객체를 참조할 때 많이 사용을 한다.
  2. 만약에 실무에서 다른 유저의 객체를 참조할 경우가 있을 때 시노님을 생성해서 사용을 하면은 추후에 참조하고 있는 오프젝트가 이름을 바꾸거나 이동할 경우 객체를 사용하는 SQL문을 모두 다시 고치는 것이 아니라 시노님만 다시 정의하면 되기 때문에 매우 편리 하다.
  3. 객체의 긴 이름을 사용하기 편한 짧은 이름으로 해서 SQL코딩을 단순화 시킬 수 있다.
  4. 또한 객체를 참조하는 사용자의 오브젝트를 감추 수 있기 때문에 이에 대한 보안을 유지할 수 있다. 시노님을 사용하는 유저는 참조하고 있는 객체를에 대한 소유자, 이름, 서버이름을 모르고 시노님 이름만 알아도 사용 할 수 있다.

 

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_SELECTsystem.GUEST_MUST_SELECT을 호출하는 원리입니다.

댓글

Designed by JB FACTORY