Ir para o conteúdo

Como configuro um usuário SSO para acessar meu cluster do Amazon EKS?

5 minuto de leitura
0

Quero configurar um usuário do Centro de Identidade do AWS IAM para acessar meu cluster do Amazon Elastic Kubernetes Service (Amazon EKS).

Resolução

Pré-requisitos

  • O Centro de Identidade do IAM deve estar ativado e configurado
  • O usuário SSO deve estar associado à conta da AWS que contém o cluster do EKS
  • O cluster do EKS deve oferecer suporte a entradas de acesso (versão da plataforma eks.2 ou posterior)

Para configurar um usuário SSO para acessar seu cluster do Amazon EKS, conclua as seguintes etapas:

Configure a AWS CLI para autenticação SSO

Observação: se você receber mensagens de erro ao executar comandos da AWS Command Line Interface (AWS CLI), consulte Solução de problemas da AWS CLI. Além disso, verifique se você está usando a versão mais recente da AWS CLI.

Configure a AWS CLI para usar autenticação SSO para que o usuário SSO possa se autenticar e assumir um perfil do AWS Identity and Access Management (AWS IAM).

Para obter mais informações sobre como configurar a AWS CLI com o Centro de Identidade do IAM, consulte Integração da AWS CLI com o IAM Identity Center.

Configure o kubectl para usar o perfil SSO

Para configurar o kubectl para usar seu perfil SSO, execute o seguinte comando update-kubeconfig da AWS CLI:

aws eks update-kubeconfig --name your-cluster-name --profile your-sso-profile

Observação: substitua your-cluster-name pelo nome do seu cluster do EKS. Substitua your-sso-profile pelo nome do seu perfil SSO.

Verifique o modo de autenticação do cluster

Para verificar o modo de autenticação do cluster, execute o seguinte comando describe-cluster da AWS CLI:

aws eks describe-cluster --name your-cluster-name --query "cluster.accessConfig.authenticationMode" --profile your-sso-profile

Observação: substitua your-cluster-name pelo nome do seu cluster do EKS. Substitua your-sso-profile pelo nome do seu perfil SSO.

Se a saída mostrar API ou API_AND_CONFIG_MAP, as entradas de acesso estão ativadas. Se a saída mostrar CONFIG_MAP, somente o método aws-auth ConfigMap está disponível.

Use entradas de acesso para configurar o acesso

Selecione um dos seguintes níveis de permissão:

Conceda permissões de administrador em todo o cluster

Conclua as etapas a seguir:

  1. Abra o console do Amazon EKS.
  2. No painel de navegação, clique em Clusters.
  3. Selecione seu cluster.
  4. Clique na guia Acesso.
  5. Na seção Entradas de acesso, selecione Criar entrada de acesso.
  6. Em ARN da entidade principal do IAM, insira o ARN do seu perfil SSO sem o componente de caminho.
  7. Em Tipo, selecione Padrão.
  8. Clique em Próximo.
  9. Em Nome da política, selecione AmazonEKSClusterAdminPolicy.
  10. Em Escopo de acesso, clique em Cluster.
  11. Selecione Próximo e, em seguida, clique em Criar.

Conceda permissões específicas de namespace

Conclua as etapas a seguir:

  1. Abra o console do Amazon EKS.
  2. No painel de navegação, clique em Clusters.
  3. Selecione seu cluster.
  4. Clique na guia Acesso.
  5. Na seção Entradas de acesso, selecione Criar entrada de acesso.
  6. Em ARN da entidade principal do IAM, insira o ARN do seu perfil SSO sem o componente de caminho.
  7. Em Tipo, selecione Padrão.
  8. Clique em Próximo.
  9. Em Nome da política, selecione AmazonEKSAdminViewPolicy ou AmazonEKSEditPolicy com base em seus requisitos.
  10. Em Escopo de acesso, clique em Namespace.
  11. Em Namespace, insira o nome do seu namespace.
  12. Selecione Próximo e, em seguida, clique em Criar.

Para obter mais informações sobre entradas de acesso, consulte Conceder aos usuários do IAM acesso ao Kubernetes com entradas de acesso ao EKS.

Use aws-auth ConfigMap para configurar o acesso

Importante: ao usar aws-auth com o Centro de Identidade do IAM, use o ARN do perfil do IAM sem o componente de caminho. Por exemplo, se o ARN do seu perfil for arn:aws:iam::123456789012:role/aws-reserved/sso.amazonaws.com/us-east-1/AWSReservedSSO_AdministratorAccess_1234567890abcdef, remova o caminho para usar arn:aws:iam::123456789012:role/AWSReservedSSO_AdministratorAccess_1234567890abcdef.

Se seu cluster não for compatível com entradas de acesso ou você preferir usar o método aws-auth ConfigMap, conclua as seguintes etapas:

Conceda permissões de administrador em todo o cluster

Crie um arquivo YAML com a seguinte configuração:

apiVersion: v1
kind: ConfigMap
metadata:
  name: aws-auth
  namespace: kube-system
data:
  mapRoles: |
    - rolearn: arn:aws:iam::123456789012:role/AWSReservedSSO_AdministratorAccess_1234567890abcdef
      username: sso-admin-user
      groups:
        - system:masters

Observação: substitua o valor de rolearn pelo ARN do seu perfil SSO sem o componente de caminho. Substitua sso-admin-user pelo seu nome de usuário preferido.

Aplique a configuração:

kubectl apply -f aws-auth-configmap.yaml

Conceda permissões específicas de namespace

Crie um Role e RoleBinding para acesso específico por namespace:

apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  name: sso-user-role
  namespace: your-namespace
rules:
- apiGroups: [""]
  resources: ["pods", "services", "configmaps"]
  verbs: ["get", "list", "watch"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: sso-user-rolebinding
  namespace: your-namespace
subjects:
- kind: User
  name: sso-user
  apiGroup: rbac.authorization.k8s.io
roleRef:
  kind: Role
  name: sso-user-role
  apiGroup: rbac.authorization.k8s.io

Observação: substitua your-namespace pelo nome do seu namespace. Substitua sso-user pelo nome de usuário que você especificou em aws-auth ConfigMap.

Aplique a configuração:

kubectl apply -f role-rolebinding.yaml

Atualize o aws-auth ConfigMap para mapear o perfil SSO para o nome de usuário:

apiVersion: v1
kind: ConfigMap
metadata:
  name: aws-auth
  namespace: kube-system
data:
  mapRoles: |
    - rolearn: arn:aws:iam::123456789012:role/AWSReservedSSO_AdministratorAccess_1234567890abcdef
      username: sso-user

Observação: substitua o valor de rolearn pelo ARN do seu perfil SSO sem o componente de caminho.

Aplique a configuração:

kubectl apply -f aws-auth-configmap.yaml

Para obter mais informações sobre o aws-auth ConfigMap, consulte Conceder aos usuários do IAM acesso ao Kubernetes com um ConfigMap.

Verifique o acesso

Para verificar se o usuário SSO pode acessar o cluster, execute o seguinte comando:

kubectl get nodes

Se o comando retornar uma lista de nós, o usuário SSO se autenticou com êxito ao cluster.

Informações relacionadas

Gerenciamento de acesso ao cluster

AWS OFICIALAtualizada há 8 meses