본문 바로가기
IT 끄적이기

DB 권한 관련 정리

by 미르아 2024. 12. 26.
728x90

PostgreSQL에서는 특정 사용자에 대해 다른 데이터베이스에 대한 권한을 제거하는 작업을 SQL 쿼리로 수행 가능

현재는 recycle_user 라는 유저가 recycle 이라는 데이터베이스만 접근할 수 있도록 설정하는 과정

1. 데이터베이스 권한 제거

사용자가 특정 데이터베이스에 접근 권한이 있다면, 이를 쿼리로 제거

다른 데이터베이스에서 연결 권한 제거

모든 사용자에게 기본적으로 부여되는 연결 권한(CONNECT)을 제거

REVOKE CONNECT ON DATABASE other_database FROM recycle_user;

다른 데이터베이스에서 추가 권한 제거

사용자가 다른 데이터베이스에 추가적인 권한을 가지고 있다면, 이를 제거

REVOKE ALL PRIVILEGES ON DATABASE other_database FROM recycle_user;

2. 공용 역할에서 권한 제거

PostgreSQL에서 PUBLIC 역할을 통해 기본 권한이 부여될 수 있으므로, PUBLIC 역할에서도 기본 권한을 제거

REVOKE CONNECT ON DATABASE other_database FROM PUBLIC;

3. 사용자가 다른 데이터베이스의 객체에 접근 권한을 가진 경우

특정 데이터베이스의 테이블, 스키마 등에 대해 사용자가 권한을 가지고 있다면, 이 권한도 제거해야 합니다.

REVOKE ALL PRIVILEGES ON ALL TABLES IN SCHEMA public FROM recycle_user;
REVOKE ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA public FROM recycle_user;
REVOKE ALL PRIVILEGES ON ALL FUNCTIONS IN SCHEMA public FROM recycle_user;

4. 새 권한 부여 및 확인

마지막으로, recycle 데이터베이스에만 권한을 명확히 부여하여 의도된 대로 작동하는지 확인

GRANT ALL PRIVILEGES ON DATABASE recycle TO recycle_user;

5. 사용자의 현재 권한 확인

recycle_user가 어떤 권한을 가지고 있는지 확인하려면 아래 쿼리를 사용

데이터베이스 수준 권한 확인

\\l+

특정 데이터베이스 내의 객체 권한 확인

\\dp

이렇게 하면 recycle_user가 recycle 데이터베이스에만 권한이 있고, 다른 데이터베이스에는 접근할 수 없도록 쿼리문으로 설정

728x90