No tienes acceso a esta clase

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

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?

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