

 **Ajudar a melhorar esta página** 

Para contribuir com este guia de usuário, escolha o link **Editar esta página no GitHub**, disponível no painel direito de cada página.

# Perfil do IAM para a funcionalidade do Amazon EKS
<a name="capability-role"></a>

As funcionalidades do EKS exigem a configuração de um perfil do IAM para a funcionalidade (ou perfil da funcionalidade). As funcionalidades usam esse perfil para realizar ações em serviços da AWS e para acessar recursos do Kubernetes no cluster por meio de entradas de acesso criadas automaticamente.

Antes que você possa especificar um perfil da funcionalidade durante a criação desta, é necessário criar o perfil do IAM com a política de confiança e as permissões adequadas ao tipo de funcionalidade. Assim que este perfil do IAM for criado, ele poderá ser reaproveitado para qualquer quantidade de recursos da funcionalidade.

## Requisitos do perfil da funcionalidade
<a name="_capability_role_requirements"></a>

O perfil da funcionalidade deve atender aos seguintes requisitos:
+ O perfil deve estar na mesma conta da AWS que o cluster e o recurso da funcionalidade
+ O perfil deve ter uma política de confiança que permita ao serviço de funcionalidades do EKS assumir o perfil
+ O perfil deve ter permissões apropriadas para o tipo de funcionalidade e para os requisitos do caso de uso (consulte [Permissões por tipo de funcionalidade](#capability-permissions))

## Política de confiança para perfis da funcionalidade
<a name="capability-trust-policy"></a>

Todos os perfis da funcionalidade devem incluir a seguinte política de confiança:

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

Esta política de confiança autoriza o EKS a:
+ Assumir o perfil para executar operações de API da AWS
+ Marcar sessões para fins de auditoria e rastreamento

## Permissões por tipo de funcionalidade
<a name="capability-permissions"></a>

As permissões do IAM exigidas variam conforme a funcionalidade que você usa e o modelo de implantação.

**nota**  
Para implantações em ambientes de produção usando seletores de perfil do IAM com o ACK, ou ao usar o kro ou o Argo CD sem integração com serviços da AWS, o perfil da funcionalidade talvez não requeira permissões do IAM além da política de confiança.

 **kro (Kube Resource Orchestrator)**   
Não são necessárias permissões do IAM. É possível criar um perfil da funcionalidade sem políticas vinculadas. O kro requer apenas permissões de RBAC do Kubernetes para a criação e o gerenciamento de recursos do Kubernetes.

 ** AWS Controlllers for Kubernetes (ACK) da)**   
O ACK fornece suporte a dois modelos de permissão:  
+  **Configuração simples para ambientes de desenvolvimento e teste**: adicione permissões para os serviços da AWS diretamente ao perfil da funcionalidade. Esta opção é ideal para começar a usar, em implantações realizadas em uma única conta ou quando todos os usuários necessitam das mesmas permissões.
+  **Prática recomendada para ambientes de produção**: use seletores de perfil do IAM para implementar o acesso de privilégio mínimo. Com essa abordagem, o perfil da funcionalidade precisa apenas da permissão `sts:AssumeRole` para assumir perfis específicos de serviço. Você não adiciona permissões de serviços da AWS (como o S3 ou o RDS) diretamente ao perfil da funcionalidade. Essas permissões são concedidas a perfis do IAM individuais que são mapeados para namespaces específicos.

  Os seletores de perfil do IAM permitem:
  + Isolamento de permissões em nível de namespace
  + Gerenciamento de recursos entre contas
  + Perfis do IAM exclusivos para cada equipe
  + Modelo de segurança com privilégio mínimo

    Exemplo de política de perfil da funcionalidade para a abordagem de seletor de perfil do IAM:

    ```
    {
      "Version": "2012-10-17",		 	 	 
      "Statement": [
        {
          "Effect": "Allow",
          "Action": "sts:AssumeRole",
          "Resource": [
            "arn:aws:iam::111122223333:role/ACK-S3-Role",
            "arn:aws:iam::111122223333:role/ACK-RDS-Role",
            "arn:aws:iam::444455556666:role/ACKCrossAccountRole"
          ]
        }
      ]
    }
    ```

    Para obter detalhes sobre a configuração de permissões do ACK, incluindo os seletores de perfil do IAM, consulte [Configuração das permissões do ACK](ack-permissions.md).

 **Argo CD**   
Por padrão, nenhuma permissão do IAM é necessária. Entretanto, permissões adicionais podem ser exigidas para:  
+  **AWS Secrets Manager**: se estiver usando o Secrets Manager para armazenar credenciais de repositório do Git
+  **AWS CodeConnections**: se usar o CodeConnections para realizar autenticação em repositórios do Git

  Exemplo de política para o Secrets Manager e para o CodeConnections:

  ```
  {
    "Version": "2012-10-17",		 	 	 
    "Statement": [
      {
        "Effect": "Allow",
        "Action": [
          "secretsmanager:GetSecretValue",
          "secretsmanager:DescribeSecret"
        ],
        "Resource": "arn:aws:secretsmanager:region:account-id:secret:argocd/*"
      },
      {
        "Effect": "Allow",
        "Action": [
          "codeconnections:UseConnection",
          "codeconnections:GetConnection"
        ],
        "Resource": "arn:aws:codeconnections:region:account-id:connection/*"
      }
    ]
  }
  ```

  Para obter detalhes sobre os requisitos da permissão do Argo CD, consulte [Considerações sobre o Argo CD](argocd-considerations.md).

## Verificação da existência de um perfil da funcionalidade
<a name="check-capability-role"></a>

Você pode usar o procedimento apresentado a seguir para verificar se a conta já tem um perfil do IAM para a funcionalidade que seja adequado ao seu caso de uso.

1. Abra o console do IAM em https://console.aws.amazon.com/iam/.

1. No painel de navegação à esquerda, escolha **Funções**.

1. Pesquise na lista de perfis pelo nome do perfil da funcionalidade (por exemplo, `ACKCapabilityRole` ou `ArgoCDCapabilityRole`).

1. Se um perfil existir, selecione-o para visualizar as políticas anexadas e a relação de confiança.

1. Escolha **Relações de confiança** e, em seguida, escolha **Editar política de confiança**.

1. Verifique se a relação de confiança corresponde à [política de confiança da funcionalidade](#capability-trust-policy). Se não houver correspondência, atualize a política de confiança.

1. Selecione a guia **Permissões** e valide se o perfil conta com as permissões adequadas ao seu tipo de funcionalidade e às necessidades do caso de uso.

## Criação de um perfil do IAM para a funcionalidade
<a name="create-capability-role"></a>

É possível usar o Console de gerenciamento da AWS ou a AWS CLI para a criação de um perfil da funcionalidade.

 ** Console de gerenciamento da AWS **   

1. Abra o console do IAM em https://console.aws.amazon.com/iam/.

1. Escolha **Roles (Funções)** e, em seguida, **Create Role (Criar função)**.

1. Em **Tipo de entidade confiável**, selecione **Política de confiança personalizada**.

1. Copie e cole a [política de confiança da funcionalidade](#capability-trust-policy) no editor de política de confiança.

1. Escolha **Próximo**.

1. Na guia **Adicionar permissões**, selecione ou crie as políticas apropriadas para o seu tipo de funcionalidade (consulte [Permissões por tipo de funcionalidade](#capability-permissions)). Para o kro, você pode pular esta etapa.

1. Escolha **Próximo**.

1. Em **Nome do perfil**, insira um nome exclusivo para o seu perfil, como`ACKCapabilityRole`, `ArgoCDCapabilityRole` ou `kroCapabilityRole`.

1. Em **Description** (Descrição), insira um texto descritivo, como `Amazon EKS - ACK capability role`.

1. Selecione **Criar perfil**.

 ** AWS CLI**   

1. Copie a [política de confiança da funcionalidade](#capability-trust-policy) para um arquivo chamado `capability-trust-policy.json`.

1. Crie a função. Substitua `ACKCapabilityRole` pelo nome de perfil desejado.

   ```
   aws iam create-role \
     --role-name ACKCapabilityRole \
     --assume-role-policy-document file://capability-trust-policy.json
   ```

1. Anexe as políticas do IAM necessárias ao perfil. Para o ACK, anexe as políticas dos serviços da AWS que você deseja gerenciar. Para o Argo CD, anexe políticas para o Secrets Manager ou CodeConnections, se necessário. Para o kro, você pode pular esta etapa.

   Exemplo para o ACK com permissões de S3:

   ```
   aws iam put-role-policy \
     --role-name ACKCapabilityRole \
     --policy-name S3Management \
     --policy-document file://s3-policy.json
   ```

## Solução de problemas em perfis da funcionalidade
<a name="troubleshooting-capability-role"></a>

 **Criação da funcionalidade apresentou falhas com o erro “Perfil do IAM inválido"**   
Verificar se:  
+ O perfil existe na mesma conta que o cluster
+ A política de confiança corresponde à [política de confiança da funcionalidade](#capability-trust-policy) 
+ Você conta com a permissão `iam:PassRole` para o perfil

 **Funcionalidade apresenta erros de permissão**   
Verificar se:  
+ O perfil tem as permissões do IAM necessárias para o tipo de funcionalidade
+ A entrada de acesso existe no cluster para o perfil
+ As permissões adicionais do Kubernetes estão configuradas, se necessário (consulte [Permissões adicionais do Kubernetes](capabilities-security.md#additional-kubernetes-permissions))

 **Recursos do ACK apresentam falhas com erros de “Permissão negada**   
Verificar se:  
+ O perfil tem as permissões do IAM necessárias para o caso de uso
+ Para controladores do ACK que referenciam segredos, certifique-se de ter associado a política de entrada de acesso `AmazonEKSSecretReaderPolicy` com escopo para os namespaces apropriados.

Para obter mais orientações sobre a solução de problemas, consulte [Considerações sobre segurança para funcionalidades do EKS](capabilities-security.md).