OpenShift - Tekton

Reading time: 3 minutes

tip

Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Вивчайте та практикуйте Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Підтримка HackTricks

Автором цієї сторінки є Haroun

Що таке tekton

Згідно з документацією: Tekton - це потужна та гнучка відкрита платформа для створення систем CI/CD, що дозволяє розробникам створювати, тестувати та розгортати програми на різних хмарних платформах та локальних системах. Як Jenkins, так і Tekton можуть використовуватися для тестування, створення та розгортання додатків, однак Tekton є Cloud Native.

У Tekton все представлено у вигляді YAML файлів. Розробники можуть створювати Користувацькі Ресурси (CR) типу Pipelines і вказувати в них кілька Tasks, які вони хочуть виконати. Для запуску ресурсу Pipeline необхідно створити ресурси типу PipelineRun.

Коли tekton встановлено, у кожному просторі імен створюється обліковий запис служби (sa) під назвою pipeline. Коли Pipeline запускається, створюється pod, який використовує цей sa під назвою pipeline для виконання завдань, визначених у YAML файлі.

Getting Started with Pipelines | Tekton

Можливості облікового запису служби Pipeline

За замовчуванням обліковий запис служби pipeline може використовувати можливість pipelines-scc. Це пов'язано з глобальною конфігурацією за замовчуванням tekton. Насправді, глобальна конфігурація tekton також є YAML у об'єкті openshift під назвою TektonConfig, який можна побачити, якщо у вас є деякі ролі читача в кластері.

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

В будь-якому просторі імен, якщо ви зможете отримати токен сервісного облікового запису конвеєра, ви зможете використовувати pipelines-scc.

Неправильна конфігурація

Проблема в тому, що за замовчуванням scc, який може використовувати sa конвеєра, контролюється користувачем. Це можна зробити, використовуючи мітку в визначенні простору імен. Наприклад, якщо я можу створити простір імен з наступним визначенням yaml:

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

Текстон оператор надасть обліковому запису служби конвеєра в test-namespace можливість використовувати scc привілейований. Це дозволить монтувати вузол.

Виправлення

Документи Tekton про те, як обмежити перевагу scc, додаючи мітку в об'єкт TektonConfig.

Tekton

Ця мітка називається max-allowed

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

tip

Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Вивчайте та практикуйте Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Підтримка HackTricks