Introdução
Neste desafio, você reforçará a segurança do seu cluster Kubernetes criando uma conta de serviço (service account) com privilégios de apenas leitura para o Dashboard do Kubernetes, demonstrando seu domínio sobre o Controle de Acesso Baseado em Funções (RBAC). Você deverá criar uma nova conta de serviço, um ClusterRole com permissões limitadas e vincular esse ClusterRole à conta criada. Por fim, você gerará um token de autenticação para realizar o login no Dashboard.
Acesso Seguro ao Dashboard do Kubernetes
Como engenheiro DevOps júnior, sua missão é aumentar a segurança do cluster Kubernetes configurando um acesso restrito ao Dashboard, garantindo que usuários específicos possuam apenas permissões de visualização através de políticas de RBAC.
Tarefas
- Criar uma nova conta de serviço chamada
read-only-userno namespacekubernetes-dashboard, utilizando o arquivo YAML fornecido. - Criar um
ClusterRolecom permissões de apenas leitura para o namespace padrão, permitindo as operaçõesget,listewatchnos recursospods,services,nodes,namespacesedeployments. - Vincular o
ClusterRoleà nova conta de serviçoread-only-user. - Gerar um token para que a conta de serviço possa ser utilizada no login do Dashboard.
Requisitos
- Trabalhe no diretório
~/project. - Utilize o namespace
kubernetes-dashboardpara a conta de serviço. - Crie um arquivo YAML chamado
read-only-dashboard-access.yaml. - A conta de serviço deve possuir estritamente permissões de leitura.
- Limite o escopo de acesso ao namespace
default.
Conteúdo do arquivo YAML a ser utilizado:
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: read-only-user
namespace: kubernetes-dashboard
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: read-only-dashboard-role
rules:
- apiGroups: [""]
resources: ["pods", "services", "nodes", "namespaces", "deployments"]
verbs: ["get", "list", "watch"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: read-only-dashboard-access
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: read-only-dashboard-role
subjects:
- kind: ServiceAccount
name: read-only-user
namespace: kubernetes-dashboard
Exemplos
Exemplo de saída do token da conta de serviço:
eyJhbGciOiJSUzI1NiIsImtpZCI6IiJ9...
Exemplo da visualização do Dashboard após o login:
- Visível: Recursos do Namespace, Deployments, Pods.
- Não Visível: Operações de Criar (Create), Editar (Edit) ou Excluir (Delete).
Dicas
- Inicie o Minikube e aplique o arquivo
recommended.yamldo repositório oficial do Kubernetes Dashboard para implantar a interface. - Utilize os comandos
kubectl createekubectl apply. - Verifique as configurações de ClusterRole e ClusterRoleBinding.
- Utilize o comando
kubectl -n kubernetes-dashboard create token read-only-userpara gerar o token de acesso.
Resumo
Em resumo, este desafio exigiu que você reforçasse a segurança do seu cluster Kubernetes configurando uma conta de serviço com permissões restritas para o Dashboard. Você criou uma nova ServiceAccount, um ClusterRole com permissões de leitura e vinculou ambos através de um ClusterRoleBinding. Por fim, gerou um token de autenticação para validar o acesso limitado ao ambiente.


