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.
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-useren el espacio de nombreskubernetes-dashboard, utilizando el archivo YAML proporcionado. - Crear un
ClusterRolecon permisos de solo lectura para el espacio de nombres predeterminado, permitiendo las operacionesget,listywatchsobre los recursospods,services,nodes,namespacesydeployments. - Vincular el
ClusterRolea la nueva cuenta de servicioread-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-dashboardpara 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.yamldel repositorio oficial del Dashboard de Kubernetes para desplegar la interfaz. - Utiliza los comandos
kubectl createykubectl apply. - Verifica las configuraciones de
ClusterRoleyClusterRoleBinding. - Ejecuta
kubectl -n kubernetes-dashboard create token read-only-userpara generar el token de acceso.
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.


