결론

  • LakeFomation Data lake location 으로 등록하고 관리하자.

배경

AWS 데이터레이크 환경을 운영하면서 가장 고민이 많았던 부분 중 하나가
데이터를 어떻게 공유할 것인가였습니다.

조직이 커지면서 계정이 분리되고(Multi Account), 데이터를 생산하는 팀과 소비하는 팀이 나뉘다 보니
“어디까지 열어줘야 하는지”,
“누가 어떤 방식으로 접근하는지”를 관리하는 게 점점 어려워졌습니다.

그동안 여러 방식의 데이터 공유를 경험했고,
시행착오도 꽤 겪으면서 각 방식의 장단점이 분명해졌습니다.

이에 회사 상황에 맞는 데이터 공유 방식을 시스템화하기에 앞서,
먼저 개념과 선택 기준을 리마인드겸 정리해 보고자 합니다.

목표

  • 데이터 조회 시 권한 체크 흐름을 보고 권한 문제가 발생하는 지점을 이해합니다.
  • 데이터를 공유하는 방법들과 각 방법들의 흐름을 이해합니다.
  • 각 방법들을 살펴보고 적합한 데이터 공유 방법을 선택 할 수 있게 됩니다.

설명

데이터 공유 방법의 종류와 기준

여기서 말하는 데이터는 Glue Catalog에 등록된 테이블 (스키마 또는 테이블 데이터) 을 의미합니다.

데이터는 “무엇을 공유할 것인가”와 “어디까지 통제할 것인가”에 따라 선택이 달라집니다.

- 기본적으로 LakeFormation(LF)으로 관리하고 예외 상황만 따로 관리가 효과가 큼

AWS 데이터레이크 환경에서 데이터 공유는 크게 세 가지으로 나눌 수 있습니다.

1. 빠르게 데이터 파일만 공유: S3/IAM

2. 스키마,테이블까지 공유: Glue Data Catalog

3. (권장) 아니야 위의 것을 안하고 한번에 공유하고 관리: LakeFormation


데이터 조회 시 권한 체크 동작 흐름

  • 큰 흐름은 다음과 같습니다.

사용자의 데이터 조회

- Athena 쿼리로 테이블 접근
- Glue ETL이 Catalog 테이블을 입력으로 읽는 경우
- EMR/Redshift Spectrum이 Catalog 테이블을 참조하는 경우
- boto3를 통한 Athena, Glue, EMR, Redshift 에서 Catalog 테이블을 접근

Lake Formation 으로 관리 한다는 것은...

  • Lake Formation 에서 Data lake location에 S3 데이터 위치(버킷/프리픽스)를 등록하는 것
  • 등록된 S3 위치를 가리키는 Glue Data Catalog 객체(데이터베이스/테이블) 에 대해 Lake Formation 권한 모델이 적용됩니다.
  • 등록 시 지정한 IAM 역할을 Lake Formation이 assume 해서, 통합 서비스 (Athena/EMR/Glue 등)에 임시 자격 증명(credential vending) 을 발급
  • 등록한 경로 아래 하위 폴더까지 관리 범위에 포함
  • Hybrid access mode로 등록하면, Data Catalog의 일부 데이터베이스/테이블만 LakeFormation 권한을 적용하는 식으로 점진적 전환이 가능

예시로 이해하기

예제 상황

  • Producer / 데이터레이크 Account A
    • S3에 데이터를 저장
    • Glue Data Catalog에 메타데이터를 관리
  • Consumer / 분석팀 Account B
    • 공유받은 데이터를 Athena/Glue/ETL 등으로 활용

빠르게 데이터만 공유: S3 / IAM

가장 기본적인 방식으로, S3 객체 자체만 공유하는 구조입니다.

특징

  • 버킷 정책 + 소비 계정 IAM 권한으로 S3 접근 허용
  • 소비 계정에서 공유 받은 데이터의 메타정보인 직접 테이블을 생성해야 함
  • Glue Catalog 메타데이터는 공유되지 않음

인지해야 할 사항

  • 빠르게 데이터만 열어줘야 할 때 가장 적합하지만
  • 데이터만 공유를 받으니 스키마 동기화를 위해서는 glue crawler를 사용하거나 기타 보완이 필요.

구체적인 적용 흐름

1. Producer(AccountA)
- 공유할 S3 버킷/프리픽스 확인
- bucket에 정책에 Consumer(Account B) 접근 허용 추가
- (암호화 사용 시) KMS Key 정책에 Consumer 허용 추가
 
2. Consumer(AccountB)
- 사용할 IAM Role/User에 S3 Read 권한 부여
- Glue Data Catalog에 직접 테이블 생성 또는 Crawler로 스키마 생성
- Athena/Glue/EMR에서 생성한 테이블로 조회 시작

스키마·테이블까지 공유: Glue Data Catalog

데이터뿐 아니라 테이블 정의(스키마) 까지 함께 공유하는 방식입니다.

특징

  • 데이터 소유 Account의 Glue Data Catalog에 리소스 정책 설정
  • 소비 Account는 Athena에서 외부 DataCatalog로 등록
  • ownerCatalog.db.table 형태로 테이블 쿼리 가능

인지해야 할 사항

  • Glue Catalog 권한 확인 후
    - S3 접근은 S3/IAM 정책으로 별도 검사

구체적인 적용 흐름

1. Producer(Account A)
- 공유할 DB/테이블 대상 확정
- Data Catalog Resource Policy에 Consumer(Account B) 권한 추가
- 공유할 S3 버킷/프리픽스 확인
- bucket에 정책에 Consumer(Account B) 접근 허용 추가
 
2. Consumer(Account B)
- Consumer IAM Role/User에 Account A에게 받은 Glue 권한 부여
- lakeformation 에서 외부 Data Catalog 등록
- producerCatalog.db.table 형태로 쿼리 가능

아니야 위의 것을 안하고 LF 하나로 둘다 한꺼번에 공유하고 관리: LakeFormation (권장)

데이터레이크 전용 거버넌스 서비스인 Lake Formation에서 Data location을 활용하는 방식입니다.

특징

  • DB / 테이블 단위 권한 관리
  • 행(row) / 열(column) 단위 접근 제어 가능
  • AWS RAM 초대 수락 + Resource Link 생성 필요

장점

  • 데이터 접근을 정책 중심으로 관리 가능
  • 계정/역할/사용자 단위로 세밀한 통제 가능

구체적인 적용 흐름

1. Producer(Account A)
- 기존 Glue 테이블 점검
  등록할 S3 경로의 DB/테이블 확인
- Lake Formation Data lake location 등록
  S3 경로 선택
  LF가 assume할 IAM Role 지정
  필요 시 Hybrid access mode 체크
  (Hybrid access mode에는 기존 IAM 접근 유지 vs LF 적용 대상 분리)
- Lake Formation에서 DB/테이블 권한 부여
  Consumer 계정/ORG/OU에 Grant
- AWS RAM 공유 초대 생성
  Consumer 계정에 리소스 공유 초대 전달
- (Hybrid 사용 시) LF 적용 대상 opt-in 설정
  "Make LF Permissions effective immediately" 사용 가능
  
2. Consumer(Account B)
- AWS RAM 콘솔에서 초대 수락
- Lake Formation에서 Resource Link 생성
- Resource Link 권한 부여
  Describe (Resource Link)
  Grant on target (원본 리소스)
- Consumer 내부 IAM Role/User 에 권한 위임
  (Hybrid 사용 시) opt-in 설정