AWS Lake formation Lab
1. IAM User 추가
- lk_test1 : AdministratorAccess
- lk_test2 : AdministratorAccess
2. Glue Catalog Database
2.1 데이터 확인
2.2 Database 생성
AWS Management Console → Lakeformation → DataCatalog, Database → Create Database
- database :
lk_db
- Use only IAM access control for new tables in this database :
비활성화
- 해당 옵션을 활성화 하게 된다면, IAM 정책을 통해 Glue 권한이 있을 경우 모든 데이터를 확인이 가능하기 때문에 데이터 권한 자체를 Lakeformation으로 이관시킬려면 해당 권한을 비활성화 해야한다.
3. Glue Crawler
3.1 Crawler 생성
Glue Crawler 를 통해 데이터를 Crawling 하여 Data Catalog로 생성.
AWS Management Console → Glue → DataCatalog 내 Crawlers → Create crawler
- crawler 이름 :
cr_lk_init_price
3.2 Datasource 추가
- S3 path :
s3://blee-lab/lakeformation/data/
- 나머지 내용은 그대로
3.3 Security
- IAM Role : GlueSerivceRole 정책을 가지고있는 Role 이면 됨. (미리 생성해놓게 있어서 그대로 수행)
- 나머지 항목은
디폴트
3.4 Output Setting
- Target database :
lk_db
- 위에서 생성한 Database
3.5 Run Crawler
3.6 테이블 및 데이터 확인
- 테이블명은 S3 내 폴더 Key를 따라감.
4. 사용자별 확인
lk_test1 로 테스트 진행
현재 lk_test1과 lk_test2는 동일한 권한임
4.1 해당 테이블 여부 확인
Athena를 통해 확인 결과 테이블 목록이 보이지 않음 → Lakeformation으로 권한 부여가 안되어있음.
데이터 조회
권한이 없어서 조회가 안되다는 에러 메세지
Glue Database 정보 조회
Glue 관련하여 스키마같은 정보 또한 권한이 없기 때문에 확인 불가
4.2 권한 부여
Lakeformation을 사용할 수 있는 master 계정으로 lk_test1 계정에 권한 부여 수행
AWS Management Console → Lakeformation → Permissions → Data Lake permissions 메뉴로 이동
- Principals
- IAM Users and roles :
lk_test1
- IAM Users and roles :
- LF-Tags or catalog resources
- Named data catalog resources 선택
- Databases :
lk_db
- Tables :
data
- Table permissions
- Table permissions :
Select, Describe
- Table permissions :
- Data Permissions :
All Data access
4.3 데이터 확인
4.3.1 Glue DataCatalog
새롭게 테이블이 추가 된 것을 확인할 수 있다.
4.3.2 Athena 데이터 조회
5. 심화 권한 관리
5.1 전제조건
lk_test1 사용자는
metal
이Gold
인 데이터만 확인이 가능하고
lk_test2 사용자는metal
이Iron
인 데이터와 radius 컬럼을 제외한 나머지만 사용이 가능하다.
5.2 권한 말소
이전에 lk_test1 에 부여되었던 권한은 말소 시켜야함
5.3 DataFilter
Row (행) 기반으로 데이터 Filter을 걸기 위해서는 Lakeformation에서 Data filters라는 메뉴에서 필터를 생성해야 한다.
AWS Management Console → Lakeformation 서비스 → Data catalog 내 Data filters
5.3.1 metal == Gold
- Data Filter Name :
MetalGold
- Target database :
lk_db
- Target table :
data
- Column-level access :
Access to all columns
, 컬럼은 전체 보여줘야하기 때문에 - Row filter expression :
metal = ‘Gold’
5.3.2 metal == Iron
- Data Filter Name :
MetalIron
- Target database :
lk_db
- Target table :
data
- Column-level access :
Exclude Columns
, radius 선택 (해당 컬럼은 제외 하기 위해서) - Row filter expression :
metal = ‘Iron’
5.4 권한 부여
4.2 권한 부여 와 동일 방법으로 부여 하나 Row Filter만 추가 하면 됨.
5.4.1 lk_test1
5.4.2 lk_test2
5.5 확인
5.5.1 lk_test1
Gold + 모든 컬럼만 확인 가능한 상태
5.5.2 lk_test2
Iron + radius 컬럼 제외 컬럼만 확인