Uso de perfis de execução de trabalho com o Amazon EMR no EKS - Amazon EMR

Uso de perfis de execução de trabalho com o Amazon EMR no EKS

Para usar o comando StartJobRun para enviar uma execução de trabalho em um cluster do EKS, primeiro é necessário integrar um perfil de execução de trabalho para ser usado com um cluster virtual. Para obter mais informações, consulte Criação de um perfil de execução de trabalho em Configuração do Amazon EMR no EKS. Você também pode seguir as instruções na seção Create IAM Role for job execution do Amazon EMR on EKS Workshop.

As permissões apresentadas a seguir devem ser inclusas na política de confiança para o perfil de execução de trabalho.

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

A política de confiança no exemplo anterior concede permissões somente para uma conta de serviço do Kubernetes gerenciada pelo Amazon EMR com um nome que corresponda ao padrão emr-containers-sa-*-*-AWS_ACCOUNT_ID-BASE36_ENCODED_ROLE_NAME. As contas de serviço com esse padrão serão criadas automaticamente no envio do trabalho e terão como escopo o namespace no qual você envia o trabalho. Esta política de confiança permite que estas contas de serviço assumam o perfil de execução e obtenham as credenciais temporárias para o perfil de execução. As contas de serviço de um cluster diferente do Amazon EKS ou de um namespace diferente no mesmo cluster do EKS estão impedidas de assumir o perfil de execução.

Você pode executar o comando apresentado a seguir para atualizar automaticamente a política de confiança no formato fornecido acima.

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

Controle do acesso ao perfil de execução

Um administrador do cluster do Amazon EKS pode criar um cluster virtual multilocatário do Amazon EMR no EKS ao qual um administrador do IAM pode adicionar diversos perfis de execução. Como os locatários não confiáveis ​​podem usar esses perfis de execução para enviar trabalhos que executam códigos arbitrários, você pode desejar restringir esses locatários para que eles não possam executar códigos que concedem as permissões atribuídas a um ou mais desses perfis de execução. Para restringir a política do IAM anexada a uma identidade do IAM, o administrador do IAM pode usar a chave de condição opcional emr-containers:ExecutionRoleArn do nome do recurso da Amazon (ARN). Essa condição aceita uma lista de ARNs de perfis de execução que têm permissões para o cluster virtual, conforme demonstra a política de permissões a seguir.

{ "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 desejar permitir todos os perfis de execução que começam com um prefixo específico, como MyRole, você poderá substituir o operador de condição ArnEquals pelo operador ArnLike, e poderá substituir o valor de execution_role_arn na condição por um caractere curinga *. Por exemplo, arn:aws:iam::AWS_ACCOUNT_ID:role/MyRole*. Todas as outras chaves de condição de ARN também são compatíveis.

nota

Com o Amazon EMR no EKS, não é possível conceder permissões para perfis de execução com base em etiquetas ou atributos. O Amazon EMR no EKS não oferece suporte ao controle de acesso por etiqueta (TBAC) ou ao controle de acesso por atributo (ABAC) para perfis de execução.