Amazon EMR on EKS でのジョブ実行ロールの使用 - Amazon EMR

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

Amazon EMR on EKS でのジョブ実行ロールの使用

StartJobRun コマンドを使用して EKS クラスターでのジョブ実行を送信するには、まず、仮想クラスターで使用するジョブ実行ロールをオンボーディングする必要があります。詳細については、「Amazon EMR on EKS のセットアップ」の ジョブ実行ロールを作成する を参照してください。また、Amazon EMR on EKS Workshop の「Create IAM Role for job execution」セクションの指示に従うこともできます。

ジョブ実行ロールの信頼ポリシーに、次のアクセス許可を含める必要があります。

JSON
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "sts:AssumeRoleWithWebIdentity" ], "Resource": "*", "Condition": { "StringLike": { "aws:userid": "system:serviceaccount:NAMESPACE:emr-containers-sa-*-*-AWS_ACCOUNT_ID-BASE36_ENCODED_ROLE_NAME" } }, "Sid": "AllowSTSAssumerolewithwebidentity" } ] }

前述の例の信頼ポリシーでは、名前が emr-containers-sa-*-*-AWS_ACCOUNT_ID-BASE36_ENCODED_ROLE_NAME パターンに一致する Amazon EMR 管理の Kubernetes サービスアカウントにのみ権限が付与されます。このパターンのサービスアカウントは、ジョブの送信時に自動的に作成され、ジョブが送信される名前空間にスコープされます。この信頼ポリシーにより、これらのサービスアカウントは実行ロールを引き受けて、実行ロールの一時認証情報を取得できます。別の Amazon EKS クラスターのサービスアカウントや、同じ EKS クラスター内の別の名前空間のサービスアカウントは、実行ロールを引き受けることができません。

次のコマンドを実行すると、上記の形式で信頼ポリシーを自動的に更新できます。

aws emr-containers update-role-trust-policy \ --cluster-name cluster \ --namespace namespace \ --role-name iam_role_name_for_job_execution

実行ロールへのアクセスの制御

Amazon EKS クラスターの管理者は、IAM 管理者が複数の実行ロールを追加できるマルチテナントの Amazon EMR on EKS 仮想クラスターを作成できます。信頼できないテナントであっても、こうした実行ロールを使用して、任意のコードを実行するジョブを送信できます。そのため、信頼できないテナントではこうした実行ロールの 1 つ以上に割り当てられた権限を取得するコードを実行できないように制限することをお勧めします。IAM ID にアタッチされている IAM ポリシーを制限する場合、IAM 管理者はオプションの Amazon リソースネーム (ARN) 条件キー emr-containers:ExecutionRoleArn を使用できます。この条件は、次の権限ポリシーで示すように、仮想クラスターに対する権限を持つ実行ロール ARN のリストを受け入れます。

JSON
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "emr-containers:StartJobRun" ], "Resource": [ "arn:aws:emr-containers:*:*:/virtualclusters/VIRTUAL_CLUSTER_ID" ], "Condition": { "ArnEquals": { "emr-containers:ExecutionRoleArn": [ "arn:aws:iam::*:role/execution_role_name_1", "arn:aws:iam::*:role/execution_role_name_2" ] } }, "Sid": "AllowEMRCONTAINERSStartjobrun" } ] }

MyRole など特定のプレフィックスで始まるすべての実行ロールを許可する場合は、条件演算子 ArnEquals を演算子 ArnLike に置き換えることができるほか、条件内の execution_role_arn 値をワイルドカード文字 * に置き換えることができます。例えば、arn:aws:iam::AWS_ACCOUNT_ID:role/MyRole*その他の ARN 条件キーもすべてサポートされています。

注記

Amazon EMR on EKS では、タグや属性に基づいて実行ロールに権限を付与することはできません。Amazon EMR on EKS は、実行ロールに対してタグベースのアクセスコントロール (TBAC) や属性ベースのアクセスコントロール (ABAC) をサポートしていません。