Entender as funções e os usuários do RBAC criados pelo Amazon EKS - Amazon EKS

Ajudar a melhorar esta página

Quer contribuir para este guia do usuário? Role até o final desta página e selecione Editar esta página no GitHub. Suas contribuições ajudarão a tornar nosso guia do usuário melhor para todos.

Entender as funções e os usuários do RBAC criados pelo Amazon EKS

Quando você cria um cluster do Kubernetes, várias identidades padrão do Kubernetes são criadas nesse cluster para o funcionamento adequado do Kubernetes. O Amazon EKS cria identidades do Kubernetes para cada um de seus componentes padrão. As identidades fornecem controle de autorização baseada em perfil (RBAC) do Kubernetes para os componentes do cluster. Para mais informações, consulte Using RBAC Authorization (Usar autorização RBAC) na documentação do Kubernetes.

Quando você instala complementos opcionais no cluster, identidades adicionais do Kubernetes talvez sejam adicionadas a ele. Para obter mais informações sobre as identidades não abordadas neste tópico, consulte a documentação do complemento.

Você pode ver a lista de identidades do Kubernetes criadas pelo Amazon EKS no cluster usando o AWS Management Console ou ferramenta de linha de comando kubectl. Todas as identidades de usuário aparecem nos logs de auditoria do kube, disponíveis a você por meio do Amazon CloudWatch.

AWS Management Console
Pré-requisito

A entidade principal do IAM que você usar deverá ter as permissões descritas em Permissões obrigatórias

Para visualizar as identidades criadas pelo Amazon EKS usando o AWS Management Console
  1. Abra o console do Amazon EKS em https://console.aws.amazon.com/eks/home#/clusters.

  2. Na lista Clusters, escolha o cluster que contém as identidades do que você deseja visualizar.

  3. Escolha a guia Recursos.

  4. Em Resource types (Tipos de recursos), escolha Authorization (Autorização).

  5. Escolha ClusterRoles, ClusterRoleBindings, Roles ou RoleBindings. Todos os recursos prefaciados com eks são criados pelo Amazon EKS. Outros recursos de identidade criados pelo Amazon EKS são:

    • O ClusterRole e o ClusterRoleBinding denominados aws-node. Os recursos aws-node são compatíveis com o Amazon VPC CNI plugin for Kubernetes, que o Amazon EKS instala em todos os clusters.

    • Um ClusterRole denominado vpc-resource-controller-role e um ClusterRoleBinding denominado vpc-resource-controller-rolebinding. Esses recursos são compatíveis com o controlador de recursos da Amazon VPC, que o Amazon EKS instala em todos os clusters.

    Além dos recursos que você vê no console, as seguintes identidades de usuário especiais existem no cluster, embora não estejam visíveis na sua configuração:

    • eks:cluster-bootstrap: usado para operações do kubectl durante a inicialização do cluster.

    • eks:support-engineer: usado para operações de gerenciamento do cluster.

  6. Escolha um recurso específico para visualizar detalhes sobre ele. Por padrão, as informações são mostradas na visualização estruturada. No canto superior direito da página de detalhes, você pode escolher Raw view (Visualização bruta) para ver todas as informações sobre o recurso.

Kubectl
Pré-requisito

A entidade que você usa (AWS Identity and Access Management [IAM] ou OpenID Connect [OIDC]) para listar os recursos do Kubernetes no cluster deve ser autenticada pelo IAM ou pelo seu provedor de identidades OIDC. A entidade deve receber permissões para usar os verbos get e list do Kubernetes para os recursos Role, ClusterRole, RoleBinding e ClusterRoleBinding do cluster com que você deseja que a entidade trabalhe. Para obter mais informações sobre conceder às entidades do IAM acesso ao cluster, consulte Conceder aos usuários e perfis do IAM acesso às APIs do Kubernetes. Para obter mais informações sobre conceder às entidades autenticadas por seu próprio provedor OIDC acesso ao cluster, consulte Conceda aos usuários acesso ao Kubernetes com um provedor OIDC externo.

Para visualizar as identidades criadas pelo Amazon EKS usando o kubectl

Execute o comando para o tipo de recurso que você deseja ver. Todos os recursos retornados precedidos por eks são criados pelo Amazon EKS. Além dos recursos que retornados na saída dos comandos, as seguintes identidades de usuário especiais existem no cluster, embora não estejam visíveis na sua configuração:

  • eks:cluster-bootstrap: usado para operações do kubectl durante a inicialização do cluster.

  • eks:support-engineer: usado para operações de gerenciamento do cluster.

ClusterRoles: ClusterRoles estão no escopo do cluster, portanto, qualquer permissão concedida a um perfil se aplicará aos recursos em qualquer namespace do Kubernetes no cluster.

O comando a seguir retorna todos os ClusterRoles do Kubernetes criados pelo Amazon EKS no seu cluster.

kubectl get clusterroles | grep eks

Além dos ClusterRoles retornados na saída que são precedidos por eks, existem os ClusterRoles a seguir.

Para ver a especificação de um ClusterRole, substitua eks:k8s-metrics no comando a seguir por um ClusterRole retornado na saída do comando anterior. O exemplo a seguir retorna a especificação para ClusterRole eks:k8s-metrics.

kubectl describe clusterrole eks:k8s-metrics

Veja um exemplo de saída abaixo.

Name:         eks:k8s-metrics
Labels:       <none>
Annotations:  <none>
PolicyRule:
  Resources         Non-Resource URLs  Resource Names  Verbs
  ---------         -----------------  --------------  -----
                    [/metrics]         []              [get]
  endpoints         []                 []              [list]
  nodes             []                 []              [list]
  pods              []                 []              [list]
  deployments.apps  []                 []              [list]

ClusterRoleBindings: ClusterRoleBindings estão no escopo do cluster.

O comando a seguir retorna todos os ClusterRoleBindings do Kubernetes criados pelo Amazon EKS no seu cluster.

kubectl get clusterrolebindings | grep eks

Além dos ClusterRoleBindings retornados na saída, existem os ClusterRoleBindings a seguir.

Para ver a especificação de um ClusterRoleBinding, substitua eks:k8s-metrics no comando a seguir por um ClusterRoleBinding retornado na saída do comando anterior. O exemplo a seguir retorna a especificação para ClusterRoleBinding eks:k8s-metrics.

kubectl describe clusterrolebinding eks:k8s-metrics

Veja um exemplo de saída abaixo.

Name:         eks:k8s-metrics
Labels:       <none>
Annotations:  <none>
Role:
  Kind:  ClusterRole
  Name:  eks:k8s-metrics
Subjects:
  Kind  Name             Namespace
  ----  ----             ---------
  User  eks:k8s-metrics

Roles: Roles estão no escopo de um namespace do Kubernetes. Todos os Roles criados pelo Amazon EKS estão no escopo do namespace do kube-system.

O comando a seguir retorna todos os Roles do Kubernetes criados pelo Amazon EKS no seu cluster.

kubectl get roles -n kube-system | grep eks

Para ver a especificação de um Role, substitua eks:k8s-metrics no comando a seguir pelo nome de um Role retornado na saída do comando anterior. O exemplo a seguir retorna a especificação para Role eks:k8s-metrics.

kubectl describe role eks:k8s-metrics -n kube-system

Veja um exemplo de saída abaixo.

Name:         eks:k8s-metrics
Labels:       <none>
Annotations:  <none>
PolicyRule:
  Resources         Non-Resource URLs  Resource Names             Verbs
  ---------         -----------------  --------------             -----
  daemonsets.apps   []                 [aws-node]                 [get]
  deployments.apps  []                 [vpc-resource-controller]  [get]

RoleBindings: RoleBindings estão no escopo de um namespace do Kubernetes. Todos os RoleBindings criados pelo Amazon EKS estão no escopo do namespace do kube-system.

O comando a seguir retorna todos os RoleBindings do Kubernetes criados pelo Amazon EKS no seu cluster.

kubectl get rolebindings -n kube-system | grep eks

Para ver a especificação de um RoleBinding, substitua eks:k8s-metrics no comando a seguir por um RoleBinding retornado na saída do comando anterior. O exemplo a seguir retorna a especificação para RoleBinding eks:k8s-metrics.

kubectl describe rolebinding eks:k8s-metrics -n kube-system

Veja um exemplo de saída abaixo.

Name:         eks:k8s-metrics
Labels:       <none>
Annotations:  <none>
Role:
  Kind:  Role
  Name:  eks:k8s-metrics
Subjects:
  Kind  Name             Namespace
  ----  ----             ---------
  User  eks:k8s-metrics