

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# 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 のアクセス許可は、Glue Data Catalog AWS リソース、Amazon S3 ロケーション、およびそれらのロケーションの基盤となるデータへのアクセスを制御します。IAM アクセス許可は、Lake Formation および AWS Glue APIs とリソースへのアクセスを制御します。データカタログ内のテーブルにアクセスするための Lake Formation アクセス許可 (SELECT) を持っていても、`glue:Get*` API に対する IAM アクセス許可がない場合、操作は失敗します。Lake Formation のアクセスコントロールの詳細については、「[Lake Formation アクセスコントロールの概要](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 を使用して、テーブルレベルと列レベルのアクセス許可を適用できるようになりました。ソース ID を使用してアクションを制御し、 でオペレーションをモニタリングすることもできます 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)」を参照してください。