Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- CSV
- node.js
- pyenv
- terraform
- local
- PayPay
- javascript
- 방콕
- 三井住友カード
- react.js
- Python
- 페이페이
- 아타미
- 釜つる
- 미츠이 스미토모
- JenkinsFile
- 프라하
- typescript
- 체코
- 태국
- vba
- duckdb
- 뮌헨
- 메르페이
- Selenium
- 카마츠루
- codebuild
- documentdb
- 熱海
- PostgreSQL
Archives
- Today
- Total
도쿄사는 외노자
RDS PostgreSQL에서 유저 권한 부여하기 본문
RDS에 PostgreSQL을 깔고 DB를 구축했다.
DB에는 Master와 Transaction의 두가지 스키마를 만들었고, 아래와 같이 롤을 부여하기로 했다.
Role
이름 | Master | Transaction | 설명 |
---|---|---|---|
master_user | CRUD | - | 마스터 테이블 유지보수용 롤 |
readonly_user | R | R | 열람용 롤 |
normal_user | R | CRUD | 시스템 가동에 필요한 권한 부여 롤 |
super_admin | CRUD | CRUD | 전 권한 부여 |
User
이름 | Role |
---|---|
master_user_01 | master_user |
readonly_user_01 | readonly_user |
normal_user_01 | normal_user |
normal_user_02 | normal_user |
super_admin_01 | super_admin |
바로 본론으로 들어가, 소스는 다음과 같다.
-- ROLE
CREATE ROLE master_user;
CREATE ROLE readonly_user;
CREATE ROLE normal_user;
CREATE ROLE super_admin;
-- USER
CREATE USER master_user_01 WITH PASSWORD 'aaa';
CREATE USER readonly_user_01 WITH PASSWORD 'bbb';
CREATE USER normal_user_01 WITH PASSWORD 'ccc';
CREATE USER normal_user_02 WITH PASSWORD 'ddd';
CREATE USER super_admin_01 WITH PASSWORD 'eee';
-- GRANT USAGE
GRANT USAGE ON SCHEMA master TO master_user, readonly_user, normal_user;
GRANT USAGE ON SCHEMA transaction TO readonly_user, normal_user;
-- GRANT
GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA master TO master_user;
GRANT SELECT ON ALL TABLES IN SCHEMA master TO readonly_user;
GRANT SELECT ON ALL TABLES IN SCHEMA transaction TO readonly_user;
GRANT SELECT ON ALL TABLES IN SCHEMA master TO normal_user;
GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA transaction TO normal_user;
-- GRANT SUPERUSER ROLE TO super_admin
GRANT rds_superuser TO super_admin;
-- GRANT ROLE TO USER
GRANT master_user TO master_user_01;
GRANT readonly_user TO readonly_user_01;
GRANT normal_user TO normal_user_01;
GRANT normal_user TO normal_user_02;
GRANT super_admin TO super_admin_01;
Grant Usage
Grant가 테이블의 CRUD 권한을 부여하는 것이라면, Grant Usage는 스키마에 대한 엑세스 권한을 부여한다.
테이블 권한이 있더라도, 스키마를 사용할 수 없다면 그 안의 테이블을 만질 수 없다는 것.
자세한 것은 What GRANT USAGE ON SCHEMA exactly do?를 참조.
RDS for PostgreSQL의 ADMIN권한
RDS for PostgreSQL에서는 ADMIN권한을 가진 Role이 존재한다.
이름하야 「rds_superuser」.
이것만 GRANT로 발라주면, 그 유저/롤은 바로 슈퍼유저가 된다.
참조
'Tech > DB・SQL' 카테고리의 다른 글
dbt-duckdb (0) | 2024.07.14 |
---|---|
MongoDB에서의 데이터 항목 제어 (0) | 2021.05.21 |
PostgreSQL에서 CREATE/UPDATE시의 자동입력 구현 (0) | 2020.02.27 |
DB별 결과 건수 제한 (0) | 2016.07.06 |
SQL Server에서의 줄바꿈 문자 입력 (0) | 2016.06.29 |