
오늘은 PostgreSQL Database에서 사용자에게 권한을 부여하거나 제거하는 방법에 대해 작성하려 합니다.
PostgreSQL에서 사용자에게 권한을 부여하거나 뺏기 위해서는 GRANT 또는 REVOKE 명령을 사용합니다.
우선 사용자에게 권한을 부여하거나 제거하기 전, 사용자계정인 user 계정을 생성하는 방법에 root 계정을 생성하는 방법을 작성하고, 사용자에게 권한을 부여하거나 뺏는 명령어에 대해 작성하고자 합니다.
해당 글을 읽기 전, Dark Mode는 풀어주시면 글을 읽기 쉽습니다.
1. 01. 계정 생성법 (CREATE)
User 계정 생성하는 방법은 아래 SQL을 활용해주시면 되고, 비밀번호는 '따옴표'를 꼭 작성해주어야 합니다.
<sql />
CREATE USER username WITH PASSWORD 'password';
Root계정 생성하는 방법은 기존 user 계정 생성 뒤에 SUPERUSER만 붙여주면 된다.
<sql />
CREATE USER username WITH PASSWORD 'password' SUPERUSER;
2. 02. 권한 부여 및 제거 (GRANT & REVOKE)
GRANT 명령은 지정된 사용자에게 지정된 객체에 대한 권한을 부여합니다.
<sql />
GRANT [권한] ON [객체] TO [사용자];
REVOKE 명령은 지정된 사용자에게 지정된 객체에 대한 권한을 뺏습니다.
<code />
REVOKE [권한] ON [객체] FROM [사용자];
3. 03. 권한 부여 및 뺏기 예시
다음은 PostgreSQL에서 사용자에게 권한을 부여하고 뺏는 예시입니다.
- 모든 사용자에게 table_name1 테이블에 대한 SELECT 권한을 부여합니다.
<sql />
GRANT SELECT ON table_name1 TO PUBLIC ;
- user1 사용자에게 table_name1 테이블에 대한 INSERT, UPDATE, DELETE 권한을 부여합니다.
<sql />
GRANT INSERT, UPDATE, DELETE ON table_name1 TO user1 ;
- user2 사용자에게 table_name1 테이블에 대한 SELECT 권한을 뺏습니다.
<sql />
REVOKE SELECT ON table_name1 FROM user2 ;
- user3 사용자에게 table_name1 테이블에 대한 모든 권한을 뺏습니다.
<sql />
REVOKE ALL ON table_name1 FROM user3 ;
만일 이것을 보는 여러분께서 admin권한을 가진 사용자라면 다른 사용자에게 권한 부여하거나 뺏을 경우, 주의해야하는 사항이 몇 가지 있습니다.
- 권한을 부여하는 경우에는 왜? 이 권한이 필요한지 정당한 이유가 필요합니다.
- 사용자에게 권한 관련 변경 사항 공유하기
우선, BigData 환경에 있다보니 SELECT 권한만 주었다고 하더라도, 잘못된 Query 작성으로 인해 사이즈가 큰 테이블을 Full Table을 Scan할 경우, 해당 DB Server에 부하를 줄 수 있기 때문입니다. 이와 같은 상황을 방지하고자 권한을 부여하는 경우, 이 권한이 왜 필요한지 설명을 들을 필요가 있습니다. 두번째, 만약 다른 사용자의 권한을 부여하거나 뺏을 경우, 사용자가 현재 작업에 영향을 미치지 않아야 하기 때문에 사용자에게 변경 사항에 대해 알려주어야 합니다.
이상으로 오늘 주제인 PostgreSQL Database에서 사용자에게 권한을 부여하거나 제거하는 방법에 대해 작성해봤습니다.
[참고자료]
https://www.postgresql.org/docs/16/sql-grant.html
GRANT
GRANT GRANT — define access privileges Synopsis GRANT { { SELECT | INSERT | UPDATE | DELETE | TRUNCATE | …
www.postgresql.org
https://www.postgresql.org/docs/16/sql-revoke.html
REVOKE
REVOKE REVOKE — remove access privileges Synopsis REVOKE [ GRANT OPTION FOR ] { { SELECT | INSERT | UPDATE …
www.postgresql.org
https://www.whatwant.com/entry/PostgreSQL-User-Role
PostgreSQL 계정 및 권한 관리
보통 개발 단계에서는 Superuser 권한을 갖고 있는 계정으로 database를 사용하곤 한다. (나만 그런가?) 당연히 그 누구도 추천하지 않는, 바람직하지 않은 계정 사용법이다. 그러면 적절한 권한을 갖
www.whatwant.com
PostgreSQL 역할 및 권한 이해 - Amazon Relational Database Service
PostgreSQL 데이터베이스를 사용하는 기존 RDS 프록시의 경우, SCRAM만 사용하도록 데이터베이스 인증을 수정하면 최대 60초 동안 프록시를 사용할 수 없게 됩니다. 문제를 방지하려면 다음 중 하나를
docs.aws.amazon.com
'Data Engineering > DBMS' 카테고리의 다른 글
[DB 기초] 트랜잭션(Transaction)과 그 특성은 무엇인가 (0) | 2023.08.19 |
---|---|
[DBMS] Data structure store Redis (0) | 2023.07.27 |
[PostgreSQL] Primary Key 재설정 (0) | 2023.07.04 |
[PostgreSQL] ERROR : Column reference [컬럼명] is ambiguous 오류 및 해결법 (0) | 2023.04.11 |
[PostgreSQL] 중복 데이터 찾기 (0) | 2023.03.23 |