Amazon での Amazon S3 Access Grants の使用 EMR - Amazon EMR

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

Amazon での Amazon S3 Access Grants の使用 EMR

Amazon の S3 Access Grants の概要 EMR

Amazon EMRリリース 6.15.0 以降では、Amazon S3 Access Grants は、Amazon からの Amazon S3 データへのアクセスを強化するために使用できるスケーラブルなアクセスコントロールソリューションを提供しますEMR。S3 データで複雑または大規模なアクセス許可設定が必要となる場合は、Access Grants を使用して、ユーザー、グループ、ロール、アプリケーションの S3 データ権限をスケーリングできます。

S3 Access Grants を使用して、ランタイムロールまたはEMRクラスターにアクセスできる ID にアタッチされたIAMロールによって付与されたアクセス許可を超えて Amazon S3 データへのアクセスを強化します。詳細については、「Amazon S3 ユーザーガイド」の「S3 Access Grants によるアクセス管理」を参照してください。

S3 Access Grants を他の Amazon EMRデプロイで使用する手順については、次のドキュメントを参照してください。

Amazon と S3 Access Grants EMRの連携方法

Amazon EMRリリース 6.15.0 以降では、S3 Access Grants とのネイティブ統合が提供されます。Amazon で S3 Access Grants を有効にEMRし、Spark ジョブを実行できます。Spark ジョブが S3 データをリクエストすると、Amazon S3 は特定のバケット、プレフィックス、またはオブジェクトを対象とする一時的な認証情報を提供します。

以下は、Amazon が S3 Access Grants で保護されているデータEMRにアクセスする方法の概要です。

Amazon と S3 Access Grants EMRの連携方法
  1. ユーザーは、Amazon S3 EMR に保存されているデータを使用する Amazon Spark ジョブを送信します。 Amazon S3

  2. Amazon EMR は、S3 Access Grants に対して、そのユーザーに代わってバケット、プレフィックス、またはオブジェクトへのアクセスを許可するリクエストを行います。

  3. Amazon S3 は、ユーザーの AWS Security Token Service (STS) トークンの形式で一時的な認証情報を返します。トークンのスコープは、S3 バケット、プレフィックス、またはオブジェクトへのアクセスを対象としています。

  4. Amazon EMRはSTSトークンを使用して S3 からデータを取得します。

  5. Amazon は S3 からデータEMRを受け取り、結果をユーザーに返します。

Amazon での S3 Access Grants に関する考慮事項 EMR

Amazon で S3 Access Grants を使用する場合、次の動作と制限に注意してくださいEMR。

機能のサポート

  • S3 Access Grants は、Amazon EMRリリース 6.15.0 以降でサポートされています。

  • Amazon で S3 Access Grants を使用する場合、Spark はサポートされている唯一のクエリエンジンですEMR。

  • Amazon で S3 Access Grants を使用する場合、Delta Lake と Hudi のみがサポートされているオープンテーブル形式ですEMR。

  • 以下の Amazon EMR機能は、S3 Access Grants での使用はサポートされていません。

    • Apache Iceberg テーブル

    • LDAP ネイティブ認証

    • Apache Ranger ネイティブ認証

    • AWS CLI IAMロールを使用する Amazon S3 への リクエスト

    • オープンソースの S3A プロトコルによる S3 アクセス

  • fallbackToIAM オプションは、IAMIdentity Center で信頼できる ID 伝達を使用するEMRクラスターではサポートされていません。

  • を使用した S3 Access Grants AWS Lake Formation は、Amazon で実行される Amazon EMRクラスターでのみサポートされますEC2。

動作に関する注意事項

  • Apache Ranger と Amazon のネイティブ統合には、S3 Apache Ranger プラグインの一部として EMRFS S3 Access Grants と連携する機能EMRがあります。きめ細かなアクセスコントロール (FGAC) に Apache Ranger を使用する場合は、S3 Access Grants の代わりにそのプラグインを使用することをお勧めします。

  • Amazon EMRは、EMRFSユーザーが Spark ジョブ内で同じ認証情報を繰り返しリクエストする必要がないように、認証情報キャッシュを に提供します。したがって、Amazon は認証情報をリクエストするときに、EMR常にデフォルトレベルの権限をリクエストします。詳細については、「Amazon S3 ユーザーガイド」の「S3 データへのアクセスをリクエストする」を参照してください。

  • ユーザーが S3 Access Grants がサポートしていないアクションを実行する場合、Amazon EMRはジョブ実行に指定されたIAMロールを使用するように設定されます。詳細については、「IAM ロールにフォールバックする」を参照してください。

S3 Access Grants を使用して Amazon EMRクラスターを起動する

このセクションでは、Amazon で実行されEC2、S3 Access Grants を使用して Amazon S3 のデータへのアクセスを管理する EMRクラスターを起動する方法について説明します。S3 Access Grants を他の Amazon EMRデプロイで使用する手順については、次のドキュメントを参照してください。

Amazon で実行されEC2、S3 Access Grants を使用して Amazon S3 内のデータへのアクセスを管理する EMRクラスターを起動するには、次のステップを使用しますAmazon S3。

  1. EMR クラスターのジョブ実行ロールを設定します。Spark ジョブの実行に必要なIAMアクセス許可s3:GetDataAccess、および を含めますs3:GetAccessGrantsInstanceForPrefix

    { "Effect": "Allow", "Action": [ "s3:GetDataAccess", "s3:GetAccessGrantsInstanceForPrefix" ], "Resource": [ //LIST ALL INSTANCE ARNS THAT THE ROLE IS ALLOWED TO QUERY "arn:aws_partition:s3:Region:account-id1:access-grants/default", "arn:aws_partition:s3:Region:account-id2:access-grants/default" ] }
    注記

    Amazon ではEMR、S3 Access Grants はIAMロールで設定されたアクセス許可を強化します。ジョブ実行に指定したIAMロールに S3 に直接アクセスするアクセス許可が含まれている場合、ユーザーは S3 Access Grants で定義したデータよりも多くのデータにアクセスできる可能性があります。

  2. 次に、 を使用して Amazon 6.15 EMR 以降でクラスター AWS CLI を作成し、 emrfs-site分類を使用して S3 Access Grants を有効にします。例は次のとおりです。

    aws emr create-cluster --release-label emr-6.15.0 \ --instance-count 3 \ --instance-type m5.xlarge \ --configurations '[{"Classification":"emrfs-site", "Properties":{"fs.s3.s3AccessGrants.enabled":"true", "fs.s3.s3AccessGrants.fallbackToIAM":"false"}}]'

を使用した S3 Access Grants AWS Lake Formation

AWS Lake Formation 統合 EMRで Amazon を使用する場合は、Amazon S3 Access Grants を使用してAmazon S3内のデータに直接または表形式でアクセスできます。

注記

を使用した S3 Access Grants AWS Lake Formation は、Amazon で実行される Amazon EMRクラスターでのみサポートされますEC2。

直接アクセス

直接アクセスには、Lake Formation が Amazon とのメタストアとして使用する AWS Glue サービスの を呼び出さない S3 データへのアクセスAPIに対するすべての呼び出しが含まれます。EMR例えば、 を呼び出す場合ですspark.read

spark.read.csv("s3://...")

Amazon AWS Lake Formation で S3 Access Grants を で使用するとEMR、すべての直接アクセスパターンが S3 Access Grants を通過して一時的な S3 認証情報を取得します。

表形式のアクセス

表形式アクセスは、Lake Formation がメタストアを呼び出しAPIて S3 の場所にアクセスするときに発生します。例えば、テーブルデータをクエリします。

spark.sql("select * from test_tbl")

Amazon AWS Lake Formation で S3 Access Grants を で使用するとEMR、すべての表形式のアクセスパターンが Lake Formation を通過します。

IAM ロールにフォールバックする

ユーザーが S3 Access Grants がサポートしていないアクションを実行しようとすると、Amazon はEMRデフォルトで、fallbackToIAM設定が のときにジョブ実行用に指定されたIAMロールになりますtrue。これにより、S3 Access Grants が対象としていないシナリオでも、ユーザーはジョブ実行ロールにフォールバックして S3 アクセス用の認証情報を付与できます。

fallbackToIAM を有効にすると、ユーザーは Access Grants で許可されているデータにアクセスできます。ターゲットデータに S3 Access Grants トークンがない場合、Amazon はジョブ実行ロールに対する アクセス許可EMRをチェックします。

注記

本番環境のワークロードではこのオプションを無効にする予定がある場合でも、一度 fallbackToIAM 設定を有効にしてみてアクセス権限をテストすることをお勧めします。Spark ジョブでは、ユーザーがIAM認証情報を使用してすべてのアクセス許可セットにアクセスできる方法は他にもあります。EMR クラスターで有効にすると、S3 からの許可によって Spark ジョブに S3 ロケーションへのアクセスが許可されます。これらの S3 ロケーションは、 の外部からのアクセスから保護する必要がありますEMRFS。たとえば、ノートブックで使用している S3 クライアントや、Hive や Presto などの S3 Access Grants でサポートされていないアプリケーションからのアクセスから S3 ロケーションを保護する必要があります。