

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# Amazon EMR에서 Lake Formation 활성화
<a name="emr-lf-enable"></a>

Amazon EMR 6.15.0 이상에서는 Glue 데이터 카탈로그의 데이터에 액세스하는 EC2 클러스터의 Amazon EMR에서 Spark 작업을 실행할 때 AWS AWS Lake Formation 를 사용하여 Hudi, Iceberg 또는 Delta Lake 기반 테이블에 테이블, 행, 열 및 셀 수준 권한을 적용할 수 있습니다.

이 섹션에서는 보안 구성을 생성하고 Amazon EMR과 함께 작동하도록 Lake Formation을 설정하는 방법을 다룹니다. 또한 Lake Formation용으로 생성한 보안 구성으로 클러스터를 시작하는 방법도 살펴봅니다.

## 1단계: EMR 클러스터의 런타임 역할 설정
<a name="emr-lf-launch-cluster"></a>

EMR 클러스터에 대한 런타임 역할을 사용하려면 보안 구성을 생성해야 합니다. 보안 구성을 사용하면 클러스터 전체에 일관된 보안, 권한 부여 및 인증 옵션을 적용할 수 있습니다.

1. 다음 보안 콘텐츠를 포함하는 `lf-runtime-roles-sec-cfg.json` 파일을 생성합니다.

   ```
   {
       "AuthorizationConfiguration": {
           "IAMConfiguration": {
               "EnableApplicationScopedIAMRole": true,
               "ApplicationScopedIAMRoleConfiguration": {
                   "PropagateSourceIdentity": true
               }
           },
           "LakeFormationConfiguration": {
               "AuthorizedSessionTagValue": "Amazon EMR"
           }
       },
       "EncryptionConfiguration": {
   	    "EnableAtRestEncryption": false,
               "EnableInTransitEncryption": true,
               "InTransitEncryptionConfiguration": {
               "TLSCertificateConfiguration": {<certificate-configuration>}
           }
       }
   }
   ```

   아래 예제에서는 인증서 구성에 Amazon S3의 인증서와 함께 zip 파일을 사용하는 방법을 보여줍니다.
   + Amazon S3에 인증서가 있는 zip 파일이 키 공급자로 사용됩니다. (인증서 요구 사항은 [Amazon EMR 암호화를 사용하여 전송 중 데이터 암호화에 대한 인증서 제공](emr-encryption-enable.md#emr-encryption-certificates) 섹션 참조)

   ```
   "TLSCertificateConfiguration": {
   	"CertificateProviderType": "PEM",       
   	"S3Object": "s3://MyConfigStore/artifacts/MyCerts.zip"
    }
   ```

   아래 예제에서는 인증서 구성에 사용자 지정 키 공급자를 사용하는 방법을 보여줍니다.
   + 사용자 지정 키 공급자가 사용됩니다. (인증서 요구 사항은 [Amazon EMR 암호화를 사용하여 전송 중 데이터 암호화에 대한 인증서 제공](emr-encryption-enable.md#emr-encryption-certificates) 섹션 참조)

   ```
   "TLSCertificateConfiguration": {
   	"CertificateProviderType": "Custom",
   	"S3Object": "s3://MyConfig/artifacts/MyCerts.jar",
   	"CertificateProviderClass": "com.mycompany.MyCertProvider"
       }
   ```

1. 다음으로 세션 태그가 Lake Formation을 승인할 수 있도록 `LakeFormationConfiguration/AuthorizedSessionTagValue` 속성을 `Amazon EMR`로 설정합니다.

1. 다음 명령을 사용하여 Amazon EMR 보안 구성을 생성합니다.

   ```
   aws emr create-security-configuration \
   --name 'iamconfig-with-iam-lf' \
   --security-configuration file://lf-runtime-roles-sec-cfg.json
   ```

   또는 [Amazon EMR 콘솔](https://console.aws.amazon.com//emr)을 사용하여 사용자 지정 설정이 포함된 보안 구성을 생성할 수 있습니다.

## 2단계: Amazon EMR 클러스터 시작
<a name="emr-lf-launch-cluster"></a>

이제 이전 단계에서 생성한 보안 구성을 사용하여 EMR 클러스터를 시작할 준비가 되었습니다. 보안 구성 생성에 대한 자세한 내용은 [보안 구성을 사용하여 Amazon EMR 클러스터 보안 설정](emr-security-configurations.md) 및 [Amazon EMR 단계의 런타임 역할](emr-steps-runtime-roles.md) 섹션을 참조하세요.

## 3단계: Amazon EMR 런타임 역할을 사용하여 Lake Formation 기반 열, 행 또는 셀 수준 권한 설정
<a name="emr-lf-fgac-perms"></a>

Lake Formation을 사용하여 열, 행 또는 셀 수준에서 세분화된 액세스 제어를 적용하려면 Lake Formation의 데이터 레이크 관리자가 세션 태그 구성(`AuthorizedSessionTagValue`)의 값으로 `Amazon EMR`을 설정합니다. Lake Formation은 이 세션 태그를 사용하여 직접 호출자에게 권한을 부여하고 데이터 레이크에 대한 액세스를 제공합니다. Lake Formation 콘솔의 **애플리케이션 통합 설정** 섹션에서 이 세션 태그를 설정할 수 있습니다. *123456789012*를 자체 AWS 계정 ID로 바꿉니다.

## 4단계: Amazon EMR 런타임 역할에 대한 AWS Glue 및 Lake Formation 권한 부여 구성
<a name="emr-lf-trust-policy"></a>

Amazon EMR 런타임 역할을 사용하여 Lake Formation 기반 액세스 제어 설정을 계속하려면 Amazon EMR 런타임 역할에 대한 AWS Glue 및 Lake Formation 권한 부여를 구성해야 합니다. IAM 런타임 역할이 Lake Formation과 상호 작용할 수 있도록 하려면 해당 역할에 `lakeformation:GetDataAccess` 및 `glue:Get*`을 사용하여 액세스 권한을 부여합니다.

Lake Formation 권한은 AWS Glue 데이터 카탈로그 리소스, Amazon S3 위치 및 해당 위치의 기본 데이터에 대한 액세스를 제어합니다. IAM 권한은 Lake Formation 및 AWS Glue APIs. 데이터 카탈로그의 테이블에 액세스할 수 있는 Lake Formation 권한이 있더라도(SELECT) `glue:Get*` API에 IAM 권한이 없으면 작업이 실패합니다. Lake Formation 액세스 제어에 대한 자세한 내용은 [Lake Formation access control overview](https://docs.aws.amazon.com/lake-formation/latest/dg/lf-permissions-overview.html)를 참조하세요.

1.  다음 콘텐츠가 포함된 `emr-runtime-roles-lake-formation-policy.json` 파일을 생성합니다.

------
#### [ JSON ]

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Sid": "LakeFormationManagedAccess",
         "Effect": "Allow",
         "Action": [
           "lakeformation:GetDataAccess",
           "glue:Get*",
           "glue:Create*",
           "glue:Update*"
         ],
         "Resource": [
           "*"
         ]
       }
     ]
   }
   ```

------

1. 관련 IAM 정책을 생성합니다.

   ```
   aws iam create-policy \
   --policy-name emr-runtime-roles-lake-formation-policy \
   --policy-document file://emr-runtime-roles-lake-formation-policy.json
   ```

1. 이 정책을 IAM 런타임 역할에 할당하려면 [AWS Lake Formation 권한 관리](https://docs.aws.amazon.com/lake-formation/latest/dg/managing-permissions.html)의 단계를 수행합니다.

이제 런타임 역할과 Lake Formation을 사용하여 테이블 및 열 수준 권한을 적용할 수 있습니다. 소스 자격 증명을 사용하여 작업을 제어하고 작업을 모니터링할 수도 있습니다 AWS CloudTrail.

런타임 역할로 사용하려는 각 IAM 역할에 대해 인스턴스 프로파일을 `EMR_EC2_DefaultRole`로 대체하여 다음과 같은 신뢰 정책을 설정합니다. IAM 역할의 신뢰 정책을 수정하려면 [역할 신뢰 정책 수정](https://docs.aws.amazon.com//IAM/latest/UserGuide/roles-managingrole-editing-console.html)을 참조하세요.

```
{
   "Sid":"AllowAssumeRole",
   "Effect":"Allow",
   "Principal":{
     "AWS":"arn:aws:iam::<AWS_ACCOUNT_ID>:role/EMR_EC2_DefaultRole"
   },
   "Action":[
        "sts:AssumeRole",
        "sts:TagSession"
       ]
 }
```

자세한 포괄적인 예제를 보려면 [Introducing runtime roles for Amazon EMR steps](https://aws.amazon.com/blogs/big-data/introducing-runtime-roles-for-amazon-emr-steps-use-iam-roles-and-aws-lake-formation-for-access-control-with-amazon-emr/)를 참조하세요.<a name="iceberg-with-lake-formation-spark-catalog-integration-lf-ec2"></a>

다중 카탈로그 계층 구조를 위해 Iceberg 및 AWS Glue 데이터 카탈로그와 통합하는 방법에 대한 자세한 내용은 [AWS Glue 데이터 카탈로그의 다중 카탈로그 계층 구조에 액세스하도록 Spark 구성을](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-multi-catalog.html#emr-lakehouse-using-spark-access) 참조하세요.