DB에 대한 접근 권한 제어에 사용하는 언어로, 각종 권한을 부여, 회수 가능
권한 관리를 통해 접근 제어가 가능하며, 보안을 유지하는 기능
GRANT(유저 권한 부여), REVOKE(유저 권한 삭제)
데이터베이스를 사용하기 위한 계정
데이터베이스에 접근하기 위해서는 해당 사용자로 로그인해서 사용해야 함
데이터베이스의 생성과 관리를 담당하는 계정
모든 권한과 책임을 가지는 계정 (ex : root)
데이터베이스에 대하여 질의, 갱신, 보고서 작성 등의 작업을 수행할 수 있는 계정
업무에 필요한 최소한의 권한만 가지는 것을 원칙으로 함
SELECT rolname, rolsuper, rolcreatedb, rolcreaterole, rolcanlogin
FROM pg_roles;
-- 기본 사용자 생성
CREATE USER username1 WITH PASSWORD 'password';
-- ROLE을 이용한 사용자 생성 (USER와 사실상 동일)
CREATE ROLE username2 WITH LOGIN PASSWORD 'password';
-- 계정 생성 시 자주 쓰는 옵션
CREATE USER username3
WITH PASSWORD 'password'
CREATEDB -- 데이터베이스 생성 권한 부여
CREATEROLE -- 다른 ROLE 생성 권한 부여
SUPERUSER -- 슈퍼유저 권한 부여
LOGIN -- 로그인 가능 (USER 생성 시 기본값)
NOINHERIT; -- 다른 ROLE 권한 상속 불가
ALTER USER username WITH PASSWORD 'new_password';
ALTER USER username WITH SUPERUSER; -- 권한 부여
ALTER USER username WITH NOSUPERUSER;
ALTER USER username WITH PASSWORD 'newpassword';
DROP USER username;
사용자의 DB 객체(테이블, 뷰 등)에 대한 접근 및 조작 권한을 부여하거나 제한하는 보안 메커니즘이다.
GRANT, REVOKE, SHOW GRANTS 등을 사용해 사용자에게 특정 SQL 작업 권한을 관리하며, 사용자마다 다른 권한과 역할(롤)을 설정할 수 있다. 다수 사용자가 공유하는 데이터베이스 환경에서 보안을 유지하고 데이터
무결성을 보호하기 위한 핵심 기능이다.
데이터베이스 관리자가 가지고 있는 권한
시스템 관리자가 사용자에게 부여하는 권한
오브젝트 권한은 테이블, 뷰, 시퀀스, 프로시저 등 개별 객체에 대해 사용자에게 부여되는 세부 권한이다.
객체 유형에 따라 SELECT, INSERT, EXECUTE, ALTER, USAGE 등의 권한이 할당되어 접근 및 조작을 제어한다.
GRANT <권한,...> ON <OBJECT_NAME> TO <ROLE>;
-- 테이블에 대한 SELECT, INSERT 권한
GRANT SELECT, INSERT ON mytable TO user01;
-- 스키마에 대한 사용 권한
GRANT USAGE ON SCHEMA myschema TO user01;
-- 데이터베이스 접속 권한
GRANT CONNECT ON DATABASE mydb TO user01;