[DB] Redshift 특정 테이블의 권한이 생성되지 않는 문제

2024. 10. 30. 12:25·CS/데이터베이스

Redshift 특정 테이블의 권한이 생성되지 않는 문제

Redshift에서 그룹에 대한 권한을 추가했지만, 특정 테이블에 대한 권한만 추가되지 않는 문제가 발생하였다. 결론적으로는 권한을 생성하는 사용자가 아닌 다른 사용자가 테이블을 생성했기 때문이다. 이 문제를 해결하는 과정과 방지하는 방법을 살펴보려고 한다.

  • 이전에 Redshift 사용자를 생성했던 내용
 

인프라 구축기 (7) - Airflow 및 Redshift 사용자 생성, 권한 설정

인프라 구축기AirflowAirflow는 Web server에 Admin 계정으로 접속 시 Security > List Users에서 사용자 관리가 가능하다. 그러나 기본 Admin 계정은 매우 단순하기 때문에 보안을 위해 수정이 필요하다. 그래서

sanseo.tistory.com

문제 상황

문제 발생

  • raw_data 스키마의 popup_stores 테이블의 count를 확인하려고 쿼리 수행
  • 권한 부족으로 Error 발생
-- ERROR: permission denied for relation popup_stores
select distinct count(*) from raw_data.popup_stores ps limit 10

문제 파악

  • 다른 테이블은 모두 정상적으로 수행하므로 GRANT 쿼리 자체의 문제는 없다고 판단
  • 테이블을 확인해 보니 popup_stores만 'redshift'가 아닌 다른 USER가 Owner로 설정돼 있었음
  • 그러나 권한을 조작하고 있는 것은 redshift 계정
-- 테이블의 DDL 생성시 나타나는 owner (redshift가 아님)
ALTER TABLE raw_data.popup_stores owner to "ex_user";

문제 확인

  • Owner가 다르면 권한 해제나 그룹 삭제가 어려울 수 있음
  • 관리자 계정은 모든 객체 접근 권한을 갖고 있지만, 객체의 소유권이 없다면 권한 부여에 제약 발생

문제 해결

문제 해결

  • popup_stores의 OWNER를 redshift로 변경 후 다시 권한 설정 진행
-- Owner 변경
ALTER TABLE raw_data.popup_stores OWNER TO redshift;

-- 그룹에 대한 스키마 권한 부여
GRANT USAGE ON SCHEMA raw_data, analytics TO GROUP ETL_team;

-- 테이블 권한
GRANT ALL ON ALL TABLES IN SCHEMA raw_data, analytics TO GROUP ETL_Team;

-- 새로 생성된 테이블에 대한 권한 부여
ALTER DEFAULT PRIVILEGES IN SCHEMA raw_data GRANT ALL ON TABLES TO GROUP ETL_team;
ALTER DEFAULT PRIVILEGES IN SCHEMA analytics GRANT ALL ON TABLES TO GROUP ETL_team;

결과

  • 테이블에 대한 권한 확인 결과 올바르게 popup_stores가 생성된 것을 확인
-- etl_team에게 부여된 테이블 권한 확인
SELECT *
FROM information_schema.table_privileges
WHERE grantee = 'etl_team';

쿼리 결과

문제 발생 방지

아래의 방식은 일시적으로 해결할 수 있는 방식이며, 근본적인 해결법은 아니다. 따라서 사용자가 테이블을 생성함에 따라 올바르게 그룹에 권한이 적용되게 하는 방법은 아래 링크에서 참고하면 된다.

 

[DB] Redshift 특정 테이블의 권한 생성 문제 근본적인 해결법

Redshift 특정 테이블의 권한 생성 문제이전에 Redshift 그룹에 권한을 추가해 주었어도 Superuser가 아닌 그룹 내 다른 사용자가 만든 테이블은 접근할 수 없었던 문제에 대한 해결 방법을 제시하였다.

sanseo.tistory.com

스키마 권한 재설정

  • 문제가 발생한 원인은 관리자가 아닌 USER가 테이블을 생성했기 때문
  • 스키마 권한은 CREATE, USAGE, ALTER가 존재하며, 모든 권한을 부여했었음
  • USER의 스키마 원한을 USAGE로만 설정하여 테이블 조작할 수 없게 변경
-- etl_team의 create, alter 권한 제거
REVOKE CREATE, ALTER ON SCHEMA raw_data, analytics FROM GROUP ETL_team;

재설정 후 스키마 권한 확인

  • 오직 USAGE 권한을 갖고 있는 것을 확인
-- etl_team에게 부여된 스키마 권한 확인
SELECT namespace_name, privilege_type
FROM SVV_SCHEMA_PRIVILEGES
WHERE namespace_name in ('analytics', 'raw_data') and identity_name = 'etl_team';

쿼리 결과

Reference

https://docs.aws.amazon.com/ko_kr/redshift/latest/dg/r_GRANT.html

https://docs.aws.amazon.com/ko_kr/redshift/latest/dg/r_Privileges.html

'CS > 데이터베이스' 카테고리의 다른 글

[MySQL] CHAR vs VARCHAR  (0) 2024.11.25
[DB] Redshift 특정 테이블의 권한 생성 문제 근본적인 해결법  (0) 2024.11.19
[DB] Redshift에 생성된 Schema와 Table 정보 확인 방법  (0) 2024.08.06
[DB] 생활코딩 - 관계형 데이터 모델링  (3) 2024.07.14
[DB] 프로덕션 데이터베이스 vs 데이터 웨어하우스  (0) 2024.06.04
'CS/데이터베이스' 카테고리의 다른 글
  • [MySQL] CHAR vs VARCHAR
  • [DB] Redshift 특정 테이블의 권한 생성 문제 근본적인 해결법
  • [DB] Redshift에 생성된 Schema와 Table 정보 확인 방법
  • [DB] 생활코딩 - 관계형 데이터 모델링
기억에 남는 블로그 닉네임
기억에 남는 블로그 닉네임
  • 기억에 남는 블로그 닉네임
    얕게, 깊게
    기억에 남는 블로그 닉네임
  • 전체
    오늘
    어제
  • 블로그 메뉴

    • 홈
    • 방명록
    • 글쓰기
    • 분류 전체보기 N
      • Data Engineering
        • Airflow
        • 빅데이터
        • 자동화
        • 기타
      • Infra
        • AWS
        • Terraform
        • [인프라 구축기] Terraform 활용 AWS ..
      • CS
        • 자료구조
        • 알고리즘
        • 네트워크
        • 데이터베이스
        • 이것이 취업을 위한 코딩 테스트다 with 파이썬
      • Python
      • Web
      • Git
      • 기타 N
        • 취업 & 진로
        • 회고록 N
        • 기타
      • 프로젝트 단위 공부
        • [부스트코스] DataLit : 데이터 다루기
        • [개인 프로젝트] 공모전 크롤링
        • [개인 프로젝트] FC Online 공식 경기 분..
        • 프로젝트 개선 방안
      • [프로그래머스] 데이터 엔지니어링 데브코스 3기
        • TIL(Today I Learn)
        • 숙제
        • 기타
      • 알고리즘 연습
        • 프로그래머스
        • 백준
  • 링크

    • 깃허브
    • 링크드인
  • 인기 글

  • 최근 글

  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.3
기억에 남는 블로그 닉네임
[DB] Redshift 특정 테이블의 권한이 생성되지 않는 문제
상단으로

티스토리툴바