본문 바로가기
컴퓨터관련/postgreSQL

[PostgreSQL]포스트그레DB에서 계정별 테이블 권한 확인 및 설정

by 빛과 어둠사이 2023. 6. 22.
728x90
반응형
SMALL

오늘은 PostgreSQL DB에서 계정별로 특정 테이블에 권한을 설정하는 방법을 정리해보고자 합니다.

현재 제가 운영중인 시스템은 메인 DB는 Oracle를 사용하고 있습니다.

그리고 CDC 시스템을 이용하여 데이터를 동기화 하고 있습니다.

그런데 저희가 사용하는 CDC 시스템에서는 간혹 누락이 발생이 될 때도 있고,

뭔가 불안한 느낌이 있었습니다.

 

그래서 postgreSQL로 바로 데이터를 넣는 것을 고민을 해봤습니다.

그런데 이 때 문제점은 포스트그레의 경우에는 읽기전용식으로 사용을 하고 있습니다.

그렇다보니 저희가 쓰는 계정에 대해서 권한이 select 밖에 없는 상황입니다.

 

그런데 데이터를 넣기 위해서는 insert 등의 권한으 필요합니다.

해당 계정에 대해서 권한을 모두 주기에는 기존 시스템에 영향을 줄 수 있으니

새로 만든 테이블에 대해서만 insert, update, delete 등의 권한을 부여하는 방법으로

진행을 하기로 하였습니다.

 

그래서 A라는 저희가 쓰고 있는 계정에 대해서 

특정 테이블에 권한을 확인하고,

권한을 부여하는 방법을 정리해보고자 합니다.

 

 

반응형

 

1. 권한 확인

우선 권한을 확인해보도록 하겠습니다.

권한을 확인하기 위해서는 쿼리를 아래처럼 작성해주시면 되십니다.

select * from information_schema.role_table_grants where grantee = 'A' 
;

쿼리를 위처럼 작성해주시면 되십니다.

위의 쿼리에서 A는 조회하고자 하는 계정입니다.

맨 위에 설명을 할 때 A라고 계정을 정의했기 때문에 A로 작성을 하였습니다.

 

위처럼 쿼리를 작성하였습니다.

저희가 실제 사용하고 있는 계정의 경우에는

가려놓았습니다.

 

위처럼 쿼리를 작성하고 실행을 하게 되면

결과는 아래처럼 나오게 됩니다.

위처럼 SELECT 권한만 있는 것으로 보여지고 있네요.

 

 

 

 

2. 권한 부여

이제 권한을 부여하는 방법에 대해서

정리를 해보도록 하겠습니다.

권한을 부여하는 쿼리는 아래와 같습니다.

GRANT select, insert , delete ON table 테이블명 TO "A"

위처럼 작성해주시면 되십니다.

SELECT, INSERT, DELETE 권한을 부여하는 쿼리입니다.

UPDATE를 주고 싶으면 추가하면 되고,

DELETE를 주기 싫으면 빼주시면 되십니다.

 

그래서 테이블명에 해당 권한을 주고 싶은 테이블의 이름을 적고,

A란에 권한을 부여하고자 하는 계정명을 적어주시면 되십니다.

 

여기서 계정명은 꼭!!!!!!!!!!!!!

"", 쌍따옴표로 감싸주어야 합니다.

쿼리상 이슈가 없어보였는데 오류가 계속 나더라고요.

쌍따옴표로 감싸니깐 정상적으로 실행이 되었습니다.

그러니 꼭 쌍따옴표를 붙여주셔야 합니다.

 

위처럼 쿼리를 작성하였습니다.

그리고 실행하면 결과는 아래처럼 나오게 됩니다.

 

위처럼 결과가 나왔습니다.

쿼리가 정상적으로 실행이 되었다고 하네요.

 

 

 

 

3. 권한 부여 성공 확인

이제 권한이 부여가 잘 되었는지

최종 확인이 필요하죠.

권한이 제대로 부여가 되었는지 확인해보도록 하겠습니다.

 

위 1번에서 권한 확인할 때는 모든 테이블에 대해서 권한을 확인했는데

제가 권한 부여한 테이블에 대해서만 권한이 어떻게 되었는지

확인해보도록 하겠습니다.

 

쿼리는 다음과 같습니다.

select * from information_schema.role_table_grants where grantee = 'A' 
and table_name = '테이블명'
;

위처럼 쿼리를 작성해주시면 되십니다.

그러면 A라는 계정에 대해서

테이블명에 넣은 테이블에 대해서

권한이 어떻게 설정되어 있는지 확인할 수 있습니다.

 

위처럼 쿼리를 작성하였고

실행을 하게 되면

결과는 아래처럼 나오게 됩니다.

 

 

위처럼 SELECT 뿐 아니라, INSERT, DELETE 까지 권한이 부여된 것으로

확인이 되고 있습니다.

 

 

 

 

오늘은 postgreSQL에서 특정 user에 대해서

특정 table에 권한을 부여하는 방법에 대해서 정리를 해보았습니다.

제가 현재 운영하고 있는 환경처럼

권한이 모두 없을 때가 있습니다.

그런데 특정 테이블에 대해서만 권한이 필요할 때

위처럼 해주시면 되십니다.

 

 

 

이상으로 포스트그레SQL DB에서 특정 계정 별 특정 테이블에 권한 부여 방법이였습니다~

 

 

 

 

 

PostgreSQL 9.4 공식 가이드 Vol.1: 서버 관리, 에이콘출판

이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.

728x90
반응형
LIST