Docker --privileged
Τι Επηρεάζει
Όταν εκτελείτε ένα κοντέινερ ως privileged, αυτές είναι οι προστασίες που απενεργοποιείτε:
Mount /dev
Σε ένα privileged κοντέινερ, όλες οι ** συσκευές μπορούν να προσπελαστούν στο /dev/
**. Επομένως, μπορείτε να escape κάνοντας mount τον δίσκο του host.
Σύστημα αρχείων πυρήνα μόνο για ανάγνωση
Τα συστήματα αρχείων πυρήνα παρέχουν έναν μηχανισμό για μια διαδικασία να τροποποιήσει τη συμπεριφορά του πυρήνα. Ωστόσο, όταν πρόκειται για διαδικασίες κοντέινερ, θέλουμε να αποτρέψουμε την πραγματοποίηση οποιωνδήποτε αλλαγών στον πυρήνα. Επομένως, τοποθετούμε τα συστήματα αρχείων πυρήνα ως μόνο για ανάγνωση εντός του κοντέινερ, διασφαλίζοντας ότι οι διαδικασίες του κοντέινερ δεν μπορούν να τροποποιήσουν τον πυρήνα.
Απόκρυψη πάνω από τα συστήματα αρχείων πυρήνα
Το /proc σύστημα αρχείων είναι επιλεκτικά εγγράψιμο, αλλά για λόγους ασφαλείας, ορισμένα μέρη είναι προστατευμένα από πρόσβαση εγγραφής και ανάγνωσης, επικαλύπτοντάς τα με tmpfs, διασφαλίζοντας ότι οι διαδικασίες κοντέινερ δεν μπορούν να έχουν πρόσβαση σε ευαίσθητες περιοχές.
tmpfs είναι ένα σύστημα αρχείων που αποθηκεύει όλα τα αρχεία στη εικονική μνήμη. Το tmpfs δεν δημιουργεί κανένα αρχείο στον σκληρό σας δίσκο. Έτσι, αν αποσυνδέσετε ένα σύστημα αρχείων tmpfs, όλα τα αρχεία που βρίσκονται σε αυτό χάνονται για πάντα.
Linux capabilities
Οι μηχανές κοντέινερ εκκινούν τα κοντέινερ με περιορισμένο αριθμό δυνατοτήτων για να ελέγχουν τι συμβαίνει μέσα στο κοντέινερ από προεπιλογή. Οι προνομιακές έχουν όλες τις δυνατότητες προσβάσιμες. Για να μάθετε για τις δυνατότητες διαβάστε:
Μπορείτε να χειριστείτε τις δυνατότητες που είναι διαθέσιμες σε ένα κοντέινερ χωρίς να τρέχετε σε --privileged
λειτουργία χρησιμοποιώντας τις σημαίες --cap-add
και --cap-drop
.
Seccomp
Seccomp είναι χρήσιμο για να περιορίσει τις syscalls που μπορεί να καλέσει ένα κοντέινερ. Ένα προεπιλεγμένο προφίλ seccomp είναι ενεργοποιημένο από προεπιλογή όταν τρέχουν κοντέινερ docker, αλλά σε privileged mode είναι απενεργοποιημένο. Μάθετε περισσότερα για το Seccomp εδώ:
Επίσης, σημειώστε ότι όταν χρησιμοποιούνται Docker (ή άλλες CRIs) σε ένα Kubernetes cluster, το seccomp filter είναι απενεργοποιημένο από προεπιλογή
AppArmor
AppArmor είναι μια βελτίωση του πυρήνα για να περιορίσει containers σε ένα περιορισμένο σύνολο πόρων με προφίλ ανά πρόγραμμα. Όταν εκτελείτε με την επιλογή --privileged
, αυτή η προστασία είναι απενεργοποιημένη.
SELinux
Η εκτέλεση ενός κοντέινερ με την επιλογή --privileged
απενεργοποιεί τις ετικέτες SELinux, προκαλώντας να κληρονομήσει την ετικέτα της μηχανής κοντέινερ, συνήθως unconfined
, παρέχοντας πλήρη πρόσβαση παρόμοια με αυτή της μηχανής κοντέινερ. Σε λειτουργία χωρίς δικαιώματα root, χρησιμοποιεί container_runtime_t
, ενώ σε λειτουργία root, εφαρμόζεται το spc_t
.
Τι Δεν Επηρεάζεται
Namespaces
Τα Namespaces ΔΕΝ επηρεάζονται από την επιλογή --privileged
. Ακόμα και αν δεν έχουν ενεργοποιηθεί οι περιορισμοί ασφαλείας, δεν βλέπουν όλες τις διεργασίες στο σύστημα ή το δίκτυο του host, για παράδειγμα. Οι χρήστες μπορούν να απενεργοποιήσουν μεμονωμένα namespaces χρησιμοποιώντας τις επιλογές --pid=host
, --net=host
, --ipc=host
, --uts=host
των μηχανών κοντέινερ.
Χώρος ονομάτων χρήστη
Από προεπιλογή, οι μηχανές κοντέινερ δεν χρησιμοποιούν χώρους ονομάτων χρήστη, εκτός από τα κοντέινερ χωρίς δικαιώματα root, τα οποία τα απαιτούν για την τοποθέτηση συστήματος αρχείων και τη χρήση πολλαπλών UIDs. Οι χώροι ονομάτων χρήστη, που είναι αναπόσπαστο μέρος των κοντέινερ χωρίς δικαιώματα root, δεν μπορούν να απενεργοποιηθούν και ενισχύουν σημαντικά την ασφάλεια περιορίζοντας τα δικαιώματα.
Αναφορές
Last updated