Saltar al contenido principal

Lab 9.2 - Service Accounts y Permisos

Objetivos del Lab​

Al final de este laboratorio, usted será capaz de:

  • Crear y utilizar Service Accounts.
  • Asignar permisos a Service Accounts.
  • Utilizar Service Accounts en los Pods.
  • Comprender los tokens y secretos de los Service Accounts.
  • Probar el acceso a la API desde un Pod con un Service Account.

Duración Estimada​

45-60 minutos

Requisitos Previos​

  • kubectl instalado y configurado.
  • Cluster Kubernetes local funcional.
  • Conocimientos sobre Service Accounts (Capítulo 9.2).

Parte 1: Creación de un Service Account​

Paso 1.1: Crear un Service Account​

Cree un namespace de prueba:

kubectl create namespace sa-test

Cree un Service Account:

kubectl create serviceaccount app-sa -n sa-test

Verifique:

kubectl get serviceaccount app-sa -n sa-test
kubectl describe serviceaccount app-sa -n sa-test

Parte 2: Asignación de Permisos​

Paso 2.1: Crear un Role con Permisos​

Cree role-app-permissions.yaml:

apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
namespace: sa-test
name: app-role
rules:
- apiGroups: [""]
resources: ["pods", "configmaps"]
verbs: ["get", "list", "watch", "create"]
- apiGroups: [""]
resources: ["secrets"]
verbs: ["get", "list"]

Aplique:

kubectl apply -f role-app-permissions.yaml

Paso 2.2: Crear un RoleBinding​

Cree rolebinding-app.yaml:

apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: app-binding
namespace: sa-test
subjects:
- kind: ServiceAccount
name: app-sa
namespace: sa-test
roleRef:
kind: Role
name: app-role
apiGroup: rbac.authorization.k8s.io

Aplique:

kubectl apply -f rolebinding-app.yaml

Parte 3: Uso en un Pod​

Paso 3.1: Crear un Pod con el Service Account​

Cree pod-with-sa.yaml:

apiVersion: v1
kind: Pod
metadata:
name: app-pod
namespace: sa-test
spec:
serviceAccountName: app-sa
containers:
- name: app
image: bitnami/kubectl:latest
command: ["sleep", "3600"]

Aplique:

kubectl apply -f pod-with-sa.yaml

Verifique que el Pod utilice el Service Account:

kubectl describe pod app-pod -n sa-test

Parte 4: Prueba de Permisos​

Paso 4.1: Probar el Acceso a la API desde el Pod​

Pruebe los permisos desde el Pod:

# Probar la lista de Pods (debería funcionar)
kubectl exec -n sa-test app-pod -- kubectl get pods

# Probar la creación de un ConfigMap (debería funcionar)
kubectl exec -n sa-test app-pod -- kubectl create configmap test-cm --from-literal=key=value --dry-run=client -o yaml

# Probar la lista de Services (debería fallar - sin permiso)
kubectl exec -n sa-test app-pod -- kubectl get services

Parte 5: Tokens y Secrets​

Paso 5.1: Examinar el Token​

El Service Account tiene un token almacenado en un Secret:

# Listar los Secrets del Service Account
kubectl get secrets -n sa-test

# El token está montado en el Pod en /var/run/secrets/kubernetes.io/serviceaccount/token
kubectl exec -n sa-test app-pod -- cat /var/run/secrets/kubernetes.io/serviceaccount/token

Parte 6: Limpieza​

kubectl delete pod app-pod -n sa-test
kubectl delete rolebinding app-binding -n sa-test
kubectl delete role app-role -n sa-test
kubectl delete serviceaccount app-sa -n sa-test
kubectl delete namespace sa-test

Resumen del Lab​

En este laboratorio, usted creó y utilizó Service Accounts con permisos RBAC. Aprendió a asignar permisos, a utilizar Service Accounts en los Pods y a probar el acceso a la API.


Próximos Pasos​

El próximo laboratorio le mostrará cómo aplicar los Pod Security Standards.

Lab 9.3: Pod Security Standards


Lab creado el: Diciembre 2024