Kubernetes SecurityContext(s)
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 | Το 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. |
readOnlyRootFilesystem boolean | Εάν αυτό το 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