Perfil do IAM em nós do Amazon EKS - Amazon EKS

Perfil do IAM em nós do Amazon EKS

O daemon kubelet do nó do Amazon EKS chama as APIs da AWS em seu nome. Os nós recebem permissões para essas chamadas de API por meio de um perfil de instância do IAM e políticas associadas. Antes de iniciar os nós e registrá-los em um cluster, você deve criar um perfil do IAM para uso desses nós quando eles forem iniciados. Esse requisito se aplica a nós executados com a AMI otimizada para Amazon EKS fornecida pela Amazon ou com qualquer outra AMI do nó que você pretende usar. Além disso, este requisito se aplica tanto aos grupos de nós gerenciados quanto aos nós autogerenciados.

nota

Não é possível usar a mesma função usada para criar clusters.

Antes de criar os nós, é necessário criar um perfil do IAM com as seguintes permissões:

  • Permissões para que o kubelet descreva os recursos do Amazon EC2 na VPC, conforme fornecido pela política AmazonEKSWorkerNodePolicy. Esta política também fornece as permissões para o Amazon EKS Pod Identity Agent.

  • Permissões para que o kubelet use imagens de contêiner do Amazon Elastic Container Registry (Amazon ECR), como as fornecidas pela política AmazonEC2ContainerRegistryReadOnly. As permissões para usar imagens de contêiner do Amazon Elastic Container Registry (Amazon ECR) são necessárias porque os complementos integrados para a rede executam pods que usam imagens de contêiner do Amazon ECR.

  • (Opcional) Permissões para que o Amazon EKS Pod Identity Agent use a ação eks-auth:AssumeRoleForPodIdentity para recuperar credenciais para pods. Se você não usa o AmazonEKSWorkerNodePolicy, forneça esta permissão além das permissões do EC2 para usar o EKS Pod Identity.

  • (Opcional) Se você não usa o IRSA ou o EKS Pod Identity para conceder permissões aos pods da VPC CNI, forneça permissões para a VPC CNI na função da instância. É possível usar tanto a política gerenciada AmazonEKS_CNI_Policy (caso você tenha criado o seu cluster com a família IPv4) ou uma política IPv6 criada por você (caso tenha criado o seu cluster com a família IPv6). Contudo, em vez de anexar a política à essa função, recomendamos que você anexe a política a uma função separada usada especificamente para o complemento CNI da Amazon VPC. Para obter mais informações sobre a criação de uma função separada para o complemento CNI da Amazon VPC, consulte Configuração do Amazon VPC CNI plugin for Kubernetes a fim de usar perfis do IAM para contas de serviço (IRSA).

nota

Antes de 3 de outubro de 2023, AmazonEKSWorkerNodePolicy e AmazonEC2ContainerRegistryReadOnly eram obrigatórios no perfil do IAM para cada grupo de nós gerenciados.

Os grupos de nós do Amazon EC2 devem ter uma função do IAM diferente do perfil do Fargate. Para obter mais informações, consulte Perfil do IAM para execução de Pod do Amazon EKS.

Verificar se há uma função existente do nó

Use o procedimento a seguir para verificar se a conta já tem a função de nó do Amazon EKS.

Para verificar a eksNodeRole 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. Procure eksNodeRole, AmazonEKSNodeRole ou NodeInstanceRole na lista de funções. Se não houver uma função com um desses nomes, consulte Criação de uma função para a função do IAM de nó do Amazon EKS para criar a função. Se houver uma função que contenha eksNodeRole, AmazonEKSNodeRole ou NodeInstanceRole, selecione-a para visualizar as políticas anexadas.

  4. Escolha Permissões.

  5. Assegure-se de que as políticas gerenciadas AmazonEKSWorkerNodePolicy e AmazonEC2ContainerRegistryReadOnly estejam anexadas à função ou que uma política personalizada seja anexada com as permissões mínimas necessárias

    nota

    Se a AmazonEKS_CNI_Policy estiver anexada à função, recomendamos removê-la e anexá-la a um perfil do IAM mapeado para a conta do serviço do Kubernetes do aws-node. Para obter mais informações, consulte Configuração do Amazon VPC CNI plugin for Kubernetes a fim de usar perfis do IAM para contas de serviço (IRSA).

  6. Escolha Trust relationships (Relacionamentos de confiança) e, em seguida, escolha Edit trust policy (Editar política de confiança).

  7. Verifique se o relacionamento de confiança contém a seguinte política: Se o relacionamento de confiança corresponder à seguinte política, escolha Cancel (Cancelar). Se o relacionamento de confiança não corresponder, copie a política para a janela Edit trust policy (Editar política de confiança) e escolha Update policy (Atualizar política).

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "ec2.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

Criação de uma função para a função do IAM de nó do Amazon EKS

É possível criar a função do IAM de nós com o AWS Management Console ou a AWS CLI.

AWS Management Console
Para criar a função do IAM de nó no console do Amazon EKS
  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. Em Use case (Caso de uso), selecione EC2.

    3. Escolha Next (Próximo).

  5. Na página Add permissions (Adicionar permissões), faça o seguinte:

    1. Na caixa Filter policies (Políticas de filtro) insira AmazonEKSWorkerNodePolicy.

    2. Marque a caixa de seleção à esquerda de AmazonEKSWorkerNodePolicy nos resultados da pesquisa.

    3. Escolha Clear filters (Limpar filtros).

    4. Na caixa Filter policies (Políticas de filtro) insira AmazonEC2ContainerRegistryReadOnly.

    5. Marque a caixa de seleção à esquerda de AmazonEC2ContainerRegistryReadOnly nos resultados da pesquisa.

      A política gerenciada AmazonEKS_CNI_Policy ou uma política de IPv6 que você criar também deverá ser anexada a essa função ou a uma função diferente que seja mapeada para a conta de serviço do Kubernetes do aws-node. Recomendamos atribuir a política à função associada à conta de serviço do Kubernetes em vez de atribuí-la a essa função. Para obter mais informações, consulte Configuração do Amazon VPC CNI plugin for Kubernetes a fim de usar perfis do IAM para contas de serviço (IRSA).

    6. 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 AmazonEKSNodeRole.

    2. Em Description (Descrição), substitua o texto atual por um texto descritivo como Amazon EKS - Node role.

    3. 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.

    4. Selecione Criar perfil.

AWS CLI
  1. Execute o seguinte comando para criar o arquivo node-role-trust-relationship.json.

    cat >node-role-trust-relationship.json <<EOF { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "ec2.amazonaws.com" }, "Action": "sts:AssumeRole" } ] } EOF
  2. Crie o perfil do IAM.

    aws iam create-role \ --role-name AmazonEKSNodeRole \ --assume-role-policy-document file://"node-role-trust-relationship.json"
  3. Anexe duas políticas do IAM gerenciadas necessárias à função do IAM.

    aws iam attach-role-policy \ --policy-arn arn:aws:iam::aws:policy/AmazonEKSWorkerNodePolicy \ --role-name AmazonEKSNodeRole aws iam attach-role-policy \ --policy-arn arn:aws:iam::aws:policy/AmazonEC2ContainerRegistryReadOnly \ --role-name AmazonEKSNodeRole
  4. Anexe uma das seguintes políticas do IAM à função do IAM, dependendo de com qual família de IP você criou o seu cluster. A política deve ser anexada a essa função ou a uma função associada à conta de serviço do aws-node do Kubernetes que é usada para o Amazon VPC CNI plugin for Kubernetes. Recomendamos atribuir a política à função associada à conta de serviço do Kubernetes. Para atribuir a política à função associada à conta de serviço do Kubernetes, consulte Configuração do Amazon VPC CNI plugin for Kubernetes a fim de usar perfis do IAM para contas de serviço (IRSA).

    • IPv4

      aws iam attach-role-policy \ --policy-arn arn:aws:iam::aws:policy/AmazonEKS_CNI_Policy \ --role-name AmazonEKSNodeRole
    • IPv6

      1. Copie o texto a seguir e salve-o em um arquivo chamado vpc-cni-ipv6-policy.json.

        { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:AssignIpv6Addresses", "ec2:DescribeInstances", "ec2:DescribeTags", "ec2:DescribeNetworkInterfaces", "ec2:DescribeInstanceTypes" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "ec2:CreateTags" ], "Resource": [ "arn:aws:ec2:*:*:network-interface/*" ] } ] }
      2. Crie a política do IAM.

        aws iam create-policy --policy-name AmazonEKS_CNI_IPv6_Policy --policy-document file://vpc-cni-ipv6-policy.json
      3. Anexe a política do IAM à função do IAM. Substitua 111122223333 pelo ID da sua conta.

        aws iam attach-role-policy \ --policy-arn arn:aws:iam::111122223333:policy/AmazonEKS_CNI_IPv6_Policy \ --role-name AmazonEKSNodeRole