Kubernetes SecurityContext(s)
Last updated
Last updated
Μάθετε & εξασκηθείτε στο AWS Hacking: Μάθετε & εξασκηθείτε στο GCP Hacking:
Όταν καθορίζετε το security context ενός Pod, μπορείτε να χρησιμοποιήσετε αρκετά χαρακτηριστικά. Από την άποψη της αμυντικής ασφάλειας, θα πρέπει να εξετάσετε:
Να έχετε runASNonRoot ως True
Να ρυθμίσετε runAsUser
Εάν είναι δυνατόν, εξετάστε το ενδεχόμενο περιορισμού των δικαιωμάτων υποδεικνύοντας seLinuxOptions και seccompProfile
Μην δίνετε προνομιακή ομαδική πρόσβαση μέσω runAsGroup και supplementaryGroups
Αυτό το context ρυθμίζεται μέσα στις ορισμούς κοντέινερ. Από την άποψη της αμυντικής ασφάλειας, θα πρέπει να εξετάσετε:
allowPrivilegeEscalation να είναι False
Μην προσθέτετε ευαίσθητες ικανότητες (και αφαιρέστε αυτές που δεν χρειάζεστε)
privileged να είναι False
Εάν είναι δυνατόν, ρυθμίστε το readOnlyFilesystem ως True
Ρυθμίστε το runAsNonRoot σε True και ορίστε ένα runAsUser
Εάν είναι δυνατόν, εξετάστε το ενδεχόμενο περιορισμού των δικαιωμάτων υποδεικνύοντας seLinuxOptions και seccompProfile
Μην δίνετε προνομιακή ομαδική πρόσβαση μέσω runAsGroup.
Σημειώστε ότι τα χαρακτηριστικά που ορίζονται σε τόσο SecurityContext όσο και PodSecurityContext, η τιμή που καθορίζεται στο SecurityContext έχει προτεραιότητα.
Μάθετε & εξασκηθείτε στο AWS Hacking: Μάθετε & εξασκηθείτε στο GCP Hacking:
Ελέγξτε τα !
Εγγραφείτε στην 💬 ή στην ή ακολουθήστε μας στο Twitter 🐦 .
Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα και github repos.
allowPrivilegeEscalation boolean
AllowPrivilegeEscalation ελέγχει εάν μια διαδικασία μπορεί να κερδίσει περισσότερα προνόμια από τη γονική της διαδικασία. Αυτό το bool ελέγχει άμεσα εάν η σημαία no_new_privs θα ρυθμιστεί στη διαδικασία του κοντέινερ. AllowPrivilegeEscalation είναι πάντα true όταν το κοντέινερ εκτελείται ως Privileged ή έχει CAP_SYS_ADMIN
capabilities Capabilities Περισσότερες πληροφορίες σχετικά με Capabilities
Οι ικανότητες που προστίθενται/αφαιρούνται κατά την εκτέλεση κοντέινερ. Προεπιλογή στο προεπιλεγμένο σύνολο ικανοτήτων.
privileged boolean
Εκτελέστε το κοντέινερ σε προνομιακή λειτουργία. Οι διαδικασίες σε προνομιακά κοντέινερ είναι ουσιαστικά ισοδύναμες με root στον host. Προεπιλογή στο false.
procMount string
Το procMount δηλώνει τον τύπο του proc mount που θα χρησιμοποιηθεί για τα κοντέινερ. Η προεπιλογή είναι DefaultProcMount που χρησιμοποιεί τις προεπιλεγμένες ρυθμίσεις του χρόνου εκτέλεσης για αναγνώσιμες διαδρομές και κρυφές διαδρομές.
readOnlyRootFilesystem boolean
Εάν αυτό το κοντέινερ έχει ένα σύστημα αρχείων ρίζας μόνο για ανάγνωση. Η προεπιλογή είναι false.
runAsGroup ακέραιος
Η GID για να εκτελέσετε το entrypoint της διαδικασίας κοντέινερ. Χρησιμοποιεί την προεπιλεγμένη ρύθμιση χρόνου εκτέλεσης εάν δεν είναι ρυθμισμένο.
runAsNonRoot boolean
Υποδεικνύει ότι το κοντέινερ πρέπει να εκτελείται ως μη ριζικός χρήστης. Εάν είναι true, ο Kubelet θα επικυρώσει την εικόνα κατά την εκτέλεση για να διασφαλίσει ότι δεν εκτελείται ως UID 0 (root) και θα αποτύχει να ξεκινήσει το κοντέινερ εάν το κάνει.
runAsUser ακέραιος
Η UID για να εκτελέσετε το entrypoint της διαδικασίας κοντέινερ. Προεπιλογή στον χρήστη που καθορίζεται στα μεταδεδομένα της εικόνας εάν δεν είναι καθορισμένο.
seLinuxOptions SELinuxOptions Περισσότερες πληροφορίες σχετικά με seLinux
Το SELinux context που θα εφαρμοστεί στο κοντέινερ. Εάν δεν είναι καθορισμένο, ο χρόνος εκτέλεσης του κοντέινερ θα εκχωρήσει ένα τυχαίο SELinux context για κάθε κοντέινερ.
Οι seccomp επιλογές που θα χρησιμοποιηθούν από αυτό το κοντέινερ.
Οι ρυθμίσεις που σχετίζονται με τα Windows που εφαρμόζονται σε όλα τα κοντέινερ.
fsGroup ακέραιος
Μια ειδική συμπληρωματική ομάδα που εφαρμόζεται σε όλα τα κοντέινερ σε ένα pod. Ορισμένοι τύποι όγκων επιτρέπουν στον Kubelet να αλλάξει την ιδιοκτησία αυτού του όγκου ώστε να ανήκει στο pod: 1. Η ιδιοκτησία GID θα είναι η FSGroup 2. Το bit setgid είναι ρυθμισμένο (τα νέα αρχεία που δημιουργούνται στον όγκο θα ανήκουν στη FSGroup) 3. Τα δικαιώματα είναι OR'd με rw-rw---- Εάν δεν είναι ρυθμισμένο, ο Kubelet δεν θα τροποποιήσει την ιδιοκτησία και τα δικαιώματα οποιουδήποτε όγκου
fsGroupChangePolicy string
Αυτό καθορίζει τη συμπεριφορά της αλλαγής ιδιοκτησίας και δικαιωμάτων του όγκου πριν εκτεθεί μέσα στο Pod.
runAsGroup ακέραιος
Η GID για να εκτελέσετε το entrypoint της διαδικασίας κοντέινερ. Χρησιμοποιεί την προεπιλεγμένη ρύθμιση χρόνου εκτέλεσης εάν δεν είναι ρυθμισμένο.
runAsNonRoot boolean
Υποδεικνύει ότι το κοντέινερ πρέπει να εκτελείται ως μη ριζικός χρήστης. Εάν είναι true, ο Kubelet θα επικυρώσει την εικόνα κατά την εκτέλεση για να διασφαλίσει ότι δεν εκτελείται ως UID 0 (root) και θα αποτύχει να ξεκινήσει το κοντέινερ εάν το κάνει.
runAsUser ακέραιος
Η UID για να εκτελέσετε το entrypoint της διαδικασίας κοντέινερ. Προεπιλογή στον χρήστη που καθορίζεται στα μεταδεδομένα της εικόνας εάν δεν είναι καθορισμένο.
seLinuxOptions SELinuxOptions Περισσότερες πληροφορίες σχετικά με seLinux
Το SELinux context που θα εφαρμοστεί σε όλα τα κοντέινερ. Εάν δεν είναι καθορισμένο, ο χρόνος εκτέλεσης του κοντέινερ θα εκχωρήσει ένα τυχαίο SELinux context για κάθε κοντέινερ.
seccompProfile SeccompProfile Περισσότερες πληροφορίες σχετικά με Seccomp
Οι seccomp επιλογές που θα χρησιμοποιηθούν από τα κοντέινερ σε αυτό το pod.
supplementalGroups πίνακας ακέραιων αριθμών
Μια λίστα με ομάδες που εφαρμόζονται στη διαδικασία που εκτελείται πρώτη σε κάθε κοντέινερ, εκτός από την κύρια GID του κοντέινερ.
Οι sysctls περιέχουν μια λίστα με namespaced sysctls που χρησιμοποιούνται για το pod. Τα pods με μη υποστηριζόμενους sysctls (από τον χρόνο εκτέλεσης του κοντέινερ) ενδέχεται να αποτύχουν να εκκινηθούν.
Οι ρυθμίσεις που σχετίζονται με τα Windows που εφαρμόζονται σε όλα τα κοντέινερ. Εάν δεν είναι καθορισμένο, οι επιλογές εντός του SecurityContext ενός κοντέινερ θα χρησιμοποιηθούν.