OpenShift - Tekton
Esta página muestra un escenario de escalada de privilegios dado que tekton está instalado en el clúster y que puedes crear un espacio de nombres (a veces los derechos de edición son suficientes)
Last updated
Esta página muestra un escenario de escalada de privilegios dado que tekton está instalado en el clúster y que puedes crear un espacio de nombres (a veces los derechos de edición son suficientes)
Last updated
El autor original de esta página es Haroun
Según la documentación: Tekton es un marco de trabajo de código abierto potente y flexible para crear sistemas CI/CD, que permite a los desarrolladores construir, probar e implementar en proveedores de nube y sistemas locales. Tanto Jenkins como Tekton se pueden utilizar para probar, construir e implementar aplicaciones, sin embargo, Tekton es nativo de la nube.
Con Tekton, todo está representado por archivos YAML. Los desarrolladores pueden crear Recursos Personalizados (CR) de tipo Pipelines
y especificar múltiples Tasks
en ellos que desean ejecutar. Para ejecutar un recurso de Pipeline, se deben crear recursos de tipo PipelineRun
.
Cuando se instala tekton, se crea una cuenta de servicio (sa) llamada pipeline en cada espacio de nombres. Cuando se ejecuta un Pipeline, se generará un pod utilizando esta sa llamada pipeline
para ejecutar las tareas definidas en el archivo YAML.
Por defecto, la cuenta de servicio de pipeline puede utilizar la capacidad pipelines-scc
. Esto se debe a la configuración predeterminada global de tekton. De hecho, la configuración global de tekton también es un archivo YAML en un objeto openshift llamado TektonConfig
que se puede ver si tienes algunos roles de lector en el clúster.
En cualquier espacio de nombres, si puedes obtener el token de la cuenta de servicio del pipeline, podrás usar pipelines-scc
.
El problema es que el scc predeterminado que la cuenta de servicio del pipeline puede usar es controlable por el usuario. Esto se puede hacer utilizando una etiqueta en la definición del espacio de nombres. Por ejemplo, si puedo crear un espacio de nombres con la siguiente definición yaml:
El operador de tekton dará a la cuenta de servicio de la canalización en test-namespace
la capacidad de usar el scc privilegiado. Esto permitirá el montaje del nodo.
Los documentos de Tekton explican cómo restringir la anulación de scc agregando una etiqueta en el objeto TektonConfig
.
Esta etiqueta se llama max-allowed