본문 바로가기
프로N잡러/프로그래밍&자격증

[GPDB] 3. Role & Access (인증, 권한 관리)

by 뮤지구 2024. 1. 9.

Role


  • login 속성을 넣으면 user, login 속성이 없으면 group
  • OS user, group 과 연관 없음.
  • default superuser role : gpadmin
  • role에는 db, schema, object 에 대한 access 권한이 주어짐

[종류]
① user role
- login 가능한 일반 유저
- default 속성 : NOSUPERUSER, NOCREATEDB, NOCREATEROLE, INHERIT, NOLOGIN

--create role
CREATE ROLE ~ WITH LOGIN RESOURCE GROUP adhoc;

--alter role
ALTER ROLE ~ WITH CREATEDB;

 

② superuser
- gpadmin 과 동일한 admin 정도의 권한
- 모든 권한 확인을 통과함
- default 속성 : SUPERUSER, CREATEDB, CREATEROLE, PASSWORD

③ group role
- 다른 role 의 멤버가 될 수 있으며, parent role 의 권한을 모두 상속받음.
- 동시에 여러 개의 role 은 수행할 수 없음

CREATE ROLE grp_admin CREATEROLE CREATEDB;
GRANT grp_admin TO john, sally;
REVOKE admin FROM bob;
 

 

Access (접근 권한)


Host Base Authentication (HBA)

  • 사용자가 master 에 접근할 때 확인하는 권한
  • pg_hba.conf 파일에 ip, 권한이 적혀있어야 접근, 로그인 등 가능
    - user, group 단위로 특정 ip/ip 대역 접근 할 수 있도록 설정
    - trust 로 넣을 경우 password 없이 접근 가능
  • pg_hba.conf 변경이 완료되었다면 "gpstop -u"로 conf 내용 적용 필요.
$ cd $MASTER_DATA_DIRECTORY
$ cat pg_hba.conf # 내용 확인

$ echo "local testdb testuser trust" >> $MASTER_DATA_DIRECTORY/pg_hba.conf
$ gpstop -u
 

 

참고) HBA에 권한 없을 경우 발생하는 오류
참고) pg_hba.conf 예시

 


Object Priviledges

  • 각 object에 대해 owner role 은 모든 권한을 가짐
  • 다른 role들은 권한을 부여받아야 사용 가능
  • default 권한
    - db : connect
    - schema : usage
    - table/view : select
    - function : execute
 
 
--grant on schema (GPv6부터 지원)
# grant select on all tables in schema sch1 to user1;

--column level (GPv6부터 지원)
# grant select (b) on table t_grant_column to user1;
# grant select on table t_grant_column to user2;
 

 


실습


 

8. 새로 생성한 role 에 대해 권한이 부여되어 있지 않기 때문에 오류 발생
10. 위 9번에 해당하는 권한 필요
11. insert 권한 없기 때문에 구문 실패 

 

Quiz


 4, x (HBA -> Object 권한)