OpenShift - Tekton

Tip

Apprenez & pratiquez AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Apprenez & pratiquez GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Apprenez & pratiquez Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Soutenez HackTricks

L’auteur original de cette page est Haroun

Qu’est-ce que tekton

Selon la documentation : Tekton est un cadre open-source puissant et flexible pour crĂ©er des systĂšmes CI/CD, permettant aux dĂ©veloppeurs de construire, tester et dĂ©ployer sur des fournisseurs de cloud et des systĂšmes sur site. Jenkins et Tekton peuvent ĂȘtre utilisĂ©s pour tester, construire et dĂ©ployer des applications, cependant Tekton est Cloud Native.

Avec Tekton, tout est reprĂ©sentĂ© par des fichiers YAML. Les dĂ©veloppeurs peuvent crĂ©er des Ressources PersonnalisĂ©es (CR) de type Pipelines et spĂ©cifier plusieurs Tasks qu’ils souhaitent exĂ©cuter. Pour exĂ©cuter un Pipeline, des ressources de type PipelineRun doivent ĂȘtre créées.

Lorsque tekton est installĂ©, un compte de service (sa) appelĂ© pipeline est créé dans chaque namespace. Lorsqu’un Pipeline est exĂ©cutĂ©, un pod sera gĂ©nĂ©rĂ© en utilisant ce sa appelĂ© pipeline pour exĂ©cuter les tĂąches dĂ©finies dans le fichier YAML.

Getting Started with Pipelines | Tekton

Les capacités du compte de service Pipeline

Par dĂ©faut, le compte de service pipeline peut utiliser la capacitĂ© pipelines-scc. Cela est dĂ» Ă  la configuration par dĂ©faut globale de tekton. En fait, la configuration globale de tekton est Ă©galement un YAML dans un objet openshift appelĂ© TektonConfig qui peut ĂȘtre vu si vous avez des rĂŽles de lecteur dans le cluster.

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

Dans n’importe quel espace de noms, si vous pouvez obtenir le jeton du compte de service de pipeline, vous pourrez utiliser pipelines-scc.

La mauvaise configuration

Le problĂšme est que le scc par dĂ©faut que le sa de pipeline peut utiliser est contrĂŽlable par l’utilisateur. Cela peut ĂȘtre fait en utilisant une Ă©tiquette dans la dĂ©finition de l’espace de noms. Par exemple, si je peux crĂ©er un espace de noms avec la dĂ©finition yaml suivante :

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

L’opĂ©rateur tekton donnera au compte de service de pipeline dans test-namespace la capacitĂ© d’utiliser le scc privilĂ©giĂ©. Cela permettra le montage du nƓud.

La solution

Les documents Tekton expliquent comment restreindre l’override de scc en ajoutant une Ă©tiquette dans l’objet TektonConfig.

Tekton

Cette Ă©tiquette s’appelle max-allowed

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

Tip

Apprenez & pratiquez AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Apprenez & pratiquez GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Apprenez & pratiquez Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Soutenez HackTricks