Alat pengembang · Docker dijalankan ke konverter penulisan Docker
Menjalankan container sebagai root: apa --user dan pengguna: berubah dan mengapa
· Mengapa itu penting
buruh pelabuhan kontainer keamanan
Kecuali jika gambar menyatakan sebaliknya, proses dalam penampung Anda adalah root. Postingan ini menjelaskan apa artinya pada host, bagaimana --user dan pengguna Compose: kunci mengubahnya, dan masalah kepemilikan file yang terjadi setelahnya.
File yang tidak dapat Anda hapus — bind mount penuh dengan file milik root setelah satu container dijalankan
File yang tidak dapat Anda hapus — bind mount penuh dengan file milik root setelah satu container dijalankan. Bukti: keluaran yang diikat dapat mengungkap ketidakcocokan identitas yang tidak dapat didiagnosis oleh penguraian. Reproduksi identitas runtime dengan literal sekali pakai. Pasangkan setiap kejadian sumber dengan kemampuan pemasangan pengguna; cadangan ruang nama dan kepemilikan untuk tinjauan tujuan.
Insiden keamanan juga mengungkapkan bahwa batasan insiden keamanan terpisah adalah bahwa gambar USER dan sakelar titik masuk memerlukan pemeriksaan atau sumber gambar. Bukti: gambar USER dan sakelar titik masuk memerlukan pemeriksaan atau sumber gambar. Batasan identitas waktu proses ini adalah titik perhentian. Periksa kemampuan pemasangan pengguna tanpa perilaku manufaktur, lalu dokumentasikan pemeriksaan host untuk namespace dan kepemilikan.
Root di dalam adalah root di luar — dengan pengaturan namespace pengguna default, UID 0 dalam wadah adalah UID 0 pada host untuk file yang dipasang
Root di dalam adalah root di luar — dengan pengaturan namespace pengguna default, UID 0 dalam wadah adalah UID 0 pada host untuk file yang dipasang. Bukti: UID tidak ada efek host yang bergantung pada konfigurasi namespace, tidak dibaca di sini. Lacak token identitas waktu proses ke dalam kemampuan pemasangan pengguna. Pisahkan nilai yang diurutkan dari bidang nilai terakhir; ruang nama dan kepemilikan berada di luar koleksi.
Batasan mekanisme keamanan terkait adalah Batas tata bahasa keamanan terpisah adalah contoh 1000:1000 menunjukkan pelestarian bukan jaminan kepemilikan. Bukti: contoh 1000:1000 menunjukkan pelestarian bukan jaminan kepemilikan. Gunakan fakta identitas runtime ini untuk memprediksi satu anggota atau skalar dalam kemampuan pemasangan pengguna. Periksa peringatan sebelum memutuskan apa pun tentang ruang nama dan kepemilikan.
--user menjadi pengguna: — numerik UID:GID versus nama, dan mengapa numerik lebih aman bila gambar tidak memiliki akun yang cocok
--user menjadi pengguna: — numerik UID:GID versus nama, dan mengapa numerik lebih aman bila gambar tidak memiliki akun yang cocok. Bukti: --user menjadi pengguna dan teks numerik UID:GID dikutip. Nilai serialisasi identitas runtime dari modelnya. Mengutip kemampuan pemasangan pengguna melindungi tipe tetapi tidak memberikan bukti operasional untuk ruang nama dan kepemilikan.
Pengamatan serialisasi keamanan kedua adalah Batas keluaran keamanan terpisah adalah peta read_only cap_drop dan security_opt sedangkan mode rootless tidak. Bukti: read_only cap_drop dan security_opt map sedangkan mode rootless tidak. Output identitas runtime ini memisahkan pengaturan dari konteks yang tidak tersedia. Jaga agar kemampuan pemasangan pengguna dapat ditinjau dan periksa namespace dan kepemilikan secara mandiri.
Gambar yang sudah menghilangkan hak istimewa — USER di Dockerfile, dan gambar yang mengalihkan pengguna di titik masuknya
Gambar yang sudah menghilangkan hak istimewanya — USER di Dockerfile, dan gambar yang mengalihkan pengguna di titik masuknya. Berhenti pada pengecualian identitas runtime alih-alih menebak-nebak. Setiap penambahan kemampuan yang dekat dengan pemasangan pengguna memerlukan alasan khusus penerapan yang terkait dengan namespace dan kepemilikan.
Batasan pengecualian keamanan lainnya adalah bahwa batasan pengecualian keamanan terpisah adalah pemetaan ulang namespace dan konteks Kubernetes berada di luar cakupan. Bukti: pemetaan ulang namespace dan konteks Kubernetes berada di luar cakupan. Pertahankan perintah identitas runtime asli di samping peringatan. Perbandingan tersebut menunjukkan kemampuan pemasangan pengguna dan namespace serta keputusan kepemilikan mana yang tetap manual.
Contoh praktis: mengonversi proses buruh pelabuhan --user 1000:1000 -v /srv/app:/app — pengguna: kunci dan kepemilikan yang dihasilkan pada disk
Contoh praktis: mengonversi proses buruh pelabuhan --user 1000:1000 -v /srv/app:/app — pengguna: kunci dan kepemilikan yang dihasilkan pada disk. Buat contoh identitas runtime dari nama sintetis. Jadikan setiap pengguna memasang item kemampuan dapat dilacak tanpa memperlihatkan ruang nama produksi dan detail kepemilikan.
Contoh contoh keamanan yang sama menunjukkan bahwa Batasan contoh keamanan terpisah adalah identitas menjadi terlihat di samping pemasangan dan kemampuan untuk ditinjau. Bukti: identitas menjadi terlihat di samping tunggangan dan kemampuan untuk ditinjau. Fakta identitas waktu proses yang dipasangkan harus terlihat dalam kemampuan pemasangan pengguna. Catat baris tersebut dan hindari asumsi tentang ruang nama dan kepemilikan.
Kunci pengerasan lainnya — read_only, cap_drop: [ALL], security_opt no-new-privileges, dan Docker tanpa root sebagai langkah yang lebih besar
Kunci pengerasan lainnya — read_only, cap_drop: [ALL], security_opt no-new-privileges, dan Docker tanpa root sebagai langkah yang lebih besar. Terjemahkan konsekuensi identitas runtime ke dalam satu perbedaan kemampuan pemasangan pengguna yang dapat diamati. Docker memiliki namespace dan keputusan kepemilikan selanjutnya.
Implementasi konsekuensi keamanan juga menunjukkan Batas efek keamanan terpisah adalah bahwa keluaran yang dipasang di pengikat dapat mengekspos ketidakcocokan identitas yang tidak dapat didiagnosis oleh penguraian. Membagi tanggung jawab identitas runtime: konversi menulis kemampuan pemasangan pengguna, repositori menghapus rahasia, dan operator memvalidasi namespace dan kepemilikan.
Apa yang tidak tercakup di sini — konfigurasi pemetaan ulang namespace pengguna dan securityContext Kubernetes
Apa yang tidak tercakup di sini — konfigurasi pemetaan ulang namespace pengguna dan securityContext Kubernetes. Batasi cakupan identitas waktu proses pada cabang kemampuan pemasangan pengguna yang ditampilkan di sini. Formulir dan default yang berdekatan tidak dapat menjawab pertanyaan namespace dan kepemilikan.
Satu lagi batasan cakupan keamanan yang mengikuti Batas batas keamanan terpisah adalah bahwa UID efek host nol bergantung pada konfigurasi namespace tidak dibaca di sini. Perlakukan batas identitas runtime ini sebagai pengecualian. Lebih memilih kemampuan pemasangan pengguna yang akurat daripada menebak tentang namespace dan kepemilikan.
Kesimpulan: putuskan siapa proses Anda — dan periksa keluaran konverter termasuk pengguna: sebelum Anda memunculkan tumpukan
Kesimpulan: putuskan siapa proses Anda — dan periksa keluaran konverter termasuk pengguna: sebelum Anda memunculkan tumpukan. Audit identitas waktu proses sebagai opsi sumber, bidang model, garis kemampuan pemasangan pengguna, dan peringatan. Hapus rahasia sebelum memeriksa namespace dan kepemilikan.
Terakhir, sumber takeaway keamanan mengonfirmasi Batas keputusan keamanan terpisah adalah --user menjadi pengguna dan teks numerik UID:GID dikutip. Tutup identitas runtime secara sempit: kemampuan pemasangan pengguna adalah salah satu kandidatnya; namespace dan kepemilikan serta kesetaraan shell bukanlah jaminan.