將任務執行角色與 EKS 上的 Amazon EMR - Amazon EMR

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

將任務執行角色與 EKS 上的 Amazon EMR

若要使用 AWS for WordPressStartJobRun命令提交在 EKS 羣集上運行的作業,則必須首先加載一個作業執行角色才能與虛擬羣集一起使用。如需詳細資訊,請參閱 設定 中的 建立任務執行角色。您也可以按照創建 IAM 角色來執行任務部分中的 Amazon EMR on EKS 研討會。

作業執行角色的信任策略中必須包含以下權限。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Federated": "arn:aws:iam::AWS_ACCOUNT_ID:oidc-provider/OIDC_PROVIDER" }, "Action": "sts:AssumeRoleWithWebIdentity", "Condition": { "StringLike": { "OIDC_PROVIDER:sub": "system:serviceaccount:NAMESPACE:emr-containers-sa-*-*-AWS_ACCOUNT_ID-BASE36_ENCODED_ROLE_NAME" } } } ] }

上述示例中的信任策略僅向 EMR 管理的 Kubernetes 服務帳户授予權限,其名稱與emr-containers-sa-*-*-AWS_ACCOUNT_ID-BASE36_ENCODED_ROLE_NAME模式。具有此模式的服務帳户將在作業提交時自動創建,其作用域限定為提交作業的名稱空間。此信任策略允許這些服務帳户代入執行角色並獲取執行角色的臨時證書。來自不同 EKS 羣集或來自同一 EKS 羣集內不同命名空間的任何其他服務帳户都不能擔任執行角色。

您可以執行下列命令,按照上述格式自動更新信任策略。

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

控制對執行角色的訪問

EKS 羣集管理員可以在 EKS 虛擬集羣上創建多租户 Amazon EMR,IAM 管理員可以向其中添加多個執行角色。這些執行角色可用於由運行任意代碼的不受信任租户提交作業。因此,您可能希望限制這些租户,以便他們無法運行獲得分配給一個或多個這些執行角色的權限的代碼。您可以使用條件金鑰來限制對執行角色的存取權限。IAM 管理員可以限制附加到 IAM 身份的 IAM 策略,方法是使用名為emr-containers:ExecutionRoleArn。此條件接受具有權限的執行角色 ARN 的列表來使用虛擬羣集,如以下權限策略所示。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "emr-containers:StartJobRun", "Resource": "arn:aws:emr-containers:REGION:AWS_ACCOUNT_ID:/virtualclusters/VIRTUAL_CLUSTER_ID", "Condition": { "StringEquals": { "emr-containers:ExecutionRoleArn": [ "execution_role_arn_1", "execution_role_arn_2", ... ] } } } ] }

如果要允許以特定前綴(如 MyRole)開頭的所有執行角色,則條件運算符 StringEquals 可以替換為 StringLike 運算符,並且條件中的執行角色 _arn 值可以替換為通配符 * 字符。例如 arn:aws:iam::AWS_ACCOUNT_ID:role/MyRole*。All (全部)其他字符串條件金鑰也支援。

注意

EKS 上的 Amazon EMR 目前不支持執行角色的基於標記的訪問控制 (TBAC)。您無法根據標記向執行角色授予權限。