OpenShift - Tekton

Tip

Aprende y practica AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Aprende y practica GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Aprende y practica Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Apoya a HackTricks

El autor original de esta p谩gina es Haroun

Qu茅 es tekton

Seg煤n la documentaci贸n: Tekton es un marco de trabajo de c贸digo abierto poderoso y flexible para crear sistemas CI/CD, permitiendo a los desarrolladores construir, probar y desplegar en proveedores de nube y sistemas locales. Tanto Jenkins como Tekton se pueden usar para probar, construir y desplegar aplicaciones, sin embargo, Tekton es Cloud Native.

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 Pipeline, deben crearse recursos de tipo PipelineRun.

Cuando se instala tekton, se crea una cuenta de servicio (sa) llamada pipeline en cada namespace. Cuando se ejecuta un Pipeline, se generar谩 un pod utilizando esta sa llamada pipeline para ejecutar las tareas definidas en el archivo YAML.

Getting Started with Pipelines | Tekton

Las capacidades de la cuenta de servicio del Pipeline

Por defecto, la cuenta de servicio del pipeline puede usar 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 YAML en un objeto de openshift llamado TektonConfig que se puede ver si tienes algunos roles de lector en el cl煤ster.

apiVersion: operator.tekton.dev/v1alpha1
kind: TektonConfig
metadata:
name: config
spec:
...
...
platforms:
openshift:
scc:
default: "pipelines-scc"

En cualquier espacio de nombres, si puedes obtener el token de la cuenta de servicio del pipeline, podr谩s usar pipelines-scc.

La mala configuraci贸n

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:

apiVersion: v1
kind: Namespace
metadata:
name: test-namespace
annotations:
operator.tekton.dev/scc: privileged

El operador tekton otorgar谩 a la cuenta de servicio de la pipeline en test-namespace la capacidad de usar el scc privilegiado. Esto permitir谩 el montaje del nodo.

La soluci贸n

Los documentos de Tekton sobre c贸mo restringir la anulaci贸n de scc a帽adiendo una etiqueta en el objeto TektonConfig.

Tekton

Esta etiqueta se llama max-allowed

apiVersion: operator.tekton.dev/v1alpha1
kind: TektonConfig
metadata:
name: config
spec:
...
...
platforms:
openshift:
scc:
default: "restricted-v2"
maxAllowed: "privileged"

Tip

Aprende y practica AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Aprende y practica GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Aprende y practica Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Apoya a HackTricks