Perfil do IAM para execução de Pod do Amazon EKS - Amazon EKS

Perfil do IAM para execução de Pod do Amazon EKS

A função de execução de Pod do Amazon EKS é necessária para executar Pods na infraestrutura do AWS Fargate.

Quando o cluster cria Pods na infraestrutura do AWS Fargate, os componentes que estão em execução na infraestrutura do Fargate devem fazer as chamadas para as APIs da AWS em seu nome. Isso ocorre para que eles possam realizar ações como extrair imagens de contêiner do Amazon ECR ou encaminhar logs para outros serviços da AWS. A função de execução de Pod do Amazon EKS fornece as permissões do IAM para isso.

Ao criar um perfil do Fargate, é necessário especificar uma função de execução de Pod para os componentes do Amazon EKS que são executados na infraestrutura do Fargate usando o perfil. Essa função é adicionada ao Controle de acesso com base em função (RBAC) do Kubernetes do cluster para autorização. Isso permite que o kubelet que está sendo executado na infraestrutura do Fargate seja registrado no cluster do Amazon EKS para aparecer no cluster como um nó.

nota

O perfil do Fargate deve ter uma função do IAM diferente dos grupos de nós do Amazon EC2.

Importante

Os contêineres em execução no Pod do Fargate não podem assumir as permissões do IAM associadas a uma função de execução de Pod. Para dar aos contêineres de Pod do Fargate permissões de acesso a outros serviços da AWS, você deve usar Perfis do IAM para contas de serviço.

Antes de criar um perfil do Fargate, é necessário criar um perfil do IAM com a AmazonEKSFargatePodExecutionRolePolicy.

Verifique se existe uma função de execução de Pod configurada corretamente

É possível usar o procedimento a seguir para verificar se a conta já tem uma função de execução de Pod do Amazon EKS configurada corretamente. Para evitar um problema de segurança de representante confuso, é importante que a função restrinja o acesso com base no SourceArn. É possível modificar a função de execução conforme necessário de forma a incluir suporte para perfis do Fargate em outros clusters.

Para verificar se há uma função de execução de Pod do Amazon EKS no console do IAM
  1. Abra o console IAM em https://console.aws.amazon.com/iam/.

  2. No painel de navegação à esquerda, escolha Roles.

  3. Na página Roles (Funções), procure AmazonEKSFargatePodExecutionRole na lista de funções. Se a função não existir, consulte Criar a função de execução de Pod do Amazon EKS para criá-la. Se a função existir, escolha-a.

  4. Na página AmazonEKSFargatePodExecutionRole, faça o seguinte:

    1. Escolha Permissões.

    2. Certifique-se de que a política gerenciada pela Amazon AmazonEKSFargatePodExecutionRolePolicy esteja associada ao perfil.

    3. Escolha Relações de Confiança.

    4. Escolha Edit trust policy (Editar política de confiança).

  5. Na página Edit trust policy (Editar política de confiança), verifique se a relação de confiança contém a política a seguir e tem uma linha para perfis do Fargate no cluster. Em caso afirmativo, escolha Cancel (Cancelar).

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Condition": { "ArnLike": { "aws:SourceArn": "arn:aws:eks:region-code:111122223333:fargateprofile/my-cluster/*" } }, "Principal": { "Service": "eks-fargate-pods.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

    Se a política corresponder, mas não tiver uma linha especificando os perfis do Fargate no seu cluster, será possível adicionar a seguinte linha sobre o objeto ArnLike. Substitua region-code pela Região da AWS na qual seu cluster se encontra, 111122223333 pelo ID da sua conta e my-cluster pelo nome do cluster.

    "aws:SourceArn": "arn:aws:eks:region-code:111122223333:fargateprofile/my-cluster/*",

    Se a política não corresponder, copie a política anterior completa para o formulário e escolha Update policy (Atualizar política). Substitua region-code pela Região da AWS em que seu cluster está localizado. Se você quiser usar a mesma função em todas as Regiões da AWS da sua conta, substitua region-code por *. Substitua 111122223333 pelo ID da conta e my-cluster pelo nome do cluster. Se quiser usar a mesma função para todos os clusters da sua conta, substitua my-cluster por *.

Criar a função de execução de Pod do Amazon EKS

Se você ainda não tiver a função de execução de Pod do Amazon EKS para o cluster, poderá utilizar o AWS Management Console ou a AWS CLI para criá-la.

AWS Management Console
Para criar um perfil de execução de Pod do AWS Fargate com o AWS Management Console
  1. Abra o console IAM em https://console.aws.amazon.com/iam/.

  2. No painel de navegação à esquerda, escolha Roles.

  3. Na página Roles (Funções), selecione Create role (Criar função).

  4. Na página Select trusted entity (Selecionar entidade confiável), faça o seguinte:

    1. Na seção Tipo de entidade confiável, escolha Serviço da AWS.

    2. Na lista suspensa Casos de uso para outros Serviços da AWS, escolha EKS.

    3. Escolha EKS - Fargate Pod.

    4. Escolha Next (Próximo).

  5. Na página Add permissions (Adicionar permissões), escolha Next (Próximo).

  6. Na página Name, review, and create (Nomear, revisar e criar), faça o seguinte:

    1. Em Role name (Nome da função), insira um nome exclusivo para a função, como AmazonEKSFargatePodExecutionRole.

    2. Em Adicionar tags (Opcional), adicione metadados ao perfil anexando tags como pares chave-valor. Para obter mais informações sobre o uso de tags no IAM, consulte Marcar recursos do IAM no Guia do usuário do IAM.

    3. Selecione Criar perfil.

  7. Na página Roles (Funções), procure AmazonEKSFargatePodExecutionRole na lista de funções. Selecione o perfil de .

  8. Na página AmazonEKSFargatePodExecutionRole, faça o seguinte:

    1. Escolha Relações de Confiança.

    2. Escolha Edit trust policy (Editar política de confiança).

  9. Na página Edit trust policy (Editar política de confiança), faça o seguinte:

    1. Copie e cole o conteúdo a seguir no formulário Edit trust policy (Editar política de confiança). Substitua region-code pela Região da AWS em que o seu cluster se encontra. Se você quiser usar a mesma função em todas as Regiões da AWS da sua conta, substitua region-code por *. Substitua 111122223333 pelo ID da conta e my-cluster pelo nome do cluster. Se quiser usar a mesma função para todos os clusters da sua conta, substitua my-cluster por *.

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Condition": { "ArnLike": { "aws:SourceArn": "arn:aws:eks:region-code:111122223333:fargateprofile/my-cluster/*" } }, "Principal": { "Service": "eks-fargate-pods.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
    2. Escolha Atualizar política.

AWS CLI
Para criar um perfil de execução de Pod do AWS Fargate com o AWS CLI
  1. Copie e cole o conteúdo a seguir em um arquivo denominado pod-execution-role-trust-policy.json. Substitua region-code pela Região da AWS em que o seu cluster se encontra. Se você quiser usar a mesma função em todas as Regiões da AWS da sua conta, substitua region-code por *. Substitua 111122223333 pelo ID da conta e my-cluster pelo nome do cluster. Se quiser usar a mesma função para todos os clusters da sua conta, substitua my-cluster por *.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Condition": { "ArnLike": { "aws:SourceArn": "arn:aws:eks:region-code:111122223333:fargateprofile/my-cluster/*" } }, "Principal": { "Service": "eks-fargate-pods.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
  2. Crie um perfil do IAM de execução de Pod.

    aws iam create-role \ --role-name AmazonEKSFargatePodExecutionRole \ --assume-role-policy-document file://"pod-execution-role-trust-policy.json"
  3. Anexe a política de IAM gerenciada pelo Amazon EKS à função.

    aws iam attach-role-policy \ --policy-arn arn:aws:iam::aws:policy/AmazonEKSFargatePodExecutionRolePolicy \ --role-name AmazonEKSFargatePodExecutionRole