Uso dei ruoli di esecuzione di processo con Amazon EMR su EKS - Amazon EMR

Uso dei ruoli di esecuzione di processo con Amazon EMR su EKS

Se intendi utilizzare il comando StartJobRun per inviare un processo eseguito in un cluster EKS, dovrai prima integrare un ruolo di esecuzione di processo da utilizzare con un cluster virtuale. Per ulteriori informazioni, consulta Creazione di un ruolo di esecuzione di processo in Configurazione di Amazon EMR su EKS. È inoltre possibile seguire le istruzioni riportate nella sezione di Amazon EMR su EKS Workshop Creazione di un ruolo IAM per l'esecuzione del processo.

Le seguenti autorizzazioni devono essere incluse nella policy di affidabilità per il ruolo di esecuzione di processo.

{ "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" } } } ] }

La policy di affidabilità nell'esempio precedente concede le autorizzazioni solo a un account di servizio Kubernetes gestito da Amazon EMR con un nome che corrisponde al pattern emr-containers-sa-*-*-AWS_ACCOUNT_ID-BASE36_ENCODED_ROLE_NAME. Gli account di servizio con tale pattern verranno creati in automatico all'invio del processo e assegnati all'ambito dello spazio dei nomi in cui invii il processo. La policy di affidabilità consente a questi account di servizio di assumere il ruolo di esecuzione e di ottenerne le credenziali temporanee. Agli account di servizi di un cluster Amazon EKS diverso o di uno spazio dei nomi diverso all'interno del medesimo cluster EKS è impedito di assumere il ruolo di esecuzione.

Per aggiornare in automatico la policy di affidabilità nel formato indicato sopra, puoi eseguire il comando seguente.

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

Controllo dell'accesso al ruolo di esecuzione

Un amministratore del cluster Amazon EKS può creare un cluster virtuale Amazon EMR su EKS multi-tenant a cui un amministratore IAM può aggiungere più ruoli di esecuzione. Poiché i tenant non affidabili possono utilizzare questi ruoli di esecuzione per inviare processi che eseguono un codice arbitrario, è consigliabile limitare tali tenant in modo che non possano eseguire un codice che ottiene le autorizzazioni assegnate a uno o più dei suddetti ruoli di esecuzione. Per limitare la policy IAM allegata a un'identità IAM, l'amministratore IAM può utilizzare la chiave di condizione del nome della risorsa Amazon (ARN) emr-containers:ExecutionRoleArn. Questa condizione accetta un elenco di ARN di ruoli di esecuzione che dispongono di autorizzazioni per il cluster virtuale, come mostra la policy di autorizzazione seguente.

{ "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": { "ArnEquals": { "emr-containers:ExecutionRoleArn": [ "execution_role_arn_1", "execution_role_arn_2", ... ] } } } ] }

Se desideri autorizzare tutti i ruoli di esecuzione che iniziano con un prefisso particolare, ad esempio MyRole, puoi sostituire l'operatore di condizione ArnEquals con l'operatore ArnLike e il valore execution_role_arn nella condizione con il carattere jolly *. Ad esempio, arn:aws:iam::AWS_ACCOUNT_ID:role/MyRole*. Sono supportate anche tutte le altre chiavi di condizione ARN.

Nota

Con Amazon EMR su EKS, non puoi concedere autorizzazioni a ruoli di esecuzione basati su tag o attributi. Amazon EMR su EKS non supporta il controllo degli accessi basato su tag (TBAC) né il controllo degli accessi basato su attributi (ABAC) per i ruoli di esecuzione.