👤 Users
O Kubernetes não tem um cadastro de usuários. Não existe um comando como
"criar usuário". Em vez disso, o cluster reconhece uma pessoa pelo certificado
que ela apresenta: o nome do certificado (CN) vira o nome do usuário, e a
organização (O) vira o grupo.
Neste guia você vai gerar o acesso de um usuário chamado maria, que poderá
somente ler pods.
Este procedimento usa o kubectl e o openssl. Use Linux, macOS ou WSL (no Windows). O Painel Nuvion fornece o kubeconfig de administrador (Baixar kubeconfig), mas não cria usuários.
🚀 Antes de começar
- Ter o acesso de administrador ao cluster configurado (veja Acesso ao Cluster).
- Ter a Role
leitor-pods(veja Roles). Se não tiver:
kubectl create role leitor-pods --verb=get,list,watch --resource=pods
🚀 1. Criar a chave e o pedido de certificado
openssl genrsa -out maria.key 2048
openssl req -new -key maria.key -out maria.csr -subj "/CN=maria/O=desenvolvedores"
Você terá dois arquivos: maria.key (chave privada, só da Maria) e
maria.csr (o pedido de certificado).
🚀 2. Enviar o pedido ao cluster
cat <<EOF | kubectl apply -f -
apiVersion: certificates.k8s.io/v1
kind: CertificateSigningRequest
metadata:
name: maria
spec:
request: $(base64 < maria.csr | tr -d '\n')
signerName: kubernetes.io/kube-apiserver-client
expirationSeconds: 86400
usages:
- client auth
EOF
O certificado terá validade de 1 dia (86400 segundos). Ajuste conforme a sua necessidade.
🚀 3. Aprovar o pedido
kubectl get csr
kubectl certificate approve maria
O estado muda de Pending para Approved,Issued.
🚀 4. Baixar o certificado
kubectl get csr maria -o jsonpath='{.status.certificate}' | base64 -d > maria.crt
🚀 5. Montar o kubeconfig da Maria
SERVER=$(kubectl config view --raw --minify -o jsonpath='{.clusters[0].cluster.server}')
kubectl config view --raw --minify -o jsonpath='{.clusters[0].cluster.certificate-authority-data}' | base64 -d > ca.crt
kubectl config set-cluster meu-cluster --server=$SERVER --certificate-authority=ca.crt --embed-certs=true --kubeconfig=maria.kubeconfig
kubectl config set-credentials maria --client-certificate=maria.crt --client-key=maria.key --embed-certs=true --kubeconfig=maria.kubeconfig
kubectl config set-context maria@meu-cluster --cluster=meu-cluster --user=maria --kubeconfig=maria.kubeconfig
kubectl config use-context maria@meu-cluster --kubeconfig=maria.kubeconfig
O arquivo maria.kubeconfig é o que você entrega à Maria. Ela o usa como na página Acesso ao Cluster.
O maria.kubeconfig contém a chave privada. Envie por um canal seguro e não publique.
🚀 6. Testar: sem permissão
kubectl --kubeconfig=maria.kubeconfig get pods
Resposta esperada: Forbidden. A Maria já se autentica (o cluster sabe quem ela é), mas
ainda não tem permissão para nada.
🚀 7. Dar a permissão
kubectl create rolebinding maria-leitora --role=leitor-pods --user=maria
Teste novamente:
kubectl --kubeconfig=maria.kubeconfig get pods
kubectl --kubeconfig=maria.kubeconfig delete pod qualquer-nome
O primeiro comando lista os pods. O segundo é negado (Forbidden), pois a Role só permite leitura.
Para dar a mesma permissão a todo um grupo, use --group=desenvolvedores no lugar de --user=maria.
✅ Como saber se deu certo
O passo 6 mostra Forbidden, e depois do passo 7 a Maria consegue listar os pods.
🔒 Boas práticas
- Use certificados com validade curta e gere um novo quando expirar.
- O Kubernetes não revoga certificados. Para tirar o acesso de alguém, exclua o RoleBinding, e o certificado deixa de ter permissões.
- Nunca entregue o kubeconfig de administrador a quem só precisa de leitura.
❗ Problemas comuns
| Sintoma | Causa | Solução |
|---|---|---|
CSR fica Pending | Falta aprovar | Rode kubectl certificate approve maria |
maria.crt vazio | CSR não foi assinado | Confira com kubectl get csr maria se o estado é Approved,Issued. Se não for, fale com o suporte |
Forbidden depois do passo 7 | Nome do usuário diferente do CN | O --user precisa ser igual ao CN do certificado |
certificate has expired | Validade acabou | Gere um novo certificado (passos 1 a 5) |
already exists ao criar o CSR | Nome já usado | Exclua com kubectl delete csr maria e repita |
🧹 Limpeza
kubectl delete rolebinding maria-leitora
kubectl delete csr maria
rm maria.key maria.csr maria.crt ca.crt maria.kubeconfig
🧠 Dúvidas?
Fale com nosso time de suporte técnico da SaveinCloud!