Amazon EMR での Lake Formation の有効化 - Amazon EMR

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

Amazon EMR での Lake Formation の有効化

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 クラスターのランタイムロールを設定する

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 ファイルを使用する方法を示しています。

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

    次の例は、証明書設定にカスタムキープロバイダーを使用する方法を示しています。

    "TLSCertificateConfiguration": { "CertificateProviderType": "Custom", "S3Object": "s3://MyConfig/artifacts/MyCerts.jar", "CertificateProviderClass": "com.mycompany.MyCertProvider" }
  2. 次に、セッションタグが Lake Formation を承認できるようにするために、LakeFormationConfiguration/AuthorizedSessionTagValue プロパティを Amazon EMR に設定します。

  3. 次のコマンドを使用して、Amazon EMR セキュリティ設定を作成します。

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

    または、Amazon EMR コンソールを使用して、カスタム設定でセキュリティ設定を作成することもできます。

ステップ 2: Amazon EMR クラスターを起動します

これで、前のステップで作成したセキュリティ設定を使用して EMR クラスターを起動する準備ができました。セキュリティ設定の詳細については、「セキュリティ設定を使用して Amazon EMR クラスターセキュリティをセットアップする」および「Amazon EMR ステップのランタイムロール」を参照してください。

ステップ 3a: Amazon EMR ランタイムロールを使用して、Lake Formation ベースのテーブルレベルのアクセス許可を設定する

列、行、またはセルレベルでの細粒度なアクセス制御が必要ない場合は、Glue Data Catalog を使用してテーブルレベルの権限を設定できます。テーブルレベルのアクセスを有効にするには、 AWS Lake Formation コンソールに移動し、サイドバーの管理セクションからアプリケーション統合設定オプションを選択します。次に、以下のオプションを有効にして [保存] を選択します。

[部エンジンに、Amazon S3 ロケーション内のデータに対するフルアクセス許可を付与する]

Lake Formation の外部データフィルタリング

ステップ 3b: Amazon EMR ランタイムロールを使用して Lake Formation ベースの列、行、セルレベルのアクセス許可を設定する

Lake Formation でテーブルレベルおよび列レベルのアクセス許可を適用するには、データレイク管理者がセッションタグ設定 AuthorizedSessionTagValue の値として Amazon EMR を設定する必要があります。Lake Formation は、このセッションタグを使用して発信者を承認し、データレイクへのアクセス権限を付与します。このセッションタグは、Lake Formation コンソールの [外部データフィルタリング] セクションで設定できます。123456789012 は、自分の AWS アカウント ID に置き換えてください。

Lake Formation の外部データフィルタリング

ステップ 4: Amazon EMR ランタイムロールの AWS Glue および Lake Formation 許可を設定する

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 API とリソースへのアクセスを制御します。データカタログ内のテーブルにアクセスするための Lake Formation アクセス許可 (SELECT) を持っていても、glue:Get* API に対する IAM アクセス許可がない場合、操作は失敗します。Lake Formation のアクセスコントロールの詳細については、「Lake Formation アクセスコントロールの概要」を参照してください。

  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": [ "*" ] } ] }
  2. 関連する IAM ポリシーを作成します。

    aws iam create-policy \ --policy-name emr-runtime-roles-lake-formation-policy \ --policy-document file://emr-runtime-roles-lake-formation-policy.json
  3. このポリシーを IAM ランタイムロールに割り当てるには、「AWS Lake Formation 許可の管理」のステップを実行します。

ランタイムロールと Lake Formation を使用して、テーブルレベルと列レベルのアクセス許可を適用できるようになりました。ソース ID を使用してアクションを制御し、 でオペレーションをモニタリングすることもできます AWS CloudTrail。

ランタイムロールとして使用する予定の各 IAM ロールについて、以下の信頼ポリシーを設定します。EMR_EC2_DefaultRole は、ご使用のインスタンスプロファイルロールに置き換えてください。IAM ロールの信頼ポリシーを変更するには、「ロールの信頼ポリシーの変更」を参照してください。

{ "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」を参照してください。

マルチカタログ階層の Iceberg および AWS Glue データカタログと統合する方法については、「 Glue データカタログのマルチカタログ階層にアクセスするように Spark AWS を設定する」を参照してください。