인프라 구축기
Airflow
Airflow는 Web server에 Admin 계정으로 접속 시 Security > List Users에서 사용자 관리가 가능하다. 그러나 기본 Admin 계정은 매우 단순하기 때문에 보안을 위해 수정이 필요하다. 그래서 관리 위한 Admin 계정 하나와 3명의 사용자를 위한 User 계정을 생성하려고 한다.
- 기본 Admin 계정 : ID - airflow, PW - airflow
사용자 생성
- Airflow의 사용자 생성은 UI로 가능하기 때문에 어렵지 않음
- 관리자 계정은 Role = Admin, 사용자(개발자) 계정은 Role = User로 설정
역할 별 권한
- Admin
- 사용자 관리, DAG / Jobs 관리, Variables 및 Connections 관리, 권한 관리, 데이터 관리, 메뉴 접근 등
- Airflow 관리를 위한 모든 권한을 가지고 있음
- User
- DAG 관리, Datasets, 클러스터 및 Jobs, 본인 정보 관리, 메뉴 접근 등
- Airflow를 활용하기 위한 적절한 권한을 갖고 있음
- Admin과 달리 사용자 관리나 Variables, Connections 등 민감한 정보는 다룰 수 없음
Redshift
Redshift를 사용할 ETL 팀의 인원 (총 3명)만큼 사용자를 생성하고, 같은 그룹에 추가하는 작업을 진행하려고 한다.
사용자 생성
- 현재 3명의 DB 사용자가 존재하므로 인원 당 하나의 계정 생성
- 이후 DA 팀에서 DB 접근이 필요하다면 추가로 생성할 예정
CREATE USER user_1 WITH PASSWORD 'pw';
CREATE USER user_2 WITH PASSWORD 'pw';
CREATE USER user_3 WITH PASSWORD 'pw';
사용자 조회
select * from pg_user;
그룹 생성 및 사용자 추가
- ETL_team이라는 그룹을 생성한 뒤 세 명의 사용자 추가
CREATE GROUP ETL_team;
ALTER GROUP ETL_team ADD USER user_1, user_2, user_3;
그룹 조회
SELECT u.usesysid, g.groname, u.usename
FROM pg_user u
LEFT JOIN pg_group g ON u.usesysid = ANY (g.grolist)
그룹에 권한 부여
- raw_data와 analytics 스키마에 대한 모든 권한 부여
- 각 스키마의 테이블에 대한 모든 권한 부여
-- 그룹에 대한 스키마 권한 부여
GRANT ALL PRIVILEGES ON SCHEMA raw_data, analytics TO GROUP ETL_team;
-- 새로 생성된 테이블에 대한 권한 부여
ALTER DEFAULT PRIVILEGES IN SCHEMA raw_data GRANT ALL PRIVILEGES ON TABLES TO GROUP ETL_team;
ALTER DEFAULT PRIVILEGES IN SCHEMA analytics GRANT ALL PRIVILEGES ON TABLES TO GROUP ETL_team;
스키마 권한 조회
SELECT namespace_name, privilege_type
FROM SVV_SCHEMA_PRIVILEGES
WHERE namespace_name in ('analytics', 'raw_data') and identity_name = 'etl_team';
테이블 권한 조회
- 모든 테이블에 대해 같은 권한이므로 distinct로 주어진 권한을 확인
SELECT distinct grantee, privilege_type
FROM information_schema.table_privileges
WHERE grantee = 'etl_team';
문제 발생 및 해결
- Redshift 권한을 설정하면서 특정 테이블의 SELECT가 되지 않는 권한 이슈 발생
- 해결 과정은 아래에 정리
Reference
'Infra > [인프라 구축기] Terraform 활용 AWS 인프라 구축' 카테고리의 다른 글
인프라 구축기 (9) - Terraform terraform.tfstate 삭제 이슈 (0) | 2024.10.24 |
---|---|
인프라 구축기 (8) - Lambda를 활용한 AWS 인스턴스 시작, 중지 자동화 (1) | 2024.10.19 |
인프라 구축기 (6) - 로컬에서 Private EC2 Airflow Web Server 접속 (0) | 2024.10.17 |
인프라 구축기 (5) - Private Subnet EC2에서 다른 Subnet의 인스턴스 접근 확인 (0) | 2024.10.11 |
인프라 구축기 (4) - Bastion Host에서 Private Subnet 접근 확인 (5) | 2024.10.09 |