Knowledge Center Monthly Newsletter - March 2025
Stay up to date with the latest from the Knowledge Center. See all new and updated Knowledge Center articles published in the last month and re:Post’s top contributors.
Como conceder acesso ao cluster a outros usuários e perfis do IAM após a criação de um cluster no Amazon EKS?
Quando uso os comandos kubectl para acessar um cluster do Amazon Elastic Kubernetes Service (Amazon EKS), recebo a mensagem de erro “erro: Você deve estar conectado ao servidor (não autorizado)”.
Breve descrição
Se o usuário ou o perfil do AWS Identity and Access Management (AWS IAM) criar um cluster do Amazon EKS diferente do cluster usado por aws-iam-authenticator, você receberá a mensagem de erro Não autorizado. Para resolver esse problema, configure o controle de acesso baseado em funções (RBAC) do cluster Amazon EKS para autorizar a entidade do IAM. Para mais informações sobre RBAC, consulte Uso da autorização do RBAC, no site do Kubernetes.
Somente o criador do cluster do Amazon EKS tem permissões system:masters para configurar o cluster. Há duas maneiras de estender as permissões system:masters para outros usuários e perfis do IAM:
- Considere as credenciais do criador do cluster. Em seguida, adicione o perfil do IAM na seção mapRoles do aws-auth ConfigMap.
- Use entradas de acesso EKS.
Importante: é uma prática recomendada não adicionar cluster\ _creator ao ConfigMap. Se você configurar incorretamente o ConfigMap, todos os usuários e perfis do IAM, incluindo o cluster\ _creator, poderão perder permanentemente o acesso ao cluster Amazon EKS. Por padrão, o cluster\ _creator tem acesso de administrador ao cluster que ele criou, então você não precisa adicionar o cluster\ _creater ao aws-auth ConfigMap.
Observação: na resolução a seguir, cluster\ _creator é a entidade do IAM que cria o cluster no Amazon EKS. O usuário ao qual você está concedendo acesso é designated_user.
Resolução
Observação: se você receber erros ao executar comandos da AWS Command Line Interface (AWS CLI), consulte Soluçãode erros da AWS CLI. Além disso, verifique se você está usando a versão mais recente da AWS CLI.
Identifique o usuário ou perfil do IAM do criador do cluster
Identifique a entidade do IAM do criador do cluster que tem acesso primário para configurar seu cluster do Amazon EKS. Para identificar o criador do cluster, pesquise a chamada de API CreateCluster no AWS CloudTrail e verifique a seção userIdentity da chamada de API.
Em seguida, identifique a entidade do IAM para a qual você está concedendo autorização depois de criar o cluster.
Use aws-auth ConfigMap para conceder acesso ao cluster quando cluster\ _creator for um usuário do IAM
Conclua as seguintes etapas:
-
Instale o kubectl na sua máquina host local. Ou, se tiver uma instância dedicada do Amazon Elastic Compute Cloud (Amazon EC2) com um pacote kubectl instalado, use SSH para se conectar à instância.
-
Na máquina host em que o kubectl está instalado, configure a AWS CLI com as credenciais designated_user:
aws configure
-
Execute o comando get-caller-identity da AWS CLI:
aws sts get-caller-identity
A saída retorna os detalhes do usuário do IAM para designated_user:
{ "UserId": "#####################", "Account": "############", "Arn": "arn:aws:iam::############:user/designated_user" }
-
Liste os pods que estão sendo executados no cluster do namespace padrão:
kubectl get pods --namespace default
A saída mostra a mensagem de erro Não autorizado porque designated_user não tem autorização para acessar o cluster Amazon EKS.
-
Configure o ID da chave de acesso da AWS e a chave de acesso secreta da AWS do cluster_creator.
Se você usou o console do Amazon EKS para criar o cluster, em sua máquina host local, configure o usuário ou o perfil do IAM cluster_creator na AWS CLI:aws configure
Se você usou eksctl para criar o cluster, use as credenciais de perfil especificadas da AWS CLI para configurar a AWS CLI para executar comandos kubectl.
-
Verifique se cluster_creator tem acesso ao cluster:
kubectl get pods
Você não recebe a mensagem de erro Não autorizado, e a saída lista todos os pods que estão sendo executados no namespace padrão. Se a saída não mostrar nenhum recurso, então nenhum pod está sendo executado no namespace padrão.
-
Para dar acesso ao cluster para designated_user, adicione a seção mapUsers ao seu arquivo aws-auth.yaml. Para mais informações, consulte Adicionar princípios do IAM ao cluster do Amazon EKS.
-
Adicione designated_user à seção mapUsers do arquivo aws-auth.yaml e salve esse arquivo.
-
Aplique o novo ConfigMap à configuração de RBAC do cluster:
kubectl apply -f aws-auth.yaml
-
Altere novamente a configuração da AWS CLI para usar as credenciais do designated_user:
aws configure
- Verifique se designated_user tem acesso ao cluster:
kubectl get pods
Você não recebe a mensagem de erro Não autorizado, e a saída lista todos os pods que estão sendo executados no namespace padrão. Se a saída não mostrar nenhum recurso, então nenhum pod está sendo executado no namespace padrão.
Use aws-auth ConfigMap para conceder acesso ao cluster quando o cluster\ _creator for um perfil do IAM
Se um perfil do IAM tiver criado o cluster em vez de um usuário do IAM, então não é possível usar as credenciais. Em vez disso, você deve assumir o perfil do IAM que criou o cluster para fornecer acesso a designated_user.
Conclua as seguintes etapas:
-
Execute o comando get-caller-identity da AWS CLI para obter os detalhes do usuário do IAM de assume\ _role\ _user:
aws sts get-caller-identity
-
Confirme se assume_role_user tem acesso ao cluster:
kubectl get pods
A saída mostra a mensagem de erro Não autorizado porque designated_user não tem autorização para acessar o cluster Amazon EKS.
-
Permita que assume_role_user assuma o perfil do cluster_creator:
aws sts assume-role --role-arn arn:aws:iam:11122223333:role/cluster_creator --role-session-name test
A saída mostra as credenciais temporárias do IAM para assume_role_user.
-
Use as credenciais temporárias do IAM para definir as variáveis de ambiente AWS_ACCESS_KEY_ID, AWS_SESSION_TOKEN e AWS_SECRET_ACCESS_KEY:
export AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE export AWS_SESSION_TOKEN=EXAMPLETOKEN export AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
A AWS CLI classifica as credenciais definidas nas variáveis de ambiente e as usa para fazer chamadas para os serviços da AWS.
-
Verifique se a AWS CLI está usando o perfil assumido para cluster_creator:
aws sts get-caller-identity
-
Para dar acesso ao cluster para designated_user, adicione a seção mapUsers ao seu arquivo aws-auth.yaml.
-
Adicione designated_user à seção mapUsers do arquivo aws-auth.yaml e salve esse arquivo.
-
Aplique a nova configuração à configuração de RBAC do cluster do Amazon EKS:
kubectl apply -f aws-auth.yaml
-
Remova a definição das seguintes variáveis de ambiente:
unset AWS_ACCESS_KEY_ID unset AWS_SESSION_TOKEN unset AWS_SECRET_ACCESS_KEY
-
Execute o comando get-caller-identity da AWS CLI para obter os detalhes do usuário do IAM de designated_user:
aws sts get-caller-identity
- Confirme se designated_user tem acesso ao cluster:
kubectl get pods
Você não recebe a mensagem de erro Não autorizado, e a saída lista todos os pods que estão sendo executados no namespace padrão. Se a saída não mostrar nenhum recurso, então nenhum pod está sendo executado no namespace padrão.
Observação: se você usa eksctl, consulte Gerenciar usuários e perfis do IAM no site eksctl para obter mais informações.
Use entradas de acesso do EKS para conceder acesso ao cluster a usuários e perfis do IAM
O Amazon EKS oferece suporte a três modos de autenticação para entradas de acesso:
- CONFIG\ _MAP para usar somente aws-auth configMap.
- API\ _AND\ _CONFIG\ _MAP para usar as APIs de entrada de acesso do EKS e aws-auth ConfigMap. Esse modo prioriza a autenticação por meio de entradas de acesso do EKS e é útil quando você precisa migrar permissões de aws-auth para entradas de acesso do EKS.
- API para usar somente APIs de entrada de acesso do EKS.
Para mais informações, consulte Conceder aos usuários e perfis do IAM acesso às APIs do Kubernetes.
Para configurar o cluster com entradas de acesso, defina o modo de autenticação do cluster como EKS API ou EKS API e ConfigMap.
Para verificar o modo de autenticação atual do cluster, conclua as seguintes etapas:
- Abra o console do Amazon EKS.
- Escolha a guia Acesso.
- Em Configuração de acesso, verifique o rótulo de Modo de autenticação.
Ou execute o comando describe-cluster:
aws eks describe-cluster --name example-cluster --query 'cluster.accessConfig.authenticationMode' --region exampleRegion
Se o modo de autenticação do cluster for EKS API ou EKS API and ConfigMap, você poderá configurar o cluster para usar entradas de acesso. Caso contrário, consulte Alterar o modo de autenticação para usar as entradas de acesso.
Observação: você pode alternar do modo de autenticação CONFIG_MAP para o modo API, mas não pode alternar do modo API ou API\ _AND\ _CONFIG\ _MAP para o modo CONFIG_MAP. Para mais informações, consulte Gerenciador de acesso ao cluster no site do GitHub.
Informações relacionadas
Usar um perfil do IAM na AWS CLI
Conceder aos usuários do IAM acesso ao Kubernetes com entradas de acesso do EKS
Migração de entradas do aws-auth ConfigMap para entradas de acesso
Vídeos relacionados


Conteúdo relevante
- Resposta aceitafeita há um mêslg...
- feita há 11 diaslg...
- Resposta aceitafeita há 3 meseslg...
- AWS OFICIALAtualizada há um ano
- AWS OFICIALAtualizada há 3 anos
- AWS OFICIALAtualizada há um ano
- AWS OFICIALAtualizada há 2 anos