Acceso Seguro al Dashboard de Kubernetes

KubernetesBeginner
Practicar Ahora

Introducción

En este desafío, mejorarás la seguridad de tu clúster de Kubernetes mediante la creación de una cuenta de servicio de solo lectura para el Dashboard de Kubernetes, demostrando así tu dominio del Control de Acceso Basado en Roles (RBAC). Deberás crear una nueva cuenta de servicio, un ClusterRole con permisos de solo lectura y vincular dicho rol a la cuenta de servicio. Finalmente, generarás un token para que la cuenta de servicio pueda iniciar sesión en el Dashboard.

Este es un Desafío (Challenge), el cual difiere de un Laboratorio Guiado en que deberás intentar completar la tarea de forma independiente, en lugar de seguir pasos detallados de aprendizaje. Los desafíos suelen tener una dificultad mayor. Si encuentras obstáculos, puedes consultar con Labby o revisar la solución. Los datos históricos muestran que este es un desafío de nivel principiante con una tasa de aprobación del 98%. Ha recibido una tasa de valoraciones positivas del 90% por parte de los estudiantes.

Acceso Seguro al Dashboard de Kubernetes

Como ingeniero DevOps junior, tu misión es reforzar la seguridad de tu clúster de Kubernetes configurando una cuenta de servicio con privilegios limitados para el Dashboard de Kubernetes, aplicando los principios de RBAC.

Tareas

  • Crear una nueva cuenta de servicio llamada read-only-user en el espacio de nombres kubernetes-dashboard, utilizando el archivo YAML proporcionado.
  • Crear un ClusterRole con permisos de solo lectura para el espacio de nombres predeterminado, permitiendo las operaciones get, list y watch sobre los recursos pods, services, nodes, namespaces y deployments.
  • Vincular el ClusterRole a la nueva cuenta de servicio read-only-user.
  • Generar un token para que la cuenta de servicio se utilice en el inicio de sesión del Dashboard.

Requisitos

  • Trabajar dentro del directorio ~/project.
  • Utilizar el espacio de nombres kubernetes-dashboard para la cuenta de servicio.
  • Crear un archivo YAML llamado read-only-dashboard-access.yaml.
  • La cuenta de servicio debe tener estrictamente permisos de lectura.
  • Limitar el alcance del acceso al espacio de nombres default.

Contenido del archivo YAML a proporcionar:

---
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

Ejemplos

Ejemplo de la salida del token de la cuenta de servicio:

eyJhbGciOiJSUzI1NiIsImtpZCI6IiJ9...

Ejemplo de la vista del Dashboard tras iniciar sesión:

  • Visible: Recursos del espacio de nombres, Deployments, Pods.
  • No visible: Operaciones de creación, edición o eliminación.

Consejos

  • Inicia Minikube y aplica el archivo recommended.yaml del repositorio oficial del Dashboard de Kubernetes para desplegar la interfaz.
  • Utiliza los comandos kubectl create y kubectl apply.
  • Verifica las configuraciones de ClusterRole y ClusterRoleBinding.
  • Ejecuta kubectl -n kubernetes-dashboard create token read-only-user para generar el token de acceso.
✨ Revisar Solución y Practicar

Resumen

En conclusión, este desafío te ha permitido reforzar la seguridad de tu clúster de Kubernetes mediante la implementación de una cuenta de servicio de solo lectura para el Dashboard. Has configurado una identidad específica, definido permisos granulares mediante un ClusterRole y vinculado ambos elementos para asegurar que el acceso sea limitado y controlado, culminando con la generación de un token de autenticación seguro.