기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
세분화된 액세스 제어를 AWS Lake Formation 위해에서 EMR Serverless 사용
개요
Amazon EMR 릴리스 7.2.0 이상을 사용하면 AWS Lake Formation 를 활용하여 S3에서 지원하는 데이터 카탈로그 테이블에 세분화된 액세스 제어를 적용할 수 있습니다. 이 기능을 사용하면 Amazon EMR Serverless Spark 작업 내에서 read 쿼리에 대한 테이블, 행, 열 및 셀 수준 액세스 제어를 구성할 수 있습니다. Apache Spark 배치 작업 및 대화형 세션에 대한 세분화된 액세스 제어를 구성하려면 EMR Studio를 사용합니다. Lake Formation 및 EMR Serverless와 함께 사용하는 방법에 대해 자세히 알아보려면 다음 섹션을 참조하세요.
Amazon EMR Serverless를와 함께 사용하면 추가 요금이 AWS Lake Formation 발생합니다. 자세한 내용은 Amazon EMR 요금
EMR Serverless에서 AWS Lake Formation과의 작동 방식
EMR Serverless를 Lake Formation과 함께 사용하면 EMR Serverless에서 작업을 실행하는 경우 Lake Formation 권한 제어를 적용하기 위해 각 Spark 작업에 권한 계층을 적용할 수 있습니다. EMR Serverless는 Spark 리소스 프로파일
Lake Formation에서 사전 초기화된 용량을 사용하는 경우 최소 2개의 Spark 드라이버를 사용하는 것이 좋습니다. Lake Formation이 활성화된 각 작업에는 사용자 프로파일과 시스템 프로파일에 대해 하나씩, 두 개의 Spark 드라이버가 사용됩니다. 최상의 성능을 위해 Lake Formation을 사용하지 않는 경우와 비교하여 Lake Formation 지원 작업에 대해 2배의 드라이버 수를 사용해야 합니다.
EMR Serverless에서 Spark 작업을 실행하는 경우 동적 할당이 리소스 관리 및 클러스터 성능에 미치는 영향도 고려해야 합니다. 리소스 프로파일당 최대 실행기 수의 spark.dynamicAllocation.maxExecutors
구성은 사용자 및 시스템 실행기 모두에 적용됩니다. 이 숫자를 허용되는 최대 실행기 수와 같도록 구성하면 사용 가능한 모든 리소스를 사용하는 한 가지 유형의 실행기로 인해 작업 실행이 중단될 수 있으며, 이로 인해 작업 실행 시 다른 실행기가 작동하지 않습니다.
따라서 리소스가 부족하지 않도록 EMR Serverless는 리소스 프로파일당 기본 최대 실행기 수를 spark.dynamicAllocation.maxExecutors
값의 90%로 설정합니다. 0에서 1 사이의 값으로 spark.dynamicAllocation.maxExecutorsRatio
를 지정하는 경우 이 구성을 재정의할 수 있습니다. 또한 리소스 할당 및 전체 성능을 최적화하도록 다음 속성을 구성할 수도 있습니다.
-
spark.dynamicAllocation.cachedExecutorIdleTimeout
-
spark.dynamicAllocation.shuffleTracking.timeout
-
spark.cleaner.periodicGC.interval
다음은 Amazon EMR Serverless가 Lake Formation 보안 정책에 따라 보호되는 데이터에 액세스하는 방법에 대한 개략적인 개요입니다.

-
사용자가 Spark 작업을 AWS Lake Formation활성화된 EMR Serverless 애플리케이션에 제출합니다.
-
EMR Serverless는 사용자 드라이버로 작업을 전송하고 사용자 프로파일에서 작업을 실행합니다. 사용자 드라이버는 태스크를 시작하고, 실행기를 요청하며, S3 또는 Glue Catalog에 액세스할 수 없는 린 버전의 Spark를 실행합니다. 작업 계획을 빌드합니다.
-
EMR Serverless는 시스템 드라이버라는 두 번째 드라이버를 설정하고 시스템 프로파일(권한 있는 자격 증명 포함)에서 실행합니다. EMR Serverless는 통신을 위해 두 드라이버 사이에서 암호화된 TLS 채널을 설정합니다. 사용자 드라이버는 채널을 사용하여 작업 계획을 시스템 드라이버로 전송합니다. 시스템 드라이버는 사용자가 제출한 코드를 실행하지 않습니다. 전체 Spark를 실행하고 S3 및 데이터 액세스를 위해 Data Catalog와 통신합니다. 실행기를 요청하고 작업 계획을 일련의 실행 단계로 컴파일합니다.
-
그런 다음, EMR Serverless는 사용자 드라이버 또는 시스템 드라이버를 사용하여 실행기에서 단계를 실행합니다. 모든 단계의 사용자 코드는 사용자 프로파일 실행기에서만 실행됩니다.
-
로 보호되는 Data Catalog 테이블에서 데이터를 읽 AWS Lake Formation 거나 보안 필터를 적용하는 단계는 시스템 실행기에 위임됩니다.
Amazon EMR에서 Lake Formation 활성화
Lake Formation을 활성화하려면 EMR Serverless 애플리케이션을 생성할 때 런타임 구성 파라미터의 spark-defaults
분류 아래에서 spark.emr-serverless.lakeformation.enabled
를 true
로 설정해야 합니다.
aws emr-serverless create-application \ --release-label emr-7.7.0 \ --runtime-configuration '{ "classification": "spark-defaults", "properties": { "spark.emr-serverless.lakeformation.enabled": "true" } }' \ --type "SPARK"
EMR Studio에서 새 애플리케이션을 생성하는 경우 Lake Formation을 활성화할 수도 있습니다. 추가 구성 아래에서 사용할 수 있는 세분화된 액세스 제어를 위해 Lake Formation 사용을 선택합니다.
Lake Formation을 EMR Serverless와 함께 사용하면 작업자 간 암호화가 기본적으로 활성화되므로 작업자 간 암호화를 다시 명시적으로 활성화하지 않아도 됩니다.
Spark 작업에 대해 Lake Formation 활성화
개별 Spark 작업에 대해 Lake Formation을 활성화하려면 spark-submit
을 사용할 때 spark.emr-serverless.lakeformation.enabled
를 true로 설정합니다.
--conf spark.emr-serverless.lakeformation.enabled=true
작업 런타임 역할 IAM 권한
Lake Formation 권한은 AWS Glue 데이터 카탈로그 리소스, Amazon S3 위치 및 해당 위치의 기본 데이터에 대한 액세스를 제어합니다. IAM 권한은 Lake Formation 및 AWS Glue API와 리소스에 대한 액세스를 제어합니다. Data Catalog의 테이블에 액세스할 수 있는 Lake Formation 권한이 있더라도(SELECT) glue:Get*
API 작업에 IAM 권한이 없으면 작업이 실패합니다.
다음은 S3의 스크립트에 액세스할 수 있는 IAM 권한을 제공하는 방법, S3에 로그 업로드, AWS Glue API 권한 및 Lake Formation에 액세스할 수 있는 권한에 대한 정책 예제입니다.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "ScriptAccess", "Effect": "Allow", "Action": [ "s3:GetObject", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::*.amzn-s3-demo-bucket/scripts", "arn:aws:s3:::*.amzn-s3-demo-bucket/*" ] }, { "Sid": "LoggingAccess", "Effect": "Allow", "Action": [ "s3:PutObject" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket/logs/*" ] }, { "Sid": "GlueCatalogAccess", "Effect": "Allow", "Action": [ "glue:Get*", "glue:Create*", "glue:Update*" ], "Resource": ["*"] }, { "Sid": "LakeFormationAccess", "Effect": "Allow", "Action": [ "lakeformation:GetDataAccess" ], "Resource": ["*"] } ] }
작업 런타임 역할에 대한 Lake Formation 권한 설정
먼저 Lake Formation에 Hive 테이블의 위치를 등록합니다. 그런 다음, 원하는 테이블에서 작업 런타임 역할에 대한 권한을 생성합니다. Lake Formation에 대한 자세한 내용은 AWS Lake Formation 개발자 안내서의 What is AWS Lake Formation?를 참조하세요.
Lake Formation 권한을 설정한 후 Amazon EMR Serverless에서 Spark 작업을 제출할 수 있습니다. Spark 작업에 대한 자세한 내용은 Spark 예제를 참조하세요.
작업 실행 제출
Lake Formation 권한 부여 설정을 완료한 후 EMR Serverless에서 Spark 작업을 제출할 수 있습니다. Iceberg 작업을 실행하려면 다음 spark-submit
속성을 제공해야 합니다.
--conf spark.sql.catalog.spark_catalog=org.apache.iceberg.spark.SparkSessionCatalog --conf spark.sql.catalog.spark_catalog.warehouse=<
S3_DATA_LOCATION
> --conf spark.sql.catalog.spark_catalog.glue.account-id=<ACCOUNT_ID
> --conf spark.sql.catalog.spark_catalog.client.region=<REGION
> --conf spark.sql.catalog.spark_catalog.glue.endpoint=https://glue.<REGION
>.amazonaws.com
오픈 테이블 형식 지원
Amazon EMR 릴리스 7.2.0에는 Lake Formation을 기반으로 세분화된 액세스 제어에 대한 지원이 포함되어 있습니다. EMR Serverless는 Hive 및 Iceberg 테이블 유형을 지원합니다. 다음 표에서는 지원되는 모든 옵션을 설명합니다.
운영 | Hive | Iceberg |
---|---|---|
DDL 명령 | IAM 역할 권한만 있음 | IAM 역할 권한만 있음 |
증분 쿼리 | 해당 사항 없음 | 완전 지원 |
시간 이동 쿼리 | 이 테이블 형식에 해당되지 않음 | 완전 지원 |
메타데이터 테이블 | 이 테이블 형식에 해당되지 않음 | 지원되지만 특정 테이블은 숨겨집니다. 자세한 내용은 고려 사항 및 제한 사항을 참조하세요. |
DML INSERT |
IAM 권한만 있음 | IAM 권한만 있음 |
DML UPDATE | 이 테이블 형식에 해당되지 않음 | IAM 권한만 있음 |
DML DELETE |
이 테이블 형식에 해당되지 않음 | IAM 권한만 있음 |
읽기 작업 | 완전 지원 | 완전 지원 |
저장 프로시저 | 해당 사항 없음 | register_table 및 migrate 를 제외하고 지원됩니다. 자세한 내용은 고려 사항 및 제한 사항을 참조하세요. |