Amazon EMR での Lake Formation の有効化
Amazon EMR 6.15.0 以降では、AWS Glue データカタログのデータにアクセスできる EC2 クラスター上の Amazon EMR で Spark ジョブを実行する場合、AWS Lake Formation を使用して HUDI、Iceberg、または Delta Lake ベースのテーブルに、テーブル、行、列、セルレベルのアクセス権限を適用できます。
このセクションでは、セキュリティ設定を作成し、Amazon EMR と連携するように Lake Formation を設定する方法について説明します。Lake Formation 用に作成したセキュリティ設定を使用してクラスターを起動する方法についても説明します。
ステップ 1: EMR クラスターのランタイムロールを設定する
EMR クラスターにランタイムロールを使用するには、セキュリティ設定を作成する必要があります。セキュリティ設定により、クラスター全体で一貫したセキュリティ、認可、認証のオプションを適用できます。
-
次のセキュリティ設定で
lf-runtime-roles-sec-cfg.json
というファイルを作成します。{ "AuthorizationConfiguration": { "IAMConfiguration": { "EnableApplicationScopedIAMRole": true, "ApplicationScopedIAMRoleConfiguration": { "PropagateSourceIdentity": true } }, "LakeFormationConfiguration": { "AuthorizedSessionTagValue": "Amazon EMR" } }, "EncryptionConfiguration": { "EnableInTransitEncryption": true, "InTransitEncryptionConfiguration": { "TLSCertificateConfiguration": {<certificate-configuration>} } } }
-
次に、セッションタグが Lake Formation を承認できるようにするために、
LakeFormationConfiguration/AuthorizedSessionTagValue
プロパティをAmazon EMR
に設定します。 -
次のコマンドを使用して、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 ロケーション内のデータに対するフルアクセス許可を付与する]
ステップ 3b: Amazon EMR ランタイムロールを使用して Lake Formation ベースの列、行、セルレベルのアクセス許可を設定する
Lake Formation でテーブルレベルおよび列レベルのアクセス許可を適用するには、データレイク管理者がセッションタグ設定 AuthorizedSessionTagValue
の値として Amazon EMR
を設定する必要があります。Lake Formation は、このセッションタグを使用して発信者を承認し、データレイクへのアクセス権限を付与します。このセッションタグは、Lake Formation コンソールの [外部データフィルタリング] セクションで設定できます。123456789012
は、自分の AWS アカウント ID に置き換えてください。
ステップ 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 アクセス許可は、AWS Glue Data Catalog リソース、Amazon S3 ロケーション、およびこれらのロケーションにある基盤データへのアクセスを制御します。IAM アクセス許可は、Lake Formation および AWS Glue API とリソースへのアクセスを制御します。データカタログ内のテーブルにアクセスするための Lake Formation アクセス許可 (SELECT) を持っていても、glue:Get*
API に対する IAM アクセス許可がない場合、操作は失敗します。Lake Formation のアクセスコントロールの詳細については、「Lake Formation アクセスコントロールの概要」を参照してください。
-
次の内容で
emr-runtime-roles-lake-formation-policy.json
ファイルを作成します。{ "Version": "2012-10-17", "Statement": { "Sid": "LakeFormationManagedAccess", "Effect": "Allow", "Action": [ "lakeformation:GetDataAccess", "glue:Get*", "glue:Create*", "glue:Update*" ], "Resource": "*" } }
-
関連する IAM ポリシーを作成します。
aws iam create-policy \ --policy-name emr-runtime-roles-lake-formation-policy \ --policy-document file://emr-runtime-roles-lake-formation-policy.json
-
このポリシーを IAM ランタイムロールに割り当てるには、「AWS Lake Formation 許可の管理」のステップを実行します。
ランタイムロールと Lake Formation を使用して、テーブルレベルと列レベルのアクセス許可を適用できるようになりました。また、ソース ID を使用して、AWS CloudTrail でアクションを制御したり、操作をモニタリングしたりすることもできます。詳細なエンドツーエンドの例については、「Introducing runtime roles for Amazon EMR steps