오라클 시노님(SYNONYM )에 대해서 알아볼께요

요즘 블로그에 오라클관련된 글이 뜸한것 같아서 한번 올려보겠습니다. 오늘 있었던 일인데 보안관련해서 계정의 잡과 프로시저, 펑션등의 생성, 수정, 삭제를 금지하였더니 담당자들이 업무처리를 못해서 문제가 생겼는데요.

 

 

 

 

보안관련 점검이 나온다고 부랴부랴 적용이 되어서 불편함을 감수할 수 밖에 없었습니다. 오늘은 오라클 시노님(SYNONYM )에 대해서 알아보려 합니다.

 

예전부터 여기부분을 정리하려고 벼르고 있었는데 오늘 우연찮게 글을 쓰게 되네요.

 

딱딱한 설명보다 서술형으로 설명을 드리겠습니다. [테스트계정]이 있고 테이블1 부터 테이블 100까지 있다고 가정합시다. 서로서로 테이블을 참조해서 사용을 한다고 하면 오라클에서는 참조하는 방법을 이렇게 합니다.

 

SELECT * FROM [테스트계정].테이블1...

SELECT * FROM [테스트계정].테이블2...

SELECT * FROM [테스트계정].테이블3...

 

 이렇게 하면 다른계정에서 [테스트계정]의 테이블을 가져올 수가 있는데요. 물론 [테스트계정]이 타계정에게 접근권한을 주었을 경우입니다.

 

 

 

 

 

토드같은 디비툴에서는 화면을 보면서 바로 권한을 부여해줄 수가 있는데 실제적으로는 아래와 같이 권한이 부여됩니다.

 

권한은 GRANT 명령어입니다.

 

[테스트계정]으로 로그인한 뒤

 

GRANT SELECT ON 테이블1 TO 타계정

 

이렇게 권한을 부여해줄 수 있습니다.

 

 

 

 

 

물론 그냥 사용해도 관계는 없지만 계정에 있는 테이블의 목록을 노출시킨다는 취약점이 발생되어서 오라클 시노님(SYNONYM )을 주어서 테이블의 노출도 막고 쿼리의 복잡성도 줄일 수 있습니다.

 

CREATE SYNONYM 바꾼이름 FOR 계정명A.테이블1

 

이런식으로 줄여서 쓸수가 있는것이죠.

 

지우는것도 다른 것과 마찬가지로 DROP 명령어를 사용합니다.

 

DROP SYNONYM 바꾼이름

간단하게나마 오라클 시노님(SYNONYM )에 대해서 정리를 해보았는데요 이해가 잘 되시나요? 이것저것 만들어보다보면 금방 이해가 되실겁니다.