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.
Faça hardening do RBAC do Kubernetes no Amazon EKS
O controle de acesso baseado em função (RBAC) controla quais ações as identidades podem executar em um cluster. Muitos componentes do cluster, incluindo drivers CSI e outros complementos instalados como DaemonSets, exigem amplas permissões para funcionar. A revisão e o escopo dessas permissões reduzem o escopo potencial de qualquer acesso não intencional.
Este tópico descreve as considerações de permissão para componentes comuns do cluster e os controles recomendados.
Permissões da conta de serviço DaemonSet
Os DaemonSet Pods são executados em todos os nós do cluster, portanto, os tokens da conta de serviço e as permissões RBAC que esses tokens concedem estão presentes em cada nó.
Um processo não autorizado em um nó pode acessar os tokens da conta de serviço de outros pods em execução no mesmo nó, incluindo os DaemonSet Pods. As permissões de RBAC concedidas às contas de serviço DaemonSets são as mesmas em todos os nós no cluster.
Os componentes normalmente implantados como DaemonSets incluem:
-
Drivers de nós CSI (
ebs-csi-node,efs-csi-node,mountpoint-s3-csi-node) -
O plugin Amazon VPC CNI (
aws-node) -
kube-proxy
Se um DaemonSet Pod AWS tiver credenciais do IAM por meio do EKS Pod Identity ou do IAM Roles for Service Accounts (IRSA), um processo que obtém acesso fora do contêiner no mesmo nó também pode acessar essas credenciais. Isso estende o escopo do impacto além do Kubernetes RBAC para qualquer permissão da API AWS concedida ao perfil do IAM de um DaemonSet.
Importante
Ao revisar as permissões, trate as permissões RBAC do Kubernetes e as permissões do IAM de cada conta de serviço DaemonSet como acessíveis a partir de todos os nós do cluster.
Escopo do RBAC do driver CSI
Os drivers CSI geralmente recebem amplas concessões de RBAC porque interagem com nós, volumes persistentes e APIs de armazenamento.
Permissões de objeto de nó
Os drivers CSI podem exigir permissões RBAC para modificar objetos do nó para oferecer suporte a recursos como remoção de taint ou outras tarefas de gerenciamento de nós. Devido às limitações do Kubernetes RBAC, essas permissões se aplicam a todos os objetos de nó no cluster, não apenas ao nó local em que o driver está sendo executado.
Para o driver EBS CSI, o chart do Helm fornece um parâmetro (node.serviceAccount.disableMutation) que remove a permissão de modificação do nó da conta de serviço ebs-csi-node. Ativar isso desativa o atributo de remoção de taint.
Exposição do token da conta de serviço
Os pods de drivers CSI podem usar tokens de conta de serviço projetados para autenticação. Em um nó em que um processo não autorizado obteve acesso fora do contêiner, esses tokens podem ser acessados por meio do sistema de arquivos do contêiner ou da API kubelet. Se a conta de serviço também estiver associada a um perfil do IAM por meio da Identidade de Pods do EKS ou pelo IRSA, um token exposto poderá ser usado para obter as credenciais AWS do IAM.
Controles recomendados
Escopo RBAC para privilégio mínimo
-
Analise os ClusterRoles vinculados ao driver CSI e às contas de serviço DaemonSet. Remova as permissões que não são necessárias para suas workloads.
-
Para o driver EBS CSI, defina
node.serviceAccount.disableMutationcomotruese você não usar o atributo de remoção de taint. -
Use
kubectl auth can-i --list --as=system:serviceaccount:NAMESPACE:SERVICE_ACCOUNTpara auditar permissões efetivas.
Imponha padrões de segurança do pod
Aplique os padrões de segurança do Kubernetes Podbaseline em todo o cluster e o perfil restricted para namespaces de workload. Isso limita a capacidade de criar contêineres privilegiados fora dos namespaces do sistema.
Usar políticas de rede
Aplique políticas de rede para restringir a saída do driver CSI e dos DaemonSet Pods somente aos endpoints de que eles precisam (por exemplo, o servidor da API Kubernetes e os endpoints de serviço AWS). Isso reduz o escopo das ações possíveis.
Monitore a atividade do RBAC
Ative o registro de auditoria do Kubernetes e monitore chamadas de API inesperadas de contas de serviço DaemonSet. Procure:
-
Modificações de nós nas contas de serviço do driver CSI
-
Criação de pod em namespaces do sistema
-
getincomuns ou chamadaslistno Secrets
Para obter mais informações, consulte Enviar logs do ambiente de gerenciamento para o CloudWatch Logs.