Kubernetes SecurityContext(s)
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.
PodSecurityContext
Όταν καθορίζετε το security context ενός Pod, μπορείτε να χρησιμοποιήσετε αρκετά χαρακτηριστικά. Από την άποψη της αμυντικής ασφάλειας, θα πρέπει να εξετάσετε:
- Να έχετε runASNonRoot ως True
- Να ρυθμίσετε runAsUser
- Εάν είναι δυνατόν, εξετάστε το ενδεχόμενο περιορισμού των δικαιωμάτων υποδεικνύοντας seLinuxOptions και seccompProfile
- Μην δίνετε privilege group πρόσβαση μέσω runAsGroup και supplementaryGroups
| Παράμετρος | Περιγραφή | |
fsGroup
integer
Μια ειδική συμπληρωματική ομάδα που εφαρμόζεται σε όλα τα κοντέινερ σε ένα pod. Ορισμένοι τύποι όγκων επιτρέπουν στον Kubelet να αλλάξει την ιδιοκτησία αυτού του όγκου ώστε να ανήκει στο pod:
1. Η ιδιοκτησία GID θα είναι το FSGroup
2. Το setgid bit είναι ρυθμισμένο (τα νέα αρχεία που δημιουργούνται στον όγκο θα ανήκουν στο FSGroup)
3. Τα δικαιώματα είναι OR’d με rw-rw–– Εάν δεν ρυθμιστεί, ο Kubelet δεν θα τροποποιήσει την ιδιοκτησία και τα δικαιώματα οποιουδήποτε όγκου
|
fsGroupChangePolicy
string
runAsGroup
integer
runAsNonRoot
boolean
runAsUser
integer
seLinuxOptions
SELinuxOptions
Περισσότερες πληροφορίες σχετικά με seLinux
seccompProfile
SeccompProfile
Περισσότερες πληροφορίες σχετικά με Seccomp
supplementalGroups
integer array
sysctls
Sysctl array
Περισσότερες πληροφορίες σχετικά με sysctls
windowsOptions
WindowsSecurityContextOptions
SecurityContext
Αυτό το context ορίζεται μέσα στις ορισμούς κοντέινερ. Από την άποψη της αμυντικής ασφάλειας, θα πρέπει να εξετάσετε:
- allowPrivilegeEscalation να είναι False
- Μην προσθέτετε ευαίσθητες capabilities (και αφαιρέστε αυτές που δεν χρειάζεστε)
- privileged να είναι False
- Εάν είναι δυνατόν, ρυθμίστε το readOnlyFilesystem ως True
- Ρυθμίστε το runAsNonRoot σε True και ορίστε ένα runAsUser
- Εάν είναι δυνατόν, εξετάστε το ενδεχόμενο περιορισμού των δικαιωμάτων υποδεικνύοντας seLinuxOptions και seccompProfile
- Μην δίνετε privilege group πρόσβαση μέσω runAsGroup.
Σημειώστε ότι τα χαρακτηριστικά που ορίζονται σε τόσο SecurityContext όσο και PodSecurityContext, η τιμή που καθορίζεται στο SecurityContext έχει προτεραιότητα.
|
allowPrivilegeEscalation | AllowPrivilegeEscalation ελέγχει εάν μια διαδικασία μπορεί να κερδίσει περισσότερα δικαιώματα από τη γονική διαδικασία της. Αυτό το bool ελέγχει άμεσα εάν η σημαία no_new_privs θα ρυθμιστεί στη διαδικασία του κοντέινερ. Το AllowPrivilegeEscalation είναι πάντα αληθές όταν το κοντέινερ εκτελείται ως Privileged ή έχει CAP_SYS_ADMIN |
|---|---|
|
capabilities | Οι ικανότητες που προστίθενται/αφαιρούνται κατά την εκτέλεση κοντέινερ. Προεπιλογή είναι το προεπιλεγμένο σύνολο ικανοτήτων. |
|
privileged | Εκτελέστε το κοντέινερ σε προνομιακή λειτουργία. Οι διαδικασίες σε προνομιακά κοντέινερ είναι ουσιαστικά ισοδύναμες με root στον host. Προεπιλογή είναι false. |
|
procMount | Το procMount δηλώνει τον τύπο του proc mount που θα χρησιμοποιηθεί για τα κοντέινερ. Η προεπιλογή είναι DefaultProcMount που χρησιμοποιεί τις προεπιλεγμένες ρυθμίσεις του χρόνου εκτέλεσης για αναγνώσιμες διαδρομές και κρυμμένες διαδρομές. |
|
readOnlyRootFilesystem | Εάν αυτό το κοντέινερ έχει ένα σύστημα αρχείων ρίζας μόνο για ανάγνωση. Η προεπιλογή είναι false. |
|
runAsGroup | Ο GID για να εκτελέσει το entrypoint της διαδικασίας του κοντέινερ. Χρησιμοποιεί την προεπιλεγμένη ρύθμιση χρόνου εκτέλεσης εάν δεν ρυθμιστεί. |
|
runAsNonRoot | Υποδεικνύει ότι το κοντέινερ πρέπει να εκτελείται ως μη ριζικός χρήστης. Εάν είναι αληθές, ο Kubelet θα επικυρώσει την εικόνα κατά την εκτέλεση για να διασφαλίσει ότι δεν εκτελείται ως UID 0 (root) και θα αποτύχει να ξεκινήσει το κοντέινερ εάν το κάνει. |
|
runAsUser | Ο UID για να εκτελέσει το entrypoint της διαδικασίας του κοντέινερ. Προεπιλογή είναι ο χρήστης που καθορίζεται στα μεταδεδομένα της εικόνας εάν δεν καθοριστεί. |
|
seLinuxOptions | Το SELinux context που θα εφαρμοστεί στο κοντέινερ. Εάν δεν καθοριστεί, ο χρόνος εκτέλεσης του κοντέινερ θα εκχωρήσει ένα τυχαίο SELinux context για κάθε κοντέινερ. |
| Οι seccomp επιλογές που θα χρησιμοποιηθούν από αυτό το κοντέινερ. | |
| Οι ρυθμίσεις που σχετίζονται με τα Windows που εφαρμόζονται σε όλα τα κοντέινερ. |
References
- https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#podsecuritycontext-v1-core
- https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#securitycontext-v1-core
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

