Kubernetes SecurityContext(s)

Μάθετε το hacking στο AWS από το μηδέν μέχρι τον ήρωα με το htARTE (HackTricks AWS Red Team Expert)!

Άλλοι τρόποι για να υποστηρίξετε το HackTricks:

PodSecurityContext

Από τα έγγραφα:

Όταν καθορίζετε το περιβάλλον ασφάλειας ενός Pod, μπορείτε να χρησιμοποιήσετε διάφορα χαρακτηριστικά. Από την άποψη της ασφάλειας, θα πρέπει να λάβετε υπόψη:

  • Να έχετε το runASNonRoot ως True

  • Να ρυθμίσετε το runAsUser

  • Εάν είναι δυνατόν, να εξετάσετε τον περιορισμό των δικαιωμάτων με την χρήση των seLinuxOptions και seccompProfile

  • Να ΜΗΝ δίνετε πρόσβαση στην ομάδα προνομίων μέσω των runAsGroup και supplementaryGroups

fsGroup ακέραιος

Μια ειδική επιπλέον ομάδα που ισχύει για όλα τα containers σε ένα pod. Ορισμένοι τύποι όγκων επιτρέπουν στον Kubelet να αλλάξει την κυριότητα αυτού του όγκου ώστε να ανήκει στο pod: 1. Το GID θα είναι το FSGroup 2. Το bit setgid είναι ενεργοποιημένο (τα νέα αρχεία που δημιουργούνται στον όγκο θα ανήκουν στο FSGroup) 3. Τα bits άδειας πρόσβασης OR'd με rw-rw---- Εάν δεν έχει οριστεί, ο Kubelet δεν θα τροποποιήσει την κυριότητα και τις άδειες πρόσβασης κανενός όγκου

fsGroupChangePolicy συμβολοσειρά

Αυτό καθορίζει τη συμπεριφορά της αλλαγής κυριότητας και άδειας πρόσβασης του όγκου πριν από την εκθέση του εντός του Pod.

runAsGroup ακέραιος

Το GID για την εκτέλεση του entrypoint της διεργασίας του container. Χρησιμοποιεί την προεπιλογή του runtime εάν δεν έχει οριστεί. Μπορεί επίσης να οριστεί στο SecurityContext.

runAsNonRoot λογική τιμή

Υποδεικνύει ότι το container πρέπει να εκτελείται ως μη-ριζικός χρήστης. Εάν είναι true, ο Kubelet θα επικυρώσει την εικόνα κατά την εκτέλεση για να διασφαλίσει ότι δεν εκτελείται με UID 0 (root) και θα αποτύχει να ξεκινήσει το container εάν είναι.

runAsUser ακέραιος

Το UID για την εκτέλεση του entrypoint της διεργασίας του container. Προεπιλέγεται το χρήστης που καθορίζεται στα μεταδεδομένα τ

## Περιβάλλον Ασφαλείας (SecurityContext)

Από τα έγγραφα:

Αυτό το περιβάλλον ορίζεται μέσα στο ορισμό των containers. Από την άποψη της ασφάλειας, θα πρέπει να λάβετε υπόψη τα εξής:

  • allowPrivilegeEscalation σε False

  • Να μην προσθέτετε ευαίσθητες δυνατότητες (και να αφαιρείτε αυτές που δεν χρειάζεστε)

  • privileged σε False

  • Εάν είναι δυνατόν, ορίστε το readOnlyFilesystem ως True

  • Ορίστε το runAsNonRoot σε True και ορίστε ένα runAsUser

  • Εάν είναι δυνατόν, εξετάστε τον περιορισμό των δικαιωμάτων με την χρήση των seLinuxOptions και seccompProfile

  • ΜΗΝ δίνετε πρόσβαση στην ομάδα με runAsGroup

Σημειώστε ότι οι παράμετροι που ορίζονται τόσο στο SecurityContext όσο και στο PodSecurityContext, η τιμή που καθορίζεται στο SecurityContext έχει προτεραιότητα.

Το allowPrivilegeEscalation ελέγχει εάν ένα διεργασία μπορεί να αποκτήσει περισσότερα προνόμια από τη γονική της διεργασία. Αυτό το boolean ελέγχει απευθείας εάν η σημαία no_new_privs θα οριστεί στη διεργασία του container. Το allowPrivilegeEscalation είναι πάντα true όταν το container τρέχει ως Privileged ή έχει το CAP_SYS_ADMIN.

capabilities Capabilities Περισσότερες πληροφορίες για τις δυνατότητες

Οι δυνατότητες που προστίθενται/αφαιρούνται κατά την εκτέλεση των containers. Προεπιλογή είναι το σύνολο προεπιλεγμένων δυνατοτήτων.

privileged boolean

Εκτέλεση του container σε privileged mode. Οι διεργασίες σε privileged containers είναι ουσιαστικά ισοδύναμες με το root στον host. Προεπιλογή είναι το false.

procMount string

Το procMount υποδηλώνει τον τύπο του proc mount που θα χρησιμοποιηθεί για τα containers. Η προεπιλογή είναι το DefaultProcMount, το οποίο χρησιμοποιεί τις προεπιλεγμένες ρυθμίσεις του container runtime για τα readonly paths και τα masked paths.

Εάν αυτό το container έχει ένα read-only root filesystem. Η προεπιλογή είναι το false.

runAsGroup integer

Το GID για την εκτέλεση του entrypoint της διεργασίας του container. Χρησιμοποιεί την προεπιλογή του runtime εάν δεν έχει οριστεί.

runAsNonRoot boolean

Υποδεικνύει ότι το container πρέπει να εκτελείται ως μη-ριζικός χρήστης. Εάν είναι true, το Kubelet θα ελέγξει την εικόνα κατά την εκτέλεση για να διασφαλίσει ότι δεν εκτελείται με UID 0 (root) και θα αποτύχει να ξεκινήσει το container εάν αυτό συμβαίνει.

runAsUser integer

Το UID για την εκτέλεση του entrypoint της διεργασίας του container. Προεπιλογή είναι ο χρήστης που καθορίζεται στα μεταδεδομένα της εικόνας, εάν δεν έχει οριστεί.

seLinuxOptions SELinuxOptions Περισσότερες πληροφορίες

Last updated