IT/Data

[data] AWS Lake Formation & Redshift Spectrum

Hayley Shim 2023. 10. 28. 18:05

안녕하세요. AWS 권한 관리 서비스인 AWS Lake Formation과 Amazon Redshift 테이블에 로드하지 않고도 Amazon S3의 파일에서 정형 및 비정형 데이터를 효율적으로 쿼리하고 가져올 수 있는 Amazon Redshift Spectrum기술에 대해 간략히 정리했습니다

AWS Lake Formation을 통해 중앙에서 데이터베이스, 테이블 및 열 수준 액세스 정책을 정의하고 AWS S3에 저장된 데이터에 적용할 수 있습니다.

Lake Formation에서 사용할 수 있는 AWS Glue Data Catalog에 데이터를 등록한 후 Redshift Spectrum을 포함한 여러 서비스로 쿼리할 수 있습니다.

Lake formation 동작 프로세스 및 기능

Step 1. Data lake 형성 기능 : Amazon S3 등 기존 데이터 저장소를 식별하고 데이터를 데이터 레이크로 이동. 그런 다음 분석을 위해 데이터를 크롤링, 분류 및 준비

Step 2. 데이터 수집 및 관리 : AWS Glue 크롤러를 사용하여 Amazon S3에서 데이터를 읽고 데이터베이스 및 테이블 스키마를 추출하고 해당 데이터를 검색 가능한 AWS Glue 데이터 카탈로그에 저장. Lake Formation 태그 기반 액세스 제어 (TBAC)를 사용하여 데이터베이스, 테이블 및 열에 대한 권한을 관리

Step 3. 보안 관리 : 데이터베이스, 테이블, 열, 행 및 셀 수준에서 데이터에 대한 액세스를 제한하는 보안 정책을 정의. 이러한 정책은 IAM 사용자 및 역할에 적용되며, 외부 자격 증명 공급자를 통해 연합할 때 사용자 및 그룹에 적용. 세분화된 제어를 사용하여 Amazon Redshift Spectrum, Athena, AWS Glue ETL 및 Amazon EMR for Apache Spark 내에서 Lake Formation으로 보호되는 데이터에 액세스할 수 있음

참고 : data pipeline 시스템 구성 시,

  • glue 기동에 1분 이상 소요되어 빠르게 수행되어야 하는 건들은 묶어서 하나로 사용
  • 데이터 수집 및 정제 등의 job을 수행하기 위해 job schedule을 airflow(workflow management tool)로 하고 job 수행은 glue를 사용
  • 정제 전 데이터는 정제 작업 후 사용자들이 직접적으로 접근하지 않는 아카이브성 데이터들은 glacier로 이동하여 비용 최소화함
  • L0 데이터 업로드 시 타시스템의 업로드 데이터에 접근할 수 있으므로 사업부별로 bucket을 별도로 생성하고 IAM 및 Bucket Policy를 통해 Bucket별 데이터 업로드 권한을 제어함

Data lake 형성 기능

  • Data lake : Amazon S3에 저장되고 Data Catalog를 사용하여 Lake Formation에서 관리하는 영구 데이터
  • AWS Identity and Access Management(IAM) 정책을 강화하는 새로운 부여/취소 권한 모델을 통해 데이터에 대한 안전하고 세분화된 액세스를 제공
  • Blueprint : 데이터를 Data lake로 쉽게 수집할 수 있게 해주는 데이터 관리 템플릿
  • Workflow : Lake Formation에서 워크플로를 생성하면 AWS Glue 서비스에서 실행됨
  • Data catalog : 영구 메타데이터 저장소. Lake Formation은 데이터 카탈로그의 데이터베이스 및 테이블에 대한 액세스를 제어할 수 있는 권한 계층을 제공
  • Data lake 관리자 : 데이터 레이크 관리자는 모든 데이터 카탈로그 리소스 또는 데이터 위치에 대한 권한을 모든 보안 주체(자신 포함)에게 부여할 수 있는 보안 주체(IAM 관리 사용자( AdministratorAccess)는 자동으로 데이터 레이크 관리자가 아님. 예를 들어 권한이 부여되지 않은 경우 카탈로그 개체에 대한 Lake Formation 권한을 부여할 수 없음)

설정 [참고]

Workflow에 대한 IAM 역할 생성

  • AWS Lake Formation을 사용하면 AWS Glue 크롤러가 실행하는 워크플로를 사용하여 데이터를 가져올 수 있음. 워크플로우는 데이터를 데이터 레이크로 가져오기 위한 데이터 원본 및 일정을 정의

워크플로에 대한 IAM 역할을 생성하려면

  1. AWS 관리형 정책(AdministratorAccess)이 있는 사용자로 로그인합니다.
  2. 역할 생성을 선택합니다.
  3. 역할 생성 페이지에서 AWS 서비스 를 선택한 다음 Glue 를 선택합니다.
  4. 권한 추가 페이지에서 AWSGlueServiceRole 관리형 정책을 검색 하고 목록에서 정책 이름 옆에 있는 확인란을 선택합니다. 역할 이름(LakeFormationWorkflowRole)을 지정합니다.
  5. 역할 요약 페이지 의 권한 탭에서 인라인 정책 생성을 선택합니다 .
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                 "lakeformation:GetDataAccess",
                 "lakeformation:GrantPermissions"
             ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": ["iam:PassRole"],
            "Resource": [
                "arn:aws:iam::<account-id>:role/LakeFormationWorkflowRole"
            ]
        }
    ]
}
  • lakeformation:GetDataAccess워크플로에서 생성된 작업을 대상 위치에 쓸 수 있습니다.
  • lakeformation:GrantPermissions워크플로에서 대상 테이블에 대한 권한을 부여할 수 있습니다.
  • iam:PassRole서비스가 크롤러 및 작업(워크플로의 인스턴스)을 생성하는 역할을 수임 LakeFormationWorkflowRole하고 생성된 크롤러 및 작업에 역할을 연결할 수 있도록 합니다.

데이터 레이크 관리자 만들기

  • 데이터 레이크 관리자는 처음에 데이터 위치 및 Data Catalog 리소스에 대한 Lake Formation 권한을 보안 주체(자신 포함)에게 부여할 수 있는 유일한 AWS Identity and Access Management(IAM) 사용자 또는 역할

데이터 레이크 관리자를 생성하려면

  1. 다음 AWS 관리형 정책을 사용자에게 연결합니다.
  • 필수 : AWSLakeFormationDataAdmin
  • 선택 : AWSGlueConsoleFullAccess, CloudWatchLogsReadOnlyAccess, AWSLakeFormationCrossAccountManager, AmazonAthenaFullAccess

2. Lake Formation 서비스 연결 역할을 생성할 수 있는 Data Lake 관리자 권한을 부여하는 다음 인라인 정책을 연결합니다.

  • LakeFormationSLR
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "iam:CreateServiceLinkedRole",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "iam:AWSServiceName": "lakeformation.amazonaws.com"
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": [
                "iam:PutRolePolicy"
            ],
            "Resource": "arn:aws:iam::<account-id>:role/aws-service-role/lakeformation.amazonaws.com/AWSServiceRoleForLakeFormationDataAccess"
        }
    ]
}

3. (선택) 다음 PassRole인라인 정책을 사용자에게 연결합니다. 이 정책을 사용하면 데이터 레이크 관리자가 워크플로를 만들고 실행할 수 있습니다.

  • UserPassRole
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "PassRolePermissions",
            "Effect": "Allow",
            "Action": [
                "iam:PassRole"
            ],
            "Resource": [
                "arn:aws:iam::<account-id>:role/LakeFormationWorkflowRole"
            ]
        }
    ]
}

4. (선택) 계정이 교차 계정 Lake Formation 권한을 부여하거나 받는 경우 이 추가 인라인 정책을 첨부합니다.

  • RAMAccess
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ram:AcceptResourceShareInvitation",
                "ram:RejectResourceShareInvitation",
                "ec2:DescribeAvailabilityZones",
                "ram:EnableSharingWithAwsOrganization"
            ],
            "Resource": "*"
        }
    ]
}

5. AWS Lake Formation 콘솔을 엽니다.

6. Welcome to Lake Formation 창이 나타나면 1단계에서 생성하거나 선택한 IAM 사용자를 선택한 다음 시작하기를 선택합니다 .

7. 탐색 창의 권한 아래에서 관리 역할 및 작업을 선택합니다 . 콘솔 페이지의 Data Lake 관리자 섹션 에서 관리자 선택을 선택합니다 .

8. 데이터 레이크 관리자 관리 대화 상자 의 IAM 사용자 및 역할 에 대해 1단계에서 생성하거나 선택한 IAM 사용자를 선택한 다음 저장을 선택합니다 .

기본 권한 모델 변경

Lake Formation은 기존 AWS Glue 데이터 카탈로그 동작과의 호환성을 위해 활성화된 “IAM 액세스 제어만 사용” 설정으로 시작합니다. Lake Formation 권한으로 세분화된 태그 기반 액세스 제어를 활성화하려면 이러한 설정을 비활성화하는 것이 좋습니다.

기본 Data Catalog 설정을 변경하려면

  1. AWS 관리형 정책이 있는 사용자로 로그인했는지 확인합니다

2. 데이터 카탈로그 설정을 수정합니다.

3. 데이터베이스 작성자에 대한 권한(IAMAllowedPrincipals)을 취소합니다.

Lake Formation 사용자에게 권한 할당

  1. 사용자 또는 사용자 그룹을 선택하고 목록에서 정책을 포함할 사용자 또는 그룹의 이름을 선택합니다. 권한을 선택합니다 .
  2. 권한 추가를 선택하고 정책 직접 연결을 선택합니다. 필터 정책 텍스트 필드에 Athena 를 입력하여 AmazonAthenaFullAccess 목록에서 확인란을 선택합니다.
  3. 정책 생성 버튼을 선택한 후 아래 정책을 생성합니다.
  • DatalakeUserBasic
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "lakeformation:GetDataAccess",
                "glue:GetTable",
                "glue:GetTables",
                "glue:SearchTables",
                "glue:GetDatabase",
                "glue:GetDatabases",
                "glue:GetPartitions",
                "lakeformation:GetResourceLFTags",
                "lakeformation:ListLFTags",
                "lakeformation:GetLFTag",
                "lakeformation:SearchTablesByLFTags",
                "lakeformation:SearchDatabasesByLFTags"
            ],
            "Resource": "*"
        }
    ]
}

데이터 레이크에 대한 Amazon S3 위치 구성

  • Lake Formation을 사용하여 데이터 레이크의 데이터를 관리하고 보호하려면 먼저 Amazon S3 위치를 등록해야 합니다.
  • 위치를 등록하면 해당 Amazon S3 경로와 해당 경로 아래의 모든 폴더가 등록되어 Lake Formation이 스토리지 수준 권한을 적용할 수 있습니다.
  • 위치를 등록할 때 해당 위치에 대한 읽기/쓰기 권한을 부여하는 IAM 역할을 지정합니다. Lake Formation은 등록된 Amazon S3 위치의 데이터에 대한 액세스를 요청하는 통합 AWS 서비스에 임시 자격 증명을 제공할 때 해당 역할을 맡습니다.
  • Lake Formation 서비스 연결 역할(SLR)을 지정하거나 자체 역할을 생성할 수 있습니다. 사용자 정의 역할 — 다른 AWS 계정에 Amazon S3 위치 등록 단원을 참조

관리 테이블 및 행 수준 보안 사용 준비

  • Lake Formation 관리 테이블, 행 수준 필터링 및 스토리지 최적화 기능을 사용하려면 추가 구성이 필요합니다.

관리 테이블 사용 준비

  • Lake Formation에서 관리되는 테이블을 생성하려면 먼저 데이터 레이크에 대한 Amazon S3 위치 구성에서 설명한 대로 Lake Formation에 Amazon S3 위치를 등록하고 필요한 모든 권한이 포함된 역할을 지정해야 합니다. 그런 다음 관리 테이블과 상호 작용할 사용자 또는 역할에 권한을 부여해야 합니다. 관리되는 테이블을 만들려면 사용자는 데이터 레이크 관리자이거나 다음 권한이 있는 사용자여야 합니다.
lakeformation:StartQueryPlanning
lakeformation:GetQueryState
lakeformation:GetWorkUnits 
lakeformation:GetWorkUnitResults 
lakeformation:StartTransaction 
lakeformation:CommitTransaction 
lakeformation:CancelTransaction
lakeformation:ExtendTransaction
  • Amazon S3 위치를 등록한 후 다음 Lake Formation 권한 부여를 시작할 수 있습니다. (해당 위치를 가리키는 데이터 카탈로그 테이블에 대한 데이터 액세스 권한, 해당 위치에 대한 데이터 위치 권한)

관리되는 테이블을 생성하고 사용하기 위해 사용자에게 역할을 생성하고 할당하려면

  1. AWS 관리형 정책(AdministratorAccess)이 있는 사용자로 로그인합니다.
  2. 역할 생성을 선택합니다.
  3. 권한 추가 섹션 에서 정책 생성을 선택합니다 .
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "glue:GetTable", 
                "glue:GetPartitions",
                "glue:UpdateTable"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "lakeformation:StartQueryPlanning",
                "lakeformation:GetQueryState", 
                "lakeformation:GetWorkUnits", 
                "lakeformation:GetWorkUnitResults",
                "lakeformation:GetQueryStatistics",
                "lakeformation:StartTransaction",
                "lakeformation:CommitTransaction",
                "lakeformation:CancelTransaction",
                "lakeformation:ExtendTransaction",
                "lakeformation:DescribeTransaction",
                "lakeformation:ListTransactions",
                "lakeformation:GetTableObjects",
                "lakeformation:UpdateTableObjects",
                "lakeformation:DeleteObjectsOnCancel"
            ],
            "Resource": "*"
        }
    ]
}

4. 역할 생성 페이지 에서 새로 고침 버튼을 선택한 다음 LakeFormationGovernedTables이전 단계에서 생성한 정책을 검색합니다 . 목록에서 정책 이름 옆의 확인란을 선택합니다.

5. 검토 페이지 에 도달할 때까지 다음을 선택하여 역할 만들기 마법사를 완료합니다 . 와 같은 역할 이름을 입력합니다 . 완료하려면 역할 생성을 선택합니다 .LakeFormationTransactionsRole

6. 역할 페이지 로 돌아가서 LakeFormationTransactionsRole역할 이름을 검색 하고 선택합니다.

7. 역할 요약 페이지의 권한 탭에서 역할에 LakeFormationGovernedTables정책이 연결되어 있는지 확인합니다.

관리 테이블과 함께 자동 데이터 압축 사용 준비

관리 테이블에 대한 데이터 압축을 구성하려면 보안 주체가 다음 조건을 충족해야 합니다.

  • 테이블을 생성한 사용자이거나 데이터 레이크 관리자 사용자여야 합니다.
  • 테이블에 대한 glue:UpdateTable, glue:GetTable및 Lake Formation 권한이 있어야 합니다.

또한 Amazon S3 데이터 레이크 위치를 Lake Formation에 등록할 때 사용되는 역할에는 데이터 압축을 사용할 수 있는 다음 권한이 포함되어야 합니다.

  • s3:PutObject, lakeformation:UpdateTableObjects
  • lakeformation:StartTransaction, lakeformation:CommitTransaction, lakeformation:CancelTransaction, lakeformation:DeleteObjectsOnCancellogs:CreateLogGroup, logs:CreateLogStream, logs:PutLogEvents, "arn:aws:logs:*:*<**ACCOUNT ID**>*:log-group:/aws-lakeformation-acceleration/compaction/logs:*"

행 수준 보안 사용 준비

Data Catalog 테이블에 대한 Lake Formation 권한을 부여할 때 데이터 필터링 사양을 포함하여 쿼리 결과 및 AWS Glue ETL 작업 내에서 특정 데이터에 대한 액세스를 제한할 수 있습니다. Lake Formation은 데이터 필터링을 사용하여 열 수준 보안, 행 수준 보안 및 셀 수준 보안을 달성합니다.

테이블에 대한 행 수준 보안을 구성하려면

  1. 액세스를 제한할 콘텐츠를 식별하고 데이터 필터를 만듭니다. 데이터 필터를 만드는 방법에 대한 지침은 데이터 필터 만들기를 참조하십시오 .
  • Data Catalog 테이블에 대한 데이터 필터를 생성하려면
  • Lake Formation 콘솔을 열고 데이터 레이크 관리자, 대상 테이블 소유자 또는 대상 테이블에 대한 Lake Formation 권한이 있는 보안 주체로 서명합니다.
  • 탐색 창의 데이터 카탈로그 아래에서 데이터 필터를 선택합니다 .
  • 데이터 필터 페이지 에서 새 필터 생성을 선택합니다 .
  1. DESCRIBE데이터 필터를 볼 수 있는 사용자에게 데이터 필터에 대한 권한을 부여합니다. 데이터 필터를 생성하면 본인만 볼 수 있습니다. 다른 보안 주체가 데이터 필터를 보고 사용하도록 허용하려면 DESCRIBE해당 권한을 부여하면 됩니다.
  2. 보안 주체에게 테이블에 대한 Lake Formation 권한을 부여할 때 데이터 필터를 지정합니다.
  3. 셀 수준 필터를 사용하여 테이블을 쿼리할 보안 주체에 IAM 권한을 할당합니다. 셀 수준 필터링을 사용하여 테이블을 쿼리하는 보안 주체는 다음 IAM 권한이 있어야 합니다.
lakeformation:StartQueryPlanning
                    lakeformation:GetQueryState
                    lakeformation:GetWorkUnits
                    lakeformation:GetWorkUnitResults

Lake formation 액세스 제어

AWS Lake Formation의 액세스 제어는 다음 두 영역으로 나뉩니다.

  • 메타데이터 액세스 제어 — Data Catalog 리소스에 대한 권한( Data Catalog 권한 ).
  • 기본 데이터 액세스 제어 — Amazon Simple Storage Service(Amazon S3)의 위치에 대한 권한( 데이터 액세스 권한  데이터 위치 권한 ).

두 영역 모두에서 Lake Formation은 Lake Formation 권한과 AWS Identity and Access Management(IAM) 권한의 조합을 사용합니다. IAM 권한 모델은 IAM 정책으로 구성됩니다. Lake Formation 권한 모델은 Grant SELECT on tableName to userName 형식으로 구성합니다.

<AWS Lake Formation의 액세스 제어>

기본 데이터 액세스 제어

  • AWS Lake Formation에서 액세스를 제어하는 ​​Amazon S3 위치의 데이터에 대한 액세스를 요청하면 Lake Formation은 데이터에 액세스하기 위한 임시 자격 증명을 제공합니다.
  • Lake Formation이 Amazon S3 위치에서 기본 데이터에 대한 액세스를 제어할 수 있도록 하려면 해당 위치를 Lake Formation에 등록합니다 .
  • Lake Formation 권한은 세분화된 액세스 제어를 위해 항상 AWS Identity and Access Management(IAM) 권한과 함께 작동합니다. 기본 Amazon S3 데이터에 대한 읽기/쓰기 권한의 경우 IAM 권한은 다음과 같이 부여됩니다.
  • 위치를 등록할 때 해당 위치에 대한 읽기/쓰기 권한을 부여하는 IAM 역할을 지정합니다. Lake Formation은 통합 AWS 서비스에 임시 자격 증명을 제공할 때 해당 역할을 맡습니다.
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:PutObject",
                "s3:GetObject",
                "s3:DeleteObject"
            ],
            "Resource": [
                "arn:aws:s3:::awsexamplebucket/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:ListBucket"
            ],
            "Resource": [
                "arn:aws:s3:::awsexamplebucket"
            ]
        }
    ]
}

요약하면 Lake Formation 보안 주체가 Lake Formation 권한으로 제어되는 액세스 권한으로 기본 데이터를 읽고 쓸 수 있도록 하려면

  • 데이터가 포함된 Amazon S3 위치는 Lake Formation에 등록되어야 합니다.
  • 기본 데이터 위치를 가리키는 데이터 카탈로그 테이블을 생성하는 보안 주체는 데이터 위치 권한이 있어야 합니다.
  • 기본 데이터를 읽고 쓰는 보안 주체는 기본 데이터 위치를 가리키는 Data Catalog 테이블에 대한 Lake Formation 데이터 액세스 권한이 있어야 합니다.
  • 기본 데이터를 읽고 쓰는 보안 주체는 lakeformation:GetDataAccessIAM 권한이 있어야 합니다.

s3 데이터로 Data Catalog table 생성

데이터 수집 및 관리

— AWS Identity and Access Management(IAM) 권한 glue:CreateTable

— 데이터 위치 권한 부여에 설명된 대로 Lake Formation의 데이터 위치 권한 . 데이터 위치 권한은 특정 Amazon S3 위치를 가리키는 데이터 카탈로그 리소스를 생성하거나 변경하는 기능을 제어합니다.

관리되는 테이블을 생성하고 사용하기 위해 사용자에게 역할을 생성하고 할당하려면

  1. AWS 관리형 정책(AdministratorAccess)이 있는 사용자로 로그인합니다.
  2. 역할 생성을 선택합니다.
  3. 권한 추가 섹션 에서 정책 생성을 선택합니다 .
  • LakeFormationGovernedTables
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "glue:GetTable", 
                "glue:GetPartitions",
                "glue:UpdateTable"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "lakeformation:StartQueryPlanning",
                "lakeformation:GetQueryState", 
                "lakeformation:GetWorkUnits", 
                "lakeformation:GetWorkUnitResults",
                "lakeformation:GetQueryStatistics",
                "lakeformation:StartTransaction",
                "lakeformation:CommitTransaction",
                "lakeformation:CancelTransaction",
                "lakeformation:ExtendTransaction",
                "lakeformation:DescribeTransaction",
                "lakeformation:ListTransactions",
                "lakeformation:GetTableObjects",
                "lakeformation:UpdateTableObjects",
                "lakeformation:DeleteObjectsOnCancel"
            ],
            "Resource": "*"
        }
    ]
}

4. 역할 페이지로 돌아가서 LakeFormationTransactionsRole역할을 생성하고 LakeFormationGovernedTables 정책을 연결합니다.

Lake Formation과 Redshift Spectrum 사용

두 서비스 간 동작의 이해를 돕기 위해 튜토리얼: Lake Formation 내 JDBC 소스에서 데이터 레이크 생성 을 참고하였습니다.

  • Lake Formation을 데이터 레이크의 모든 데이터에 대한 권한 및 액세스 제어 정책을 부여하고 취소하는 중앙 위치로 사용합니다. Lake Formation은 Data Catalog의 데이터베이스 및 테이블에 대한 액세스를 제어하기 위한 권한 계층을 제공합니다. 자세한 내용은 AWS Lake Formation 개발자 안내서의 Lake Formation 권한 개요를 참조하세요
  • 외부 테이블을 만들고 데이터 레이크의 데이터에 대한 쿼리를 실행합니다. 계정의 사용자가 쿼리를 실행할 수 있으려면 먼저 데이터 레이크 계정 관리자가 원본 데이터가 포함된 기존 Amazon S3 경로를 Lake Formation에 등록해야 합니다. 또한 관리자는 테이블을 만들고 사용자에게 권한을 부여합니다. 데이터베이스, 테이블 또는 열에 대한 액세스 권한을 부여할 수 있습니다. 관리자는 Lake Formation Formation의 데이터 필터를 사용하여 Amazon S3 저장된 민감한 데이터에 대한 액세스 제어를 세분화하여 부여할 수 있습니다. 자세한 내용은 행 수준 및 셀 수준 보안을 위한 데이터 필터 사용 섹션을 참조하세요.
  • 데이터가 Data Catalog에 등록되면 사용자가 쿼리를 실행하려고 할 때마다 Lake Formation이 해당 특정 보안 주체의 테이블 액세스를 확인합니다. Lake Formation이 Redshift Spectrum에 임시 자격 증명을 전송하고 쿼리가 실행됩니다.

Lake Formation에 대해 활성화된 데이터 카탈로그와 함께 Redshift Spectrum을 사용하는 경우

계정의 사용자가 쿼리를 실행할 수 있으려면,

  1. 먼저 데이터 레이크 계정 관리자가 원본 데이터가 포함된 기존 Amazon S3 경로를 Lake Formation에 등록해야 함
  2. 관리자는 테이블을 만들고 사용자에게 권한을 부여함
  3. 데이터베이스, 테이블 또는 열에 대한 액세스 권한을 부여할 수 있음

열 권한 제어

(참고 : 행 수준 및 셀 수준 보안을 위한 데이터 필터 사용)

데이터가 Data Catalog에 등록되면 사용자가 쿼리를 실행하려고 할 때마다 Lake Formation이 해당 특정 보안 주체의 테이블 액세스를 확인합니다.

Redshift Spectrum을 통한 쿼리 실행

쿼리문 참고

create external schema if not exists redshift_jdbc from DATA CATALOG database 'lakeformation_tutorial' iam_role 'arn:aws:iam::<account-id>:role/RedshiftLakeFormationRole' region '<region>';

참고

AWS Lake Formation Workshop

 

AWS Lake Formation Workshop

A workshop to explore how to use AWS Lake Formation to build, secure, and manage data lake on AWS.

catalog.us-east-1.prod.workshops.aws

 

blog migration project

written in 2023.3.31

https://medium.com/techblog-hayleyshim/bigdata-aws-lake-formation-redshift-spectrum-a02efe41be2