[AWS] IAM vs Lakeformation 권한 관리 차이 정리
1. 프로젝트를 하면서 생긴 이슈 + 해결
IAM user에 아래와 같이 athena 및 glue 권한을 다 받았는데 database 및 table list 조회 불가
1) 기존에 받은 IAM 권한
[권한 및 정책]
lakeformation:GetDataAccess
lakeformation:GetMetadataAccess
athena:*
"glue:CreateDatabase",
"glue:UpdateDatabase",
"glue:DeleteDatabase",
"glue:GetDatabase",
"glue:GetDatabases",
"glue:CreateTable",
"glue:UpdateTable",
"glue:DeleteTable",
"glue:GetTable",
"glue:GetTables",
"glue:GetTableVersions",
"glue:CreatePartition",
"glue:BatchCreatePartition",
"glue:UpdatePartition",
"glue:DeletePartition",
"glue:BatchDeletePartition",
"glue:GetPartition",
"glue:GetPartitions",
"glue:BatchGetPartition",
"glue:CreateUserDefinedFunction",
"glue:UpdateUserDefinedFunction",
"glue:DeleteUserDefinedFunction",
"glue:GetUserDefinedFunction",
"glue:GetUserDefinedFunctions"
[리소스]
resource: *
[부여 대상]
솔루션이 설치 된 ec2에 붙은 role
[정책 및 권한]
AmazonAthenaFullAccess
AmazonS3FullAccess
[리소스]
resource: *
[부여 대상]
IAM User
2) 문제 해결을 위해 받은 권한
[서비스]
Lakeformation
[권한]
Database: Describe권한
Table: 권한부여받은 Database의 하위 모든 테이블 Describe, Select 권한
[부여 대상]
지급 받은 IAM User(계정명)
2. IAM(Identity and Access Management)
- AWS 리소스에 대한 액세스를 안전하게 제어할 수 있는 웹 서비스
- IAM을 사용하여 리소스를 사용하도록 인증(로그인) 및 권한 부여(권한 있음)된 대상을 제어
3. Lakeformation
- 데이터 레이크를 손쉽게 구축, 보안 설정, 관리할 수 있는 완전관리형 서비스
- 일반적으로 데이터 레이크를 생성하는 데 필요한 많은 복잡한 수동 단계를 간소화하고 자동화
- 이러한 단계에는 데이터를 수집, 정리, 이동 및 분류하고 해당 데이터를 분석 및 기계 학습에 안전하게 사용할 수 있도록 하는 것이 포함
- 사용자가 데이터 소스를 설정하기만 하면, lakeformation은 소스를 크롤링(Glue crawler)하여 데이터를 S3 데이터 레이크로 이동
- Glue와 IAM서비스를 사용
Lake Formation 포메이션은 IAM 권한 모델을 강화하는 자체 권한 모델을 제공합니다.
중앙에서 정의된 이 권한 모델을 사용하면 관계형 데이터베이스 관리 시스템 (RDMS) 과 마찬가지로 간단한 권한 부여(grant) 또는 취소(revoke) 메커니즘을 통해 데이터 레이크에 저장된 데이터에 세밀하게 액세스할 수 있습니다.
Lake Formation 권한은 모든 데이터 레이크 데이터셋에 대해 테이블,컬럼 레벨 적용되며, Amazon Athena, Amazon Redshift Spctrrum, Amazon QuickSight Enterprise Edition, Amazon EMR, AWS 분석 및 기계 학습 서비스 전반과 연동됩니다.
Lakeformation 수행 목록
- 데이터 레이크의 소스(S3)의 버킷과 path 등록 - S3권한 부여
- raw 데이터를 수집, 정제, 가공, 정리하는 데이터 프롤우의 관리
- 데이터 레이크에 존재하는 데이터와 데이터 소스에 대한 메타데이터를 가진 data catalog의 생성 및 관리
- 메타데이터와 데이터에 대한 접근 정책의 관리 및 적용
Lakeformation 구성 목록
1. Data Lake Location
데이터 레이크가 참조할 S3 Path 입력
2. Blueprint(청사진)
- 데이터 레이크에 데이터를 손쉽게 입수할 수 있도록 도와주는 데이터 관리 템플릿
- 사전 정의된 RDS, AWS Cloudtrail 로그와 같은 소스타입을 가진 몇 가지 blueprint를 제공
- blueprint로부터 시작해 사용자는 워크플로우를 생성
- 데이터 소스, 데이터 타겟, 스케쥴을 workflow를 설정하기 위한 input으로 받음
3. Workflow
- 연관된 AWS Glue jobs, crawler, trigger들의 묶음을 위한 컨테이너
- Lakeformation에서 생성할 수 있고, 워크플로우는 AWS glue 서비스에서 실행 됨
- workflow 의 상태를 하나의 개체로 트래킹 가능'
- workflow 정의 시, 사용자는 기반이 될 blueprint를 선택 할 수 있음
4. Data Catalog
- persistent metastore
- Data lake, data source, transform, target에 관한 메타 데이터 저장
- Data source와 target에 관련된 메타 데이터는 데이터베이스와 테이블의 형태를 가짐
- Glue Data Catalog에 저장된 메타데이터 정보를 불러옴
5. Data Lake Permissions
6. Data locations
특정 IAM User에게 부여할 레이크 내 S3 혹은ARNs 입력
Lake formation 사용에 필요한 IAM 권한
- IAM 정책에서 Resource 부분을 모든 리소스 * 로 대체
- Lake Formation을 통해서 권한을 받을 수 있도록 lakeformation:GetDataAccess,lakeformation:GetMetadataAccess 액션을 추가
- S3에 대한 접근 권한의 제어(Data Locations)도 Lake Formation에서 진행하기 때문에 해당 권한은 명시할 필요 없음
4. Lakeformation을 선택하는 이유
데이터 레이크에서 IAM을 이용하여 권한 관리를 한다면 개별 사용자 수에 따라 많은 정책을 생성해야 함
(사용자가 늘어날 경우 관리하기에 어려움)
▶resource 별, 사용자별 개별 권한의 정의가 어렵고, 테이블에 대한 쿼리 제한, 컬럼 제한과 같은 세분화된 접근 제어도 어려움
▶데이터와 테이블에 대한 세분화된 권한 관리를 별도로 제공함으로써 IAM을 단순화하고 보다 간편하게 접근 제어를 제공
▶Lake Formation을 이용할 경우, 관리자 1명이 거의 모든 것을 처리할 수 있게 됨
참조:
https://docs.aws.amazon.com/ko_kr/IAM/latest/UserGuide/introduction.html
https://docs.aws.amazon.com/ko_kr/lake-formation/latest/dg/what-is-lake-formation.html