Acesso Seguro ao Dashboard do Kubernetes

KubernetesBeginner
Pratique Agora

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.

Este é um Desafio (Challenge), que difere de um Laboratório Guiado por exigir que você tente concluir a tarefa de forma independente, em vez de apenas seguir instruções passo a passo. Desafios costumam ter um nível de dificuldade maior. Se encontrar obstáculos, você pode consultar o Labby ou verificar a solução proposta. Dados históricos mostram que este é um desafio de nível iniciante com uma taxa de aprovação de 98%. Ele recebeu uma avaliação positiva de 90% dos alunos.

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-user no namespace kubernetes-dashboard, utilizando o arquivo YAML fornecido.
  • Criar um ClusterRole com permissões de apenas leitura para o namespace padrão, permitindo as operações get, list e watch nos recursos pods, services, nodes, namespaces e deployments.
  • Vincular o ClusterRole à nova conta de serviço read-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-dashboard para 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.yaml do repositório oficial do Kubernetes Dashboard para implantar a interface.
  • Utilize os comandos kubectl create e kubectl apply.
  • Verifique as configurações de ClusterRole e ClusterRoleBinding.
  • Utilize o comando kubectl -n kubernetes-dashboard create token read-only-user para gerar o token de acesso.
✨ Verificar Solução e Praticar

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.