OpenShift - Tekton
Tip
Μάθετε & εξασκηθείτε στο AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Μάθετε & εξασκηθείτε στο Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Υποστηρίξτε το HackTricks
- Δείτε τα subscription plans!
- Εγγραφείτε στο 💬 Discord group ή την telegram group ή ακολουθήστε μας στο Twitter 🐦 @hacktricks_live.
- Μοιραστείτε τα hacking tricks υποβάλλοντας PRs στα HackTricks και HackTricks Cloud github repos.
Ο αρχικός συγγραφέας αυτής της σελίδας είναι Haroun
Τι είναι το tekton
Σύμφωνα με το έγγραφο: Το Tekton είναι ένα ισχυρό και ευέλικτο ανοιχτού κώδικα πλαίσιο για τη δημιουργία συστημάτων CI/CD, επιτρέποντας στους προγραμματιστές να κατασκευάζουν, να δοκιμάζουν και να αναπτύσσουν σε παρόχους cloud και σε τοπικά συστήματα. Και οι Jenkins και Tekton μπορούν να χρησιμοποιηθούν για τη δοκιμή, την κατασκευή και την ανάπτυξη εφαρμογών, ωστόσο το Tekton είναι Cloud Native.
Με το Tekton, όλα εκπροσωπούνται από αρχεία YAML. Οι προγραμματιστές μπορούν να δημιουργήσουν Custom Resources (CR) τύπου Pipelines και να καθορίσουν πολλαπλά Tasks σε αυτά που θέλουν να εκτελέσουν. Για να εκτελέσετε μια Pipeline, πρέπει να δημιουργηθούν πόροι τύπου PipelineRun.
Όταν εγκαθίσταται το tekton, δημιουργείται ένας λογαριασμός υπηρεσίας (sa) που ονομάζεται pipeline σε κάθε namespace. Όταν εκτελείται μια Pipeline, θα δημιουργηθεί ένα pod χρησιμοποιώντας αυτόν τον sa που ονομάζεται pipeline για να εκτελέσει τις εργασίες που ορίζονται στο αρχείο YAML.
Getting Started with Pipelines | Tekton
Οι δυνατότητες του λογαριασμού υπηρεσίας Pipeline
Από προεπιλογή, ο λογαριασμός υπηρεσίας pipeline μπορεί να χρησιμοποιήσει τη δυνατότητα pipelines-scc. Αυτό οφείλεται στη παγκόσμια προεπιλεγμένη ρύθμιση του tekton. Στην πραγματικότητα, η παγκόσμια ρύθμιση του tekton είναι επίσης ένα YAML σε ένα αντικείμενο openshift που ονομάζεται TektonConfig που μπορεί να δει αν έχετε κάποιους ρόλους αναγνωστών στο cluster.
apiVersion: operator.tekton.dev/v1alpha1
kind: TektonConfig
metadata:
name: config
spec:
...
...
platforms:
openshift:
scc:
default: "pipelines-scc"
Σε οποιοδήποτε namespace, αν μπορείτε να αποκτήσετε το token του service account του pipeline, θα μπορείτε να χρησιμοποιήσετε το pipelines-scc.
Η Κακή Διαμόρφωση
Το πρόβλημα είναι ότι το προεπιλεγμένο scc που μπορεί να χρησιμοποιήσει το pipeline sa είναι ελεγχόμενο από τον χρήστη. Αυτό μπορεί να γίνει χρησιμοποιώντας μια ετικέτα στον ορισμό του namespace. Για παράδειγμα, αν μπορώ να δημιουργήσω ένα namespace με τον παρακάτω ορισμό yaml:
apiVersion: v1
kind: Namespace
metadata:
name: test-namespace
annotations:
operator.tekton.dev/scc: privileged
Ο τεκτονικός χειριστής θα δώσει στον λογαριασμό υπηρεσίας της ροής εργασίας στο test-namespace τη δυνατότητα να χρησιμοποιεί το scc privileged. Αυτό θα επιτρέψει την τοποθέτηση του κόμβου.
Η λύση
Τα έγγραφα του Tekton σχετικά με το πώς να περιορίσετε την υπέρβαση του scc προσθέτοντας μια ετικέτα στο αντικείμενο TektonConfig.
Αυτή η ετικέτα ονομάζεται max-allowed
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)
Μάθετε & εξασκηθείτε στο Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Υποστηρίξτε το HackTricks
- Δείτε τα subscription plans!
- Εγγραφείτε στο 💬 Discord group ή την telegram group ή ακολουθήστε μας στο Twitter 🐦 @hacktricks_live.
- Μοιραστείτε τα hacking tricks υποβάλλοντας PRs στα HackTricks και HackTricks Cloud github repos.
HackTricks Cloud

