Utilizzo dei ruoli di esecuzione dei processi con Amazon EMR su EKS - Amazon EMR

Utilizzo dei ruoli di esecuzione dei processi 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 del processo da utilizzare con un cluster virtuale. Per ulteriori informazioni, consulta Creazione di un ruolo di esecuzione del processo nella procedura Configurazione.

Le seguenti autorizzazioni devono essere incluse nella policy di affidabilità per il ruolo di esecuzione del 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 del servizio Kubernetes gestito da EMR con un nome che corrisponde al modello emr-containers-sa-*-*-AWS_ACCOUNT_ID-BASE36_ENCODED_ROLE_NAME. Ricorda che l'account del servizio gestito da EMR viene creato automaticamente all'invio del processo, nell'ambito dello spazio dei nomi in cui viene inviato il processo. La policy di affidabilità consente a questi account di servizio di assumere il ruolo di esecuzione e ottenere le credenziali temporanee del ruolo di esecuzione. Qualsiasi altro account di servizio da un cluster EKS diverso o da uno spazio dei nomi diverso all'interno dello stesso cluster EKS non può assumere il ruolo di esecuzione.

Per aggiornare automaticamente 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 EKS può creare un cluster virtuale Amazon EMR su EKS multi-tenant a cui un amministratore IAM può aggiungere più ruoli di esecuzione. Questi ruoli di esecuzione possono essere utilizzati per inviare processi da tenant non attendibili che eseguono codice arbitrario. Pertanto, è possibile limitare tali tenant in modo che non possano eseguire un codice che ottiene le autorizzazioni assegnate a uno o più di questi ruoli di esecuzione. È possibile utilizzare chiavi di condizione per limitare l'accesso ai ruoli di esecuzione. L'amministratore di IAM può limitare la policy IAM associata a un'identità IAM utilizzando una chiave di condizione a stringa facoltativa denominata emr-containers:ExecutionRoleArn. Questa condizione accetta un elenco di ARN del ruolo di esecuzione che dispongono di autorizzazioni per utilizzare un cluster virtuale, come dimostra la seguente policy di autorizzazioni.

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

Se si desidera autorizzare tutti i ruoli di esecuzione che iniziano con un prefisso particolare, ad esempio MyRole, l'operatore di condizione StringEquals può essere sostituito con un operatore StringLike e il valore execution_role_arn nella condizione può essere sostituito con il carattere jolly *. Ad esempio, arn:aws:iam::AWS_ACCOUNT_ID:role/MyRole*. Anche tutte le altre chiavi di condizione a stringa sono supportate.

Nota

Attualmente, Amazon EMR su EKS non supporta il controllo degli accessi basato su tag (TBAC) per i ruoli di esecuzione. Non è possibile concedere autorizzazioni per i ruoli di esecuzione in base ai tag.