Platform/AWS

AWS - Lakeformaiton 설정

wave35 2023. 3. 31. 13:52

 

Glue Data Catalog를 통해 DB, Table을 관리하던 내용을

LakeFormation을 통하면 한번에 관리가 가능하다.

 

Cloutrail을 통하여 로그 조회,

IAM유저마다 각각 테이블 공유 및 테이블 권한(읽기&쓰기) 설정을 

세세하게 할 수 있다.

 

또한 Organization을 통해 조직내의 Athena 테이블들에 대해

교차계정 공유를 할 수도 있는 등

여러 관리 포인트를 줄일 수 있다.

 

초기 설정은 아래와 같다.

 

[ Setting 체크박스 해제 ]

 

 

[ Admin 계정 등록 ]

Choose administrators 버튼을 클릭하여 관리자 유저를 등록한다.

 

 

[ Databases ]

데이터베이스가 공유 될 시, 해당 체크박스가 해제가 안되어있으면

아래와 같은 Grant permissions failed 에러가 일어날 수 있다.

 

[ S3 등록 ]

lakeformation은 S3 버킷 정책과는 별개로 Iam유저별로 권한을 부여한다.

따라서 공유하여 관리할 S3 버킷을 등록한다.

 

 

[ S3 권한 설정 ]

이전 단계에서 S3를 Lakeformation에 등록하여 인식을 시켰다면

IAM 유저에게 권한을 주어 접근 가능하게 한다.

Grant 버튼을 클릭해 S3에 권한을 줄 IAM유저를 설정한다.

Athena테이블에 권한을 주었다하더라도,

데이터가 저장되어있는 S3에도 권한이 있어야 데이터를 읽을 수 있다.

 

 

[ 테이블 권한 설정 ]

혹시 초기 설정시 IAMAllowedPrincipals 권한이 있다면

추후 외부계정의 테이블과 공유시 문제가 될 수 있어 삭제한다.

 

이후 Grant를 누른 후

아래 이미지의 Select박스를 통해 IAM유저에게 공유하고 싶은 테이블을 공유한다. 

IAM유저 뿐만 아니라 Roles, Group에 대해서도 개별적으로 테이블 공유가 가능하다.

예를 들어 람다함수 AA를 통해서만 아테나테이블 BB에 대해 쿼리실행을 하고 싶다면

Lakeformation을 통해 람다함수 AA를 실행하는 Roles AZ에게만 테이블 BB에 대한 권한을 주는 방식으로 활용된다.

 

공유할 db, table을 선택 한 후 Table permissions를 지정한다.

Grantable permissions는 다른 유저에게 공유할 수 있는 권한을 양도할 수 있게 해주며 

내부 IAM 유저에게 공유시는 아무것도 체크하지 않아도 무관하다.

아래는 Select권한만 설정하는 예시임에도 Describe를 체크해주어야 한다. 

 

Resources matched by LF-Tags는 태그를 통해 공유하는 방법인데 자세한 설정은 아래와 같다.

태그기반 엑세스 제어 : 

https://docs.aws.amazon.com/ko_kr/lake-formation/latest/dg/tag-based-access-control.html

 

이후 설정된 테이블들이 제대로 공유되어있는지 확인한다.

 

 

참조 : 

https://docs.aws.amazon.com/ko_kr/lake-formation/latest/dg/getting-started.html