Esta pregunta requiere algo de contexto, pero vamos alla.
Actividad 10: Update pod app-sec-ubu to run as Root user and with the SYS_TIME capability: Image Name: Ubuntu, SecurityContext: Capability SYS_TIME
Necesito crear un pod de ubuntu, eso esta super facil. Y luego necesito crear / asignar el security context, y los permisos de root.
kubectl run pod app-sec-ubu –image=ubuntu
¿Que es un capability en linux? Pues son acciones de sistema / kernel. Se habilita o deshabilitan. https://man7.org/linux/man-pages/man7/capabilities.7.html
¿Que es un security Context?
Un security context, es como los pods o sus contenedores, ejecutan los procesos. Puede definir acceso a archivos, usuarios de ejecucion, capacidades de linux entre otras. Mucho mas detalle aca https://kubernetes.io/docs/tasks/configure-pod-container/security-context/
¿Como lo creo?
El tipo de objeto es https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.34/#podsecuritycontext-v1-core
Pero eso no interesa mucho, se define como una propiedad del pod. En sus spec:
apiVersion: v1
kind: Pod
metadata:
labels:
run: app-sec-ubu5
name: app-sec-ubu5
spec:
containers:
- command:
- sleep
- infinity
image: ubuntu
imagePullPolicy: Always
name: app-sec-ubu5
resources: {}
securityContext:
runAsUser: 1000 # Debe ser 0 para admin
capabilities:
add: ['SYS_TIME']
runAsUser: 0 genera el context con permisos de root que es la actividad pero hay otras opciones.
SYS_TIME deberia ser la capacidad de linux deseada.
Solo falta ¿como validar esto?
Pues bien deberia ser entrando al contenedor:
kubectl exec -it app-sec-ubu — bash
Esto permite ejecutar de forma interactiva, bash.
Para validar en el contenedor, el permiso puedo ejuegar
date -s “1990-01-01 12:00:00”
Este es un escenario donde falla

Este es un escenario donde funciona el securitycontext

Y este es un escenario donde el usuario se define como 1000

Conclusiones
- Algunas imagenes dependes del command, es importante enviarle -comand — acciones
- Los privilegios / capacidades son de linux, en casos como el examen primero se debe evaluar el pod, para luego editar su definiciono.
- Siempre es bueno hacer un backup de la definicion actual para poderlo revisar.
- El user 0 es root, no todas las imagenes lo traen por defecto, pero esta de ubuntu si.
- Hay muchos capabilities el de Sys_date solo es facil de demostrar.
- Recuerda que si escribes mal la imagen siempre puedes hacer kuebctl describe pods, y kubectl get pods –watch