No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Curso de Kubernetes

Curso de Kubernetes

Marcos Lilljedahl

Marcos Lilljedahl

Autenticación y autorización

29/33
Recursos

Autenticación es el método por el cual Kubernetes deja ingresar a un usuario.
Autorización es el mecanismo para que un usuario tenga una serie determinada de permisos para realizar ciertas acciones sobre el cluster.

  • Cuando el API server recibe un request intenta autorizarlo con uno o más de uno de los siguientes métodos: Certificados TLS, Bearer Tokens, Basic Auth o Proxy de autenticación.
  • Si cualquier método rechaza la solicitud, se devuelve un 401.
  • Si el request no es aceptado o rechazado, el usuario es anónimo.
  • Por defecto el usuario anónimo no puede hacer ninguna operación en el cluster.

Aportes 8

Preguntas 0

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

o inicia sesión.

Otra forma que encontré de conseguir el certificado del secreto por defecto que nos crea el clúster.
Para ello primero buscamos cuál es secreto por defecto que tenemos:

➜ kubectl get secrets
NAME                                                    TYPE                                  DATA   AGE
default-token-nsj48                                     kubernetes.io/service-account-token   3      27h
torrid-pronghorn-kube-state-metrics-token-sc7xp         kubernetes.io/service-account-token   3      72m
torrid-pronghorn-prometheus-alertmanager-token-nmg9w    kubernetes.io/service-account-token   3      72m
torrid-pronghorn-prometheus-node-exporter-token-n2ttp   kubernetes.io/service-account-token   3      72m
torrid-pronghorn-prometheus-pushgateway-token-bj799     kubernetes.io/service-account-token   3      72m
torrid-pronghorn-prometheus-server-token-rnb99          kubernetes.io/service-account-token   3      72m

En mi caso se llama: default-token-nsj48
Ahora lanzamos el comando:

kubectl get secret default-token-nsj48 -o jsonpath="{['data']['ca\.crt']}" | base64 --decode

Esto nos dará como resultado el certificado sin codificar. 😄

Para octubre del 2021 en mi equipo con Ubuntu y minikube los comandos han cambiado. en mi caso apliqué los siguientes comandos:

# Obtener servicios de todos los namespaces
# Guardar la ip del servicio de kubernetes
kubectl get service --all-namespaces
# Acceder al cluster (SOLO MINIKUBE)
minikube ssh -p multinode-platzi-demo
# Intentar acceder a la API (debería mostrar un error)
curl -k $IP_SERVICIO_K8S
# Salir del cluster (SOLO MINIKUBE)
exit
# Ver configuración de kubernetes
kubectl config view --raw -o json
# Ver ruta del certificado
kubectl config view --raw -o json | jq -r '.users[0].user["client-certificate"]'
# Ver contenido del certificado
cat $(kubectl config view --raw -o json | jq -r '.users[0].user["client-certificate"]')
# Ver contenido descifrado del certificado
cat $(kubectl config view --raw -o json | jq -r '.users[0].user["client-certificate"]')  | openssl x509 -text | grep Subject

kubectl config view --raw -o json | jq -r .users[0].user[“client-certificate-data”] | base64 -d | openssl x509 -text | grep Subject

La clase incluía hack al TLS ? Genial 😄

⚠️ Para los que no les sirvió el comando largo les paso el comando con algunos arreglos que hice, que básicamente fueron (escapar la entrada de jq -r con comillas simples, no usar base64 -d, cambiar el nombre de la propiedad client-certificate, obtener el texto del nombre del archivo .crt con cat):

kubectl config view -o json | jq -r '.users[0].user["client-certificate"]' | xargs cat | openssl x509 --text | grep Subject

Muy bien y se entiende muy claro.

Me toco modificar el jq para que funcionara

k config view --raw -o json
k config view --raw -o json | jq -r '.users[0].user["client-certificate-data"]'
k config view --raw -o json | jq -r '.users[0].user["client-certificate-data"]'| base64 -d | openssl x509 -text | grep Subject

entendido 😃

Muy buena y concisa fue esta clase