OpenShift - Tekton
Cette page montre un scénario d'escalade de privilèges étant donné que tekton est installé dans le cluster et que vous pouvez créer un espace de noms (parfois les droits de modification sont suffisant
L'auteur original de cette page est Haroun
Qu'est-ce que tekton
Selon la documentation : Tekton est un framework 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 une ressource Pipeline de type PipelineRun
doit être créée.
Lorsque tekton est installé, un compte de service (sa) appelé pipeline est créé dans chaque espace de noms. Lorsqu'un Pipeline est exécuté, un pod sera créé en utilisant ce sa appelé pipeline
pour exécuter les tâches définies dans le fichier YAML.
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 fichier YAML dans un objet openshift appelé TektonConfig
qui peut être consulté si vous avez des rôles de lecteur dans le cluster.
Dans n'importe quel espace de noms, si vous parvenez à 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 compte de service 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 :
Le l'opérateur tekton donnera au compte de service de pipeline dans test-namespace
la capacité d'utiliser le scc privileged. Cela permettra le montage du nœud.
La solution
Les documents de Tekton expliquent comment restreindre le remplacement de scc en ajoutant une étiquette dans l'objet TektonConfig
.
Cette étiquette s'appelle max-allowed
Last updated