

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

# Associar políticas de acesso a entradas de acesso
<a name="access-policies"></a>

Você pode atribuir uma ou mais políticas de acesso para *acessar entradas* do *tipo* `STANDARD`. O Amazon EKS concede automaticamente aos outros tipos de entradas de acesso as permissões necessárias para funcionar adequadamente em seu cluster. As políticas de acesso do Amazon EKS incluem permissões do Kubernetes, não permissões do IAM. Antes de associar uma política de acesso a uma entrada de acesso, familiarize-se com as permissões do Kubernetes incluídas em cada política de acesso. Para obter mais informações, consulte [Analisar permissões da política de acesso](access-policy-permissions.md). Se nenhuma das políticas de acesso atender aos seus requisitos, não associe uma política de acesso a uma entrada de acesso. Em vez disso, especifique um ou mais *nomes de grupos* para a entrada de acesso e crie e gerencie objetos de controle de acesso baseado em perfil do Kubernetes. Para obter mais informações, consulte [Criar entradas de acesso](creating-access-entries.md).
+ Uma entrada de acesso existente. Para criar uma, consulte [Criar entradas de acesso](creating-access-entries.md).
+ Um perfil ou usuário do AWS Identity and Access Management com as seguintes permissões: `ListAccessEntries`, `DescribeAccessEntry`, `UpdateAccessEntry`, `ListAccessPolicies`, `AssociateAccessPolicy`, e `DisassociateAccessPolicy`. Para obter mais informações, consulte [Actions defined by Amazon Elastic Kubernetes Service](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonelastickubernetesservice.html#amazonelastickubernetesservice-actions-as-permissions) na *Referência de autorização do serviço*.

Antes de associar políticas de acesso às entradas de acesso, considere os seguintes requisitos:
+ Você pode associar várias políticas de acesso a cada entrada de acesso, mas só pode associar cada política a uma entrada de acesso uma vez. Se você associar várias políticas de acesso, a entidade principal do IAM da entrada de acesso tem todas as permissões incluídas em todas as políticas de acesso associadas.
+ Você pode definir o escopo de uma política de acesso para todos os recursos em um cluster ou especificando o nome de um ou mais namespaces do Kubernetes. Você pode usar caracteres curinga para o nome de um namespace. Por exemplo, se você quiser definir o escopo de uma política de acesso para todos os namespaces que começam com `dev-`, você pode especificar `dev-*` como um nome de namespace. Verifique se os namespaces existem no cluster e se a ortografia corresponde ao nome real do namespace no cluster. O Amazon EKS não confirma a ortografia nem a existência dos namespaces no seu cluster.
+ Você pode alterar o *escopo de acesso* de uma política de acesso depois de associá-la a uma entrada de acesso. Caso tenha definido o escopo da política de acesso para namespaces do Kubernetes, você pode adicionar e remover namespaces da associação, conforme necessário.
+ Se você associar uma política de acesso a uma entrada de acesso que também tenha *nomes de grupos* especificados, a entidade principal do IAM terá todas as permissões em todas as políticas de acesso associadas. Ela também tem todas as permissões em qualquer objeto `Role` ou `ClusterRole` do Kubernetes especificado em qualquer objeto `Role` ou `RoleBinding` do Kubernetes que especifica os nomes dos grupos.
+ Caso execute o comando `kubectl auth can-i --list`, você não verá nenhuma permissão do Kubernetes atribuída pelas políticas de acesso associadas a uma entrada de acesso para a entidade principal do IAM que você está usando ao executar o comando. O comando só mostrará as permissões do Kubernetes se você as tiver concedido em objetos `Role` ou `ClusterRole` do Kubernetes vinculados aos nomes de grupo ou ao nome de usuário que você especificou para uma entrada de acesso.
+ Se você representar um usuário ou grupo do Kubernetes ao interagir com objetos do Kubernetes no cluster, como usar o comando `kubectl` com `--as {{username}} ` ou `--as-group {{group-name}} `, você estará forçando o uso da autorização RBAC do Kubernetes. Como resultado, a entidade principal do IAM não tem permissões atribuídas por nenhuma política de acesso associada à entrada de acesso. As únicas permissões do Kubernetes que o usuário ou grupo que a entidade principal do IAM está representando tem são as permissões do Kubernetes que você concedeu a eles em objetos `Role` ou `ClusterRole` do Kubernetes que você vinculou aos nomes do grupo ou do usuário. Para que a entidade principal do IAM tenha as permissões nas políticas de acesso associadas, não represente um usuário ou grupo do Kubernetes. A entidade principal do IAM ainda terá todas as permissões que você concedeu a ela nos objetos `Role` ou `ClusterRole` do Kubernetes que você vinculou aos nomes dos grupos ou do usuário que você especificou para a entrada de acesso. Para obter mais informações, consulte [Personificação de usuário](https://kubernetes.io/docs/reference/access-authn-authz/authentication/#user-impersonation) na documentação do Kubernetes.

Você pode associar uma política de acesso a uma entrada de acesso usando o Console de gerenciamento da AWS ou a AWS CLI.

## Console de gerenciamento da AWS
<a name="access-associate-console"></a>

1. Abra o [console do Amazon EKS](https://console.aws.amazon.com/eks/home#/clusters).

1. Escolha o nome do cluster que tem uma entrada de acesso à qual você deseja associar uma política de acesso.

1. Escolha a guia **Acesso**.

1. Se o tipo da entrada de acesso for **Padrão**, você poderá associar ou desassociar as **políticas de acesso** do Amazon EKS. Se o tipo da sua entrada de acesso for diferente de **Padrão**, essa opção não estará disponível.

1. Escolha **Associar política de acesso**.

1. Em **Nome da política**, selecione a política com as permissões que você deseja que a entidade principal do IAM tenha.. Para visualizar as permissões incluídas em cada política, consulte [Analisar permissões da política de acesso](access-policy-permissions.md).

1. Em **Escopo de acesso**, escolha um escopo de acesso. Se você escolher **Cluster**, as permissões na política de acesso serão concedidas à entidade principal do IAM para recursos em todos os namespaces do Kubernetes. Se você escolher **Namespace do Kubernetes**, poderá então escolher **Adicionar novo namespace**. No campo **Namespace** exibido, você pode inserir o nome de um namespace do Kubernetes no cluster. Se quiser que a entidade principal do IAM tenha as permissões em vários namespaces, você pode inserir vários namespaces.

1. Escolha **Adicionar política de acesso**.

## AWS CLI
<a name="access-associate-cli"></a>

1. Versão `2.12.3` ou posterior ou versão `1.27.160` ou posterior da AWS Command Line Interface (AWS CLI) instalada e configurada no seu dispositivo ou no AWS CloudShell. Para verificar sua versão atual, use `aws --version | cut -d / -f2 | cut -d ' ' -f1`. Os gerenciadores de pacotes, como `yum`, `apt-get` ou Homebrew para macOS, geralmente estão várias versões atrás da versão mais recente da AWS CLI. Para instalar a versão mais recente, consulte [Installing](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-install.html) e [Quick configuration with aws configure](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-quickstart.html#cli-configure-quickstart-config), no *Guia do usuário da AWS Command Line Interface*. A versão da AWS CLI instalada no AWS CloudShell também pode estar várias versões atrás da versão mais recente. Para atualizá-lo, consulte [Instalar a AWS CLI no seu diretório pessoal](https://docs.aws.amazon.com/cloudshell/latest/userguide/vm-specs.html#install-cli-software), no * Guia do usuário do AWS CloudShell*.

1. Visualize as políticas de acesso disponíveis.

   ```
   aws eks list-access-policies --output table
   ```

   Veja abaixo um exemplo de saída.

   ```
   ---------------------------------------------------------------------------------------------------------
   |                                          ListAccessPolicies                                           |
   +-------------------------------------------------------------------------------------------------------+
   ||                                           accessPolicies                                            ||
   |+---------------------------------------------------------------------+-------------------------------+|
   ||                                 arn                                 |             name              ||
   |+---------------------------------------------------------------------+-------------------------------+|
   ||  {arn-aws}eks::aws:cluster-access-policy/AmazonEKSAdminPolicy        |  AmazonEKSAdminPolicy         ||
   ||  {arn-aws}eks::aws:cluster-access-policy/AmazonEKSClusterAdminPolicy |  AmazonEKSClusterAdminPolicy  ||
   ||  {arn-aws}eks::aws:cluster-access-policy/AmazonEKSEditPolicy         |  AmazonEKSEditPolicy          ||
   ||  {arn-aws}eks::aws:cluster-access-policy/AmazonEKSViewPolicy         |  AmazonEKSViewPolicy          ||
   |+---------------------------------------------------------------------+-------------------------------+|
   ```

   Para visualizar as permissões incluídas em cada política, consulte [Analisar permissões da política de acesso](access-policy-permissions.md).

1. Visualize suas entradas de acesso existentes. Substitua {{my-cluster}} pelo nome do cluster.

   ```
   aws eks list-access-entries --cluster-name my-cluster
   ```

   Veja abaixo um exemplo de saída.

   ```
   {
       "accessEntries": [
           "arn:aws:iam::111122223333:role/my-role",
           "arn:aws:iam::111122223333:user/my-user"
       ]
   }
   ```

1. Associe uma política de acesso a uma entrada de acesso. O exemplo a seguir associa a política de acesso do `AmazonEKSViewPolicy` a uma entrada de acesso. Sempre que o perfil do IAM {{my-role}} tentar acessar objetos do Kubernetes no cluster, o Amazon EKS autorizará o perfil a usar as permissões na política para acessar os objetos do Kubernetes somente nos namespaces {{my-namespace1}} e {{my-namespace2}} do Kubernetes. Substitua {{my-cluster}} pelo nome do cluster, {{111122223333}} pelo ID da conta AWS e {{my-role}} pelo nome do perfil do IAM para o qual você deseja que o Amazon EKS autorize o acesso aos objetos do cluster do Kubernetes.

   ```
   aws eks associate-access-policy --cluster-name my-cluster --principal-arn arn:aws:iam::111122223333:role/my-role \
       --access-scope type=namespace,namespaces=my-namespace1,my-namespace2 --policy-arn arn:aws:eks::aws:cluster-access-policy/AmazonEKSViewPolicy
   ```

   Se você quiser que a entidade principal do IAM tenha as permissões em todo o cluster, substitua `type=namespace,namespaces={{my-namespace1}},{{my-namespace2}} ` por `type=cluster`. Se você quiser associar várias políticas de acesso à entrada de acesso, execute o comando várias vezes, cada uma com uma política de acesso exclusiva. Cada política de acesso associada tem seu próprio escopo.
**nota**  
Se você quiser alterar posteriormente o escopo de uma política de acesso associada, execute o comando anterior novamente com o novo escopo. Por exemplo, se você quisesse remover {{my-namespace2}}, executaria o comando novamente usando somente `type=namespace,namespaces={{my-namespace1}} `. Se você quisesse alterar o escopo de `namespace` para `cluster`, executaria o comando novamente usando `type=cluster`, removendo `type=namespace,namespaces={{my-namespace1}},{{my-namespace2}} `.

1. Determine quais políticas de acesso estão associadas a uma entrada de acesso.

   ```
   aws eks list-associated-access-policies --cluster-name my-cluster --principal-arn arn:aws:iam::111122223333:role/my-role
   ```

   Veja abaixo um exemplo de saída.

   ```
   {
       "clusterName": "my-cluster",
       "principalArn": "arn:aws:iam::111122223333",
       "associatedAccessPolicies": [
           {
               "policyArn": "arn:aws:eks::aws:cluster-access-policy/AmazonEKSViewPolicy",
               "accessScope": {
                   "type": "cluster",
                   "namespaces": []
               },
               "associatedAt": "2023-04-17T15:25:21.675000-04:00",
               "modifiedAt": "2023-04-17T15:25:21.675000-04:00"
           },
           {
               "policyArn": "arn:aws:eks::aws:cluster-access-policy/AmazonEKSAdminPolicy",
               "accessScope": {
                   "type": "namespace",
                   "namespaces": [
                       "my-namespace1",
                       "my-namespace2"
                   ]
               },
               "associatedAt": "2023-04-17T15:02:06.511000-04:00",
               "modifiedAt": "2023-04-17T15:02:06.511000-04:00"
           }
       ]
   }
   ```

   No exemplo anterior, a entidade principal do IAM para essa entrada de acesso tem permissões de visualização em todos os namespaces no cluster e permissões de administrador em dois namespaces do Kubernetes.

1. Desassocie uma política de acesso de uma entrada de acesso. Neste exemplo, a política `AmazonEKSAdminPolicy` é desassociada de uma entrada de acesso. No entanto, a entidade principal do IAM retém as permissões na política de acesso `AmazonEKSViewPolicy` para objetos nos namespaces {{my-namespace1}} e {{my-namespace2}} porque essa política de acesso não está dissociada da entrada de acesso.

   ```
   aws eks disassociate-access-policy --cluster-name my-cluster --principal-arn arn:aws:iam::111122223333:role/my-role \
       --policy-arn arn:aws:eks::aws:cluster-access-policy/AmazonEKSAdminPolicy
   ```

Para listar as políticas de acesso disponíveis, consulte [Analisar permissões da política de acesso](access-policy-permissions.md).