데이터베이스 역할과 접근 제어

데이터베이스 설계

Lis Sulmont

Curriculum Manager

뷰에 대한 접근 권한 부여 및 회수

GRANT privilege(s) 또는 REVOKE privilege(s)

ON object

TO role 또는 FROM role

  • 권한: SELECT, INSERT, UPDATE, DELETE
  • 객체: 테이블, 뷰, 스키마 등
  • 역할: 데이터베이스 사용자 또는 사용자 그룹
GRANT UPDATE ON ratings TO PUBLIC; 
REVOKE INSERT ON films FROM db_user; 
데이터베이스 설계

데이터베이스 역할

  • 데이터베이스 접근 권한 관리
  • 데이터베이스 역할은 다음 정보를 포함하는 엔터티입니다:
    • 역할의 권한 정의
      • 로그인 가능 여부
      • 데이터베이스 생성 가능 여부
      • 테이블 쓰기 가능 여부
    • 클라이언트 인증 시스템과의 상호작용
      • 비밀번호
  • 역할은 하나 이상의 사용자에게 할당될 수 있습니다
  • 역할은 데이터베이스 클러스터 전체에 적용됩니다
데이터베이스 설계

역할 생성

  • 빈 역할
CREATE ROLE data_analyst;
  • 속성이 설정된 역할
CREATE ROLE intern WITH PASSWORD 'PasswordForIntern' VALID UNTIL '2020-01-01';
CREATE ROLE admin CREATEDB;
ALTER ROLE admin CREATEROLE;
1 http://bit.ly/postgresql_attributes
데이터베이스 설계

역할에 권한 부여 및 회수

GRANT UPDATE ON ratings TO data_analyst;
REVOKE UPDATE ON ratings FROM data_analyst;

PostgreSQL에서 사용 가능한 권한은 다음과 같습니다:

  • SELECT, INSERT, UPDATE, DELETE, TRUNCATE, REFERENCES, TRIGGER, CREATE, CONNECT, TEMPORARY, EXECUTE, USAGE
1 http://bit.ly/postgresql_privileges
데이터베이스 설계

사용자와 그룹 (모두 역할)

  • 역할은 사용자 및/또는 그룹으로 기능하는 엔터티입니다
    • 사용자 역할
    • 그룹 역할

바깥 원이 그룹 역할이고 내부의 세 원이 사용자 역할인 역할 그래픽

데이터베이스 설계

사용자와 그룹 (모두 역할)

그룹 역할

CREATE ROLE data_analyst;

사용자 역할

CREATE ROLE intern WITH PASSWORD 'PasswordForIntern' VALID UNTIL '2020-01-01';
데이터베이스 설계

사용자와 그룹 (모두 역할)

그룹 역할

CREATE ROLE data_analyst;

사용자 역할

CREATE ROLE alex WITH PASSWORD 'PasswordForIntern' VALID UNTIL '2020-01-01';

GRANT data_analyst TO alex;
REVOKE data_analyst FROM alex;
데이터베이스 설계

주요 PostgreSQL 역할

역할 허용된 접근
pg_read_all_settings 슈퍼유저에게만 보이는 변수를 포함한 모든 구성 변수를 읽습니다.
pg_read_all_stats 슈퍼유저에게만 보이는 것을 포함한 모든 pg_stat_* 뷰 및 통계 관련 확장을 사용합니다.
pg_signal_backend 다른 백엔드에 신호를 보냅니다 (예: 쿼리 취소, 종료).
기타... 기타...
1 http://bit.ly/default_roles_postgresql
데이터베이스 설계

역할의 장점과 주의사항

장점

  • 사용자 삭제 후에도 역할은 유지됩니다
  • 사용자 계정 생성 전에 역할을 만들 수 있습니다
  • DBA의 작업 시간을 절약합니다

주의사항

  • 역할이 특정 사용자에게 과도한 권한을 부여할 수 있습니다
    • 주의가 필요합니다
데이터베이스 설계

연습해 봅시다!

데이터베이스 설계

Preparing Video For Download...