Amazon S3 へのEMRFSリクエストのIAMロールを設定する - Amazon EMR

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

Amazon S3 へのEMRFSリクエストのIAMロールを設定する

注記

このページで説明されているEMRFSロールマッピング機能は、Amazon 6.15.0 で Amazon S3 Access Grants EMR を導入することで改善されました。Amazon S3 のデータにスケーラブルなアクセスコントロールソリューションを実現するには、Amazon で S3 Access Grants EMRを使用することをお勧めします。

クラスターで実行されているアプリケーションが s3://mydata形式を使用してデータを参照する場合、Amazon EMRは EMRFS を使用してリクエストを行います。Amazon S3 を操作するために、 は Amazon EC2インスタンスプロファイル にアタッチされているアクセス許可ポリシーをEMRFS引き受けます。アプリケーションを実行しているユーザーやグループ、または Amazon S3 内のデータの場所に関係なく、同じ Amazon EC2インスタンスプロファイルが使用されます。

Amazon S3 から までのデータへの異なるレベルのアクセスを必要とする複数のユーザーを持つクラスターがある場合はEMRFS、 のIAMロールでセキュリティ設定を設定できますEMRFS。EMRFS は、リクエストを行うユーザーまたはグループ、または Amazon S3 内のデータの場所に基づいて、クラスターEC2インスタンスに対して異なるサービスロールを引き受けることができます。のIAMロールごとに、Amazon S3 のデータアクセスに対する異なるアクセス許可を持つEMRFSことができます。クラスターEC2インスタンスのサービスロールの詳細については、「」を参照してくださいクラスターEC2インスタンスのサービスロール (EC2インスタンスプロファイル)

のカスタムIAMロールの使用はEMRFS、Amazon EMRバージョン 5.10.0 以降でサポートされています。以前のバージョンを使用する場合、または EMRFSが提供するIAMロールを超える要件がある場合は、代わりにカスタム認証情報プロバイダーを作成できます。詳細については、Amazon S3EMRFSのデータへのアクセスを許可する」を参照してください。

セキュリティ設定を使用して のIAMロールを指定する場合はEMRFS、ロールマッピングを設定します。各ロールマッピングは、識別子に対応するIAMロールを指定します。これらの識別子は、 から Amazon S3 へのアクセスの基盤を決定しますEMRFS。識別子は、ユーザー、グループ、またはデータの場所を示す Amazon S3 のプレフィックスです。EMRFS が Amazon S3 にリクエストを実行すると、リクエストがアクセスの基盤と一致する場合、 EMRFS はリクエストに対応するIAMロールをクラスターEC2インスタンスに引き受けます。クラスターEC2インスタンスのサービスロールにアタッチされたIAMアクセス許可の代わりに、そのロールにアタッチされたIAMアクセス許可が適用されます。

ロールマッピングのユーザーやグループは、クラスターで定義されている Hadoop ユーザーおよびグループです。ユーザーとグループは、それを使用するアプリケーションのコンテキストEMRFSで に渡されます (YARNユーザーのなりすましなど)。Amazon S3 プレフィックスは、任意の深さのバケット指定子 (例: s3://amzn-s3-demo-buckets3://amzn-s3-demo-bucket/myproject/mydata) にすることができます。1 つのロールマッピング内で複数の識別子を指定できますが、すべてを同じタイプにする必要があります。

重要

IAM の ロールは、アプリケーションのユーザー間でアプリケーションレベルの分離EMRFSを提供します。ホスト上のユーザー間でのホストレベルの分離は提供されません。クラスターのアクセス権を持つユーザーは、ロールを引き受けるための分離をバイパスできます。

クラスターアプリケーションが を介して Amazon S3 にリクエストを行うとEMRFS、 は、セキュリティ設定に表示される上位の順序でロールマッピングEMRFSを評価します。を通じて行われたリクエストEMRFSが識別子と一致しない場合、 EMRFS はクラスターEC2インスタンスのサービスロールの使用に戻ります。このため、このロールにアタッチされたポリシーで Amazon S3 へのアクセス許可を制限することをお勧めします。詳細については、「クラスターEC2インスタンスのサービスロール (EC2インスタンスプロファイル)」を参照してください。

ロールを設定する

のIAMロールでセキュリティ設定を設定する前にEMRFS、ロールにアタッチするロールとアクセス許可ポリシーを計画して作成します。詳細については、IAM「 ユーザーガイド」のEC2「インスタンスのロールの仕組み」を参照してください。アクセス許可ポリシーを作成するときは、 のデフォルトの Amazon EMRロールにアタッチされた マネージドポリシーから開始しEC2、要件に従ってこのポリシーを編集することをお勧めします。デフォルトのロール名は EMR_EC2_DefaultRole で、編集するデフォルトの管理ポリシーは AmazonElasticMapReduceforEC2Role です。詳細については、「クラスターEC2インスタンスのサービスロール (EC2インスタンスプロファイル)」を参照してください。

ロールアクセス許可を引き受けるための信頼ポリシーの更新

EMRFS を使用する各ロールには、クラスターの Amazon EMRロールが EC2で引き受けることを許可する信頼ポリシーが必要です。同様に、 クラスターの の Amazon EMRロールには、EMRFSロールが引き受けることを許可する信頼ポリシーEC2が必要です。

次の信頼ポリシーの例は、 のロールにアタッチされていますEMRFS。このステートメントでは、 のデフォルトの Amazon EMRロールがロールを引き受けEC2ることを許可します。例えば、2 つの架空のEMRFSロールEMRFSRole_FirstEMRFSRole_Secondがある場合、このポリシーステートメントはそれぞれの信頼ポリシーに追加されます。

{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Principal":{ "AWS":"arn:aws:iam::AWSAcctID:role/EMR_EC2_DefaultRole" }, "Action":"sts:AssumeRole" } ] }

さらに、次の信頼ポリシーステートメントの例が に追加EMR_EC2_DefaultRoleされ、2 つの架空のEMRFSロールがそれを引き受けることができます。

{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Principal":{ "AWS": ["arn:aws:iam::AWSAcctID:role/EMRFSRole_First", "arn:aws:iam::AWSAcctID:role/EMRFSRole_Second"] }, "Action":"sts:AssumeRole" } ] }
IAM ロールの信頼ポリシーを更新するには

でIAMコンソールを開きますhttps://console.aws.amazon.com/iam/

  1. [ロール] を選択して [検索] にロール名を入力したら、その [ロール名] を選択します。

  2. [Trust relationships] (信頼関係)、[Edit trust relationship] (信頼関係の編集) の順に選択します。

  3. 上記のガイドラインに従って、[ポリシードキュメント] に応じて信頼ステートメントを追加し、[信頼ポリシーの更新] を選択します。

キーユーザーとしてロールを指定する

AWS KMS keyを使用して暗号化されている Amazon S3 の場所へのアクセスをロールで許可する場合は、そのロールがキーユーザーとして指定されていることを確認します。これにより、 KMS キーを使用するアクセス許可がロールに付与されます。詳細については、「AWS Key Management Service デベロッパーガイド」の「AWS KMSでのキーポリシー」を参照してください。

のIAMロールを使用してセキュリティ設定をセットアップする EMRFS

重要

EMRFS 指定した のIAMロールがいずれも適用されない場合、 は の Amazon EMRロールEMRFSに戻りますEC2。クラスターを作成するときに、このロールをカスタマイズして、アプリケーションに適切な Amazon S3 へのアクセス権限を制限し、EMR_EC2_DefaultRole の代わりにこのカスタムロールを指定することを検討してください。詳細については、「Amazon でIAMロールをカスタマイズする EMR」および「クラスターの作成時にカスタムIAMロールを指定する」を参照してください。

コンソールを使用して Amazon S3 へのEMRFSリクエストのIAMロールを指定するには
  1. ロールのマッピングを指定するセキュリティ設定を作成します。

    1. Amazon EMRコンソールで、セキュリティ設定 作成 を選択します。

    2. セキュリティ設定の [Name (名前)] を入力します。この名前を使用して、クラスターの作成時に使用するセキュリティ設定を指定します。

    3. Amazon S3 へのEMRFSリクエストにIAMロールを使用するを選択します。

    4. 適用するIAMロールを選択し、アクセスの基準で、リストから識別子タイプ (ユーザー グループ 、または S3 プレフィックス ) を選択し、対応する識別子を入力します。複数の識別子を使用する場合は、カンマでスペースを入れずに区切ります。各識別子の種類の詳細については、下記の「JSON configuration reference」を参照してください。

    5. [Add role (ロールの追加)] を選択して、前の手順で説明したように追加のロールマッピングを設定します。

    6. 必要に応じて他のセキュリティ設定オプションを設定し、[Create (作成)] を選択します。詳細については、「Amazon EMRコンソールまたは を使用してセキュリティ設定を作成する AWS CLI」を参照してください。

  2. クラスターの作成時に上記で作成したセキュリティ設定を指定します。詳細については、「Amazon EMRクラスターのセキュリティ設定を指定する」を参照してください。

を使用して Amazon S3 へのEMRFSリクエストのIAMロールを指定するには AWS CLI
  1. aws emr create-security-configuration コマンドを使用して、セキュリティ設定の名前とセキュリティ設定の詳細を JSON 形式で指定します。

    次のコマンド例は、EMRFS_Roles_Security_Configuration という名前のセキュリティ設定を作成します。これはファイル のJSON構造に基づいておりMyEmrfsSecConfig.json、コマンドが実行されるのと同じディレクトリに保存されます。

    aws emr create-security-configuration --name EMRFS_Roles_Security_Configuration --security-configuration file://MyEmrFsSecConfig.json.

    次の MyEmrFsSecConfig.json ファイルの構造のガイドラインを使用します。他のセキュリティ設定オプションの構造と共に、この構造を指定することができます。詳細については、「Amazon EMRコンソールまたは を使用してセキュリティ設定を作成する AWS CLI」を参照してください。

    セキュリティ設定EMRFS内で JSON のカスタムIAMロールを指定するためのスニペットの例を次に示します。3 つの異なる識別子タイプのロールマッピングと、パラメータリファレンスを示します。

    { "AuthorizationConfiguration": { "EmrFsConfiguration": { "RoleMappings": [{ "Role": "arn:aws:iam::123456789101:role/allow_EMRFS_access_for_user1", "IdentifierType": "User", "Identifiers": [ "user1" ] },{ "Role": "arn:aws:iam::123456789101:role/allow_EMRFS_access_to_MyBuckets", "IdentifierType": "Prefix", "Identifiers": [ "s3://MyBucket/","s3://MyOtherBucket/" ] },{ "Role": "arn:aws:iam::123456789101:role/allow_EMRFS_access_for_AdminGroup", "IdentifierType": "Group", "Identifiers": [ "AdminGroup" ] }] } } }
    パラメータ 説明

    "AuthorizationConfiguration":

    必須。

    "EmrFsConfiguration":

    必須。ロールマッピングが含まれます。

      "RoleMappings":

    必須。1 つ以上のロールマッピング定義が含まれます。ロールのマッピングは、表示順に上から下に評価されます。ロールマッピングが Amazon S3 内のデータEMRFS呼び出しに対して true と評価された場合、それ以上のロールマッピングは評価されず、リクエストに指定されたIAMロールEMRFSが使用されます。ロールマッピングは、以下の必須パラメータで構成されます。

       "Role":

    形式でIAMロールのARN識別子を指定しますarn:aws:iam::account-id:role/role-name。これは、Amazon S3 へのEMRFSリクエストがIdentifiers指定された のいずれかと一致する場合に Amazon がEMR引き受けるIAMロールです。 Amazon S3

       "IdentifierType":

    次のいずれかを指定できます。

    • "User" は、識別子が 1 人以上の Hadoop ユーザーであることを指定します。これは Linux アカウントユーザーまたは Kerberos プリンシパルです。EMRFS リクエストが指定されたユーザーから発信された場合、IAMロールが引き受けられます。

    • "Prefix" は、識別子が Amazon S3 の場所であることを指定します。IAM ロールは、指定されたプレフィックスを持つ場所への呼び出しに対して引き受けられます。例えば、プレフィックス s3://mybucket/ は、 s3://mybucket/mydir および s3://mybucket/yetanotherdir に一致します。

    • "Group" は、識別子が 1 つ以上の Hadoop グループであることを指定します。リクエストが指定されたグループまたはグループのユーザーから発信された場合、IAMロールが引き受けられます。

       "Identifiers":

    適切な識別子タイプの 1 つ以上の識別子を指定します。複数の識別子は、スペースを入れずにカンマで区切ります。

  2. aws emr create-cluster コマンドを使用してクラスターを作成し、前のステップで作成したセキュリティ設定を指定します。

    次の例では、Hadoop アプリケーションがインストールされているデフォルトのコアでクラスターを作成します。クラスターは、上記のセキュリティ設定を として使用EMRFS_Roles_Security_ConfigurationしEC2、 --ec2-attributes パラメータの InstanceProfile引数を使用してEC2_Role_EMR_Restrict_S3指定された、、 のカスタム Amazon EMRロールも使用します。

    注記

    読みやすくするために、Linux 行連続文字 (\) が含まれています。Linux コマンドでは、これらは削除することも、使用することもできます。Windows の場合、削除するか、キャレット (^) に置き換えてください。

    aws emr create-cluster --name MyEmrFsS3RolesCluster \ --release-label emr-7.3.0 --ec2-attributes InstanceProfile=EC2_Role_EMR_Restrict_S3,KeyName=MyKey \ --instance-type m5.xlarge --instance-count 3 \ --security-configuration EMRFS_Roles_Security_Configuration