Docker --privileged
Etkileyenler
Bir ayrıcalıklı konteyner çalıştırdığınızda devre dışı bıraktığınız korumalar şunlardır:
/dev'i bağlama
Ayrıcalıklı bir konteynerde, tüm cihazlara /dev/
üzerinden erişilebilir. Bu nedenle, ana bilgisayarın diski bağlayarak kaçabilirsiniz.
Salt Okunur Çekirdek Dosya Sistemleri
Çekirdek dosya sistemleri, bir işlemin çekirdeğin davranışını değiştirmesini sağlayan bir mekanizma sağlar. Bununla birlikte, konteyner işlemleri için, çekirdeğe herhangi bir değişiklik yapmalarını önlemek istiyoruz. Bu nedenle, konteyner içindeki çekirdek dosya sistemlerini salt okunur olarak bağlarız, böylece konteyner işlemleri çekirdeği değiştiremez.
Çekirdek dosya sistemlerinin üzerine maskeleme
/proc dosya sistemi seçici olarak yazılabilir olmasına rağmen, güvenlik için belirli bölümler tmpfs ile üzerlerine örtülerek yazma ve okuma erişiminden korunur, böylece konteyner işlemleri hassas alanlara erişemez.
tmpfs, tüm dosyaları sanal bellekte depolayan bir dosya sistemidir. tmpfs, sabit diskinizde herhangi bir dosya oluşturmaz. Bu nedenle, bir tmpfs dosya sistemini ayrıldığınızda, içinde bulunan tüm dosyalar sonsuza dek kaybolur.
Linux yetenekleri
Konteyner motorları, konteynerleri varsayılan olarak içeride ne olduğunu kontrol etmek için sınırlı sayıda yetenekle başlatır. Ayrıcalıklı olanlar tüm yeteneklere erişebilir. Yetenekler hakkında bilgi edinmek için okuyun:
--cap-add
allows you to add specific capabilities to a container, while --cap-drop
allows you to drop specific capabilities. Here are some commonly used capabilities:
SYS_ADMIN
: Allows various system administration tasks.SYS_PTRACE
: Allows tracing and debugging of processes.NET_ADMIN
: Allows network administration tasks.SYS_MODULE
: Allows loading and unloading kernel modules.SYS_RAWIO
: Allows direct access to raw I/O ports.
To add or drop capabilities, use the following syntax:
For example, to add the SYS_ADMIN
capability to a container:
To drop the SYS_PTRACE
capability from a container:
By manipulating the capabilities of a container, you can fine-tune its permissions and restrict its access to certain system resources. This can help improve the security of your Docker environment.
Ayrıca, Docker (veya diğer CRIs) bir Kubernetes kümesinde kullanıldığında, seccomp filtresi varsayılan olarak devre dışı bırakılır.
AppArmor
AppArmor, konteynerleri sınırlı bir dizi kaynak ile program bazlı profiller ile sınırlayan bir çekirdek geliştirmesidir. --privileged
bayrağıyla çalıştırdığınızda, bu koruma devre dışı bırakılır.
SELinux
--privileged
bayrağıyla bir konteyner çalıştırmak, SELinux etiketlerini devre dışı bırakır ve genellikle unconfined
olan konteyner motorunun etiketini devralarak tam erişim sağlar. Köksüz modda container_runtime_t
kullanılırken, kök modunda spc_t
uygulanır.
Hangi Durumları Etkilemez
Ad alanları (Namespaces)
Ad alanları, --privileged
bayrağından etkilenmez. Güvenlik kısıtlamaları etkin olmasa da, örneğin sistemdeki veya ana ağda bulunan tüm işlemleri göremezler. Kullanıcılar, ad alanlarını devre dışı bırakmak için --pid=host
, --net=host
, --ipc=host
, --uts=host
konteyner motoru bayraklarını kullanabilirler.
Kullanıcı ad alanı
Varsayılan olarak, konteyner motorları, kök olmayan konteynerler için dosya sistemi bağlama ve birden fazla UID kullanma gerektiren durumlar dışında kullanıcı ad alanlarını kullanmaz. Kök olmayan konteynerler için gerekli olan kullanıcı ad alanları, devre dışı bırakılamaz ve ayrıcalıkları kısıtlayarak güvenliği önemli ölçüde artırır.
Referanslar
Last updated