PostgreSQL에서 테이블에 대한 기본적인 권한은 SELECT
, INSERT
, UPDATE
, DELETE
외에도 몇 가지 더 있습니다. 또한, 함수(프로시저 포함)나 트리거를 사용하기 위한 권한도 고려해야 할 수 있습니다.
테이블 권한
- REFERENCES: 테이블의 특정 컬럼에 대한 외래 키 제약 조건을 생성할 권한입니다.
- TRIGGER: 사용자가 테이블에 트리거를 생성할 수 있게 합니다.
- ALTER: 테이블 구조를 변경할 수 있는 권한입니다.
- DROP: 테이블을 삭제할 수 있는 권한입니다.
함수 및 프로시저 권한
함수나 프로시저(저장 프로시저)를 실행하기 위해서는 해당 함수나 프로시저에 대한 EXECUTE
권한이 필요합니다. PostgreSQL에서는 함수와 프로시저를 동일하게 취급하며, 둘 다 실행 가능한 루틴으로 간주합니다.
GRANT EXECUTE ON FUNCTION function_name TO username;
또는 프로시저에 대해서:
GRANT EXECUTE ON PROCEDURE procedure_name TO username;
트리거 권한
트리거 자체에 대한 권한은 특별히 GRANT
로 부여하는 것이 아니라, 트리거를 생성할 때 해당 테이블에 대한 적절한 권한(예: TRIGGER
권한)이 있어야 합니다. 트리거가 작동하는 로직 내에서 참조하는 다른 객체(테이블, 함수 등)에 대해서는 해당 객체에 대한 접근 권한이 필요할 수 있습니다.
추가적인 권한 고려 사항
- SEQUENCE: 시퀀스는 일련번호 생성기로,
INSERT
작업 중 자동 증가 필드(예: 기본 키)에 사용됩니다. 시퀀스에 대한 USAGE
및 SELECT
권한이 필요할 수 있습니다.
- USAGE ON SCHEMA: 특정 스키마 내의 객체를 사용하기 위한 권한입니다. 예를 들어, 사용자가 특정 스키마 내에서 객체를 생성하려면 이 권한이 필요합니다.
- DATABASE: 특정 데이터베이스에 대한 접근 권한. 예를 들어,
CONNECT
권한은 데이터베이스에 연결할 수 있는 권한을 제공합니다.
권한을 부여할 때는 최소 권한 원칙을 따르는 것이 좋습니다. 즉, 사용자가 작업을 수행하는 데 필요한 최소한의 권한만을 부여해야 합니다. 이는 보안을 강화하는 데 중요한 원칙입니다.