Skip to content

emka.web.id

menulis pengetahuan – merekam peradaban

Menu
  • Home
  • Tutorial
  • Search
Menu

Mengapa Proses Dalam Wadah Docker Tidak Harus Berjalan sebagai Root

Posted on August 18, 2022

Processes dalam wadah Docker tidak boleh dijalankan sebagai root. Lebih aman untuk menjalankan aplikasi Anda sebagai pengguna non-root yang Anda tentukan sebagai bagian dari Dockerfile Anda atau saat menggunakan docker run. Ini meminimalkan risiko dengan menghadirkan permukaan serangan yang dikurangi untuk setiap ancaman di container Anda.

Dalam artikel ini, Anda akan mempelajari tentang bahaya menjalankan aplikasi dalam container sebagai root. Anda juga akan melihat cara membuat pengguna non-root dan mengatur namespace dalam situasi yang tidak memungkinkan.

Mengapa Menjalankan sebagai Root Berbahaya?

Containers dijalankan sebagai root secara default. Daemon Docker dijalankan sebagai root pada host Anda dan container yang berjalan juga akan menjadi root.

Meskipun kelihatannya root di dalam container adalah pengguna independen, ini sebenarnya sama dengan akun root pada host Anda. Pemisahan hanya disediakan oleh mekanisme isolasi kontainer Docker. Tidak ada batas fisik yang kuat; proses lain penampung Anda yang dijalankan oleh pengguna root di kernel host Anda. Ini berarti kerentanan dalam aplikasi Anda, waktu proses Docker, atau kernel Linux dapat memungkinkan penyerang untuk keluar dari wadah dan melakukan operasi dengan hak istimewa root pada mesin Anda.

Ada beberapa perlindungan bawaan yang mengurangi risiko terjadinya hal ini. Root di dalam wadah tidak memiliki hak istimewa dan memiliki kemampuan terbatas. Hal ini mencegah container menggunakan perintah administrasi sistem kecuali jika Anda menambahkan kemampuan secara manual atau menggunakan mode istimewa saat Anda memulai container.

Meskipun mitigasi ini, mengizinkan aplikasi untuk dijalankan sebagai root tetap merupakan bahaya. Sama seperti Anda akan membatasi penggunaan root di lingkungan tradisional, tidak bijaksana untuk menggunakannya secara tidak perlu di dalam wadah Anda. Anda menyediakan lingkungan yang memiliki hak istimewa berlebih yang memberi penyerang lebih banyak pijakan jika terjadi pelanggaran.

Menjalankan Aplikasi dalam Kontainer sebagai Pengguna Non-Root

Praktik terbaik untuk menjalankan aplikasi dalam kontainer sebagai pengguna biasa adalah praktik terbaik. Sebagian besar perangkat lunak tidak memerlukan akses root sehingga mengubah pengguna memberikan lapisan pertahanan langsung terhadap breakout container.

Anda harus membuat akun pengguna baru sebagai salah satu tahap terakhir di Dockerfile Anda. Anda dapat mencapai ini dengan instruksi USER:

FROM base-image:RUN terbaru apt install demo-package USER demo-user:demo-group ENTRYPOINT [“demo-binary”]

Containers yang dimulai dari gambar ini akan dijalankan sebagai demo-user. Pengguna akan menjadi anggota grup demo-grup. Anda dapat menghilangkan nama grup jika Anda tidak memerlukan pengguna untuk berada dalam grup:

USER demo-user

Anda dapat menentukan ID pengguna (UID) dan ID grup (GID) alih-alih nama:

USER 950:950

Mengalokasikan UID dan GID biasanya merupakan cara paling aman untuk melanjutkan. Ini mencegah pengguna dalam wadah dipetakan ke akun host yang memiliki hak istimewa.

USER sering ditetapkan sebagai tahap kedua dari belakang dalam Dockerfile. Artinya Anda masih bisa menjalankan operasi yang membutuhkan root tadi di build image. Instruksi apt install pada contoh di atas memiliki kebutuhan yang sah untuk root. Jika instruksi USER ditempatkan di atasnya, apt akan dijalankan sebagai pengguna demo yang tidak memiliki izin yang diperlukan. Karena instruksi Dockerfile hanya berlaku untuk pembuatan gambar, bukan penampung yang sedang berjalan, aman untuk membiarkan perubahan pengguna sampai nanti di Dockerfile.

AndaMengubah pengguna yang dijalankan penampung Anda mungkin mengharuskan Anda memperbarui izin pada file dan folder yang diaksesnya. Tetapkan kepemilikan pada setiap jalur yang akan digunakan oleh aplikasi Anda:

COPY initial-config.yaml /data/config.yaml USER demo-user:demo-group RUN chown demo-user:demo-group /data

Dalam contoh ini /data direktori harus dimiliki oleh pengguna demo agar aplikasi dapat membuat perubahan pada file konfigurasinya. Pernyataan COPY sebelumnya akan menyalin file sebagai root. Singkatan tersedia dengan menggunakan flag –chown dengan copy:

COPY –chown=demo-user:demo-group initial-config.yaml /data/config.yamlMengubah Pengguna Saat Memulai Container

Meskipun Anda dapat dengan mudah mengubah pengguna di Dockerfile Anda sendiri, banyak aplikasi pihak ketiga terus berjalan sebagai root. Anda dapat mengurangi risiko yang terkait dengan penggunaan ini dengan menyetel flag –user setiap kali Anda memanggil docker run. Ini menimpa set pengguna di Dockerfile.

$ docker run gambar -d –user demo-user:demo-group demo-image:latest $ docker run -d –user demo-user demo-image:latest $ docker run -d –user 950:950 demo-image:latest

Bendera –user menjalankan proses container sebagai pengguna yang ditentukan. Ini kurang aman daripada instruksi Dockerfile USER karena Anda harus menerapkannya satu per satu ke setiap perintah docker run. Opsi yang lebih baik untuk gambar yang biasa digunakan adalah membuat gambar turunan Anda sendiri yang dapat mengatur akun pengguna baru:

FROM image-that-runs-as-root:latest USER demo-user$ docker build . -t image-that-now-runs-as-non-root:latest

Mengubah pengguna gambar pihak ketiga dapat menyebabkan masalah: jika wadah diharapkan dijalankan sebagai root, atau perlu mengakses jalur sistem file yang dimiliki oleh root, Anda ‘ll melihat kesalahan saat Anda menggunakan aplikasi. Anda dapat mencoba mengubah izin secara manual di jalur yang menyebabkan masalah. Atau, periksa apakah vendor memiliki metode yang didukung untuk menjalankan aplikasi dengan akun pengguna yang tidak memiliki hak istimewa.

Menangani Aplikasi yang Harus Dijalankan sebagai Root

Penempatan nama pengguna adalah teknik untuk menangani aplikasi yang memerlukan beberapa hak akses root. Ini memungkinkan Anda memetakan root di dalam wadah ke pengguna non-root di host Anda. Root yang disimulasikan di dalam container memiliki hak istimewa yang dibutuhkannya tetapi breakout tidak akan memberikan akses root ke host.

Pemetaan ulang namespace diaktifkan dengan menambahkan bidang userns-remap ke file /etc/docker/daemon.json Anda:

{ ” userns-remap”: “default” }

Menggunakan default sebagai nilai untuk userns-remap menginstruksikan Docker untuk secara otomatis membuat pengguna baru di host Anda yang disebut dockremap. Root di dalam container akan dipetakan kembali ke dockremap di host Anda. Anda dapat secara opsional menentukan pengguna dan grup yang ada, menggunakan kombinasi UID/GID atau nama pengguna/nama grup:

{ “userns-remap”: “demo-user” }

Mulai ulang daemon Docker setelah menerapkan layanan sudo change:

$ Anda docker restart

Jika Anda menggunakan nsuser-remap: default, pengguna dockremap sekarang harus ada di host Anda:

$ id dockremap uid=140(dockremap) gid=119(dockremap) groups=119(dockremap)

Pengguna juga akan muncul di file ID bawahan /etc/subuid dan /etc/subgid:

$ dockremap:231500:65535

Pengguna telah dialokasikan kisaran 65.535 ID bawahan mulai dari 231500. Dalam ruang nama pengguna, ID 231500 dipetakan ke 0, menjadikannya sebagai pengguna root di wadah Anda. Menjadi UID bernomor tinggi, 231500 tidak memiliki hak istimewa pada host sehingga serangan breakout container tidak akan dapat menimbulkan begitu banyak kerusakan.

Semua container yang Anda mulai akan dijalankan menggunakan ruang nama pengguna yang dipetakan ulang kecuali jika Anda memilih keluar dengan docker run — pengguna = tuan rumah. Mekanismenya bekerja dengan membuat direktori dengan namespace di dalam /var/lib/docker yang dimiliki oleh UID dan GID bawahan dari user dengan namespace:

$ sudo ls -l /var/lib/docker/231500.231500 total 14 drwx—– – 5 231500 231500 13 Jul 22 19:00 aufs drwx—— 3 231500 231500 13 Jul 22 19:00 container …

User namepacing adalah cara efektif untuk meningkatkan isolasi container, menghindari breakout, dan menjaga kompatibilitas dengan aplikasi yang membutuhkan hak akses root. Namun ada beberapa pengorbanan: fitur ini berfungsi paling baik pada instance Docker baru, volume yang dipasang dari host harus memiliki izin yang disesuaikan, dan beberapa driver penyimpanan eksternal tidak mendukung pemetaan pengguna sama sekali. Anda harus meninjau dokumentasi sebelum mengadopsi opsi ini.

Summary

Menjalankan aplikasi dalam container sebagai root adalah risiko keamanan. Meskipun mudah diabaikan, isolasi yang disediakan oleh container tidak cukup kuat untuk memisahkan pengguna kernel sepenuhnya dari pengguna container. Root dalam wadah sama dengan root pada host Anda sehingga kompromi yang berhasil dapat memberikan kontrol atas mesin Anda.

Sebagai pembuat gambar, Anda harus menyertakan instruksi USER di Dockerfile Anda sehingga aplikasi Anda berjalan tanpa root. Pengguna gambar dapat mengganti ini dengan docker run –user untuk menetapkan UID dan GID tertentu. Ini membantu mengurangi kasus di mana gambar biasanya menggunakan root.

Anda dapat lebih memperketat keamanan dengan menghapus semua kemampuan dari wadah menggunakan –cap-drop=ALL, lalu memasukkannya ke daftar putih yang diperlukan dengan tanda –cap-add. Menggabungkan teknik ini akan menjalankan aplikasi Anda sebagai pengguna non-root dengan set hak minimum yang diperlukan, meningkatkan postur keamanan Anda.

Itulah berita seputar Mengapa Proses Dalam Wadah Docker Tidak Harus Berjalan sebagai Root, semoga bermanfaat. Disadur dari HowToGeek.com.

Terbaru

  • Inilah Alasan HP Nokia Jadul Harganya Masih Selangit dan Banyak Diburu Kolektor di Tahun 2026
  • Inilah HP Samsung A Series Terbaru yang Pakai Layar AMOLED, Mewah Tapi Harganya Terjangkau Banget!
  • Inilah Vivo T5 Pro, HP Midrange dengan Baterai 9.020 mAh yang Siap Comeback ke Indonesia!
  • Inilah Cara Daftar Manajer Koperasi Desa Merah Putih 2026, Ada 30.000 Formasi yang Bisa Kalian Lamar!
  • Inilah Alasan Kenapa Kemkomdigi Ancam Blokir Wikipedia dan Dampak Seriusnya Buat Masa Depan Pendidikan Kita
  • Inilah Cara Cek BLT Desa 2026 Tahap 2, Cair Rp900 Ribu Langsung ke Tangan Kalian!
  • Inilah Cara Cek PIP Lewat HP 2026 dan Panduan Lengkap Pencairannya Biar Dana Nggak Hangus
  • Inilah 51 Kode Redeem FF Aktif 17 April 2026, Buruan Klaim Skin Blue Angelic dan Bundle Langka!
  • Inilah Huawei Mate 80 Pro, Sang Legenda Flagship yang Kembali dengan Kamera True-to-Colour dan Ketahanan Luar Biasa
  • Inilah Deretan iPhone Terlawas yang Masih Layak Dibeli Tahun 2026, Performa Tetap Ngebut dan Harga Terjangkau!
  • Inilah HP Oppo Paling Worth It di Tahun 2026, Spesifikasi Gahar Tapi Harga Tetap Merakyat!
  • Inilah Daftar Link Nonton Film Ilegal yang Diblokir Komdigi dan Alasan Kenapa Kalian Harus Waspada
  • Inilah Lenovo Legion Y70 (2026), HP Gaming yang Siap Guncang Pasar dengan Teknologi AI
  • Inilah Rekomendasi HP Oppo Murah Spek Mewah Tahun 2026 yang Nggak Bakal Bikin Kantong Kalian Jebol!
  • Inilah 15 Situs Nonton Film Gratis Legal 2026, Bye-Bye Iklan Ganggu dan Drama Situs Ilegal!
  • Inilah Beasiswa Bekraf Digital Talent 2026: Solusi Buat Kalian yang Mau Jago AI dan Makin Produktif
  • Inilah Cara Memilih Power Bank yang Aman Dibawa ke Pesawat Agar Tidak Disita Petugas
  • Inilah Bocoran Harga dan Spesifikasi Redmi K90 Max, HP Gaming Dimensity 9500 Termurah yang Segera Dirilis!
  • Inilah RedMagic Gaming Tablet 5 Pro, Monster Gaming dengan Layar 185Hz dan Chipset Snapdragon 8 Elite yang Bikin Melongo!
  • Inilah Kenapa IGRS Trending di X, Bocorkan Spoiler Penting Game 007 First Light Hingga Ending!
  • Inilah 5 HP Murah Terbaru dengan Baterai Jumbo yang Siap Masuk Indonesia 2026, Ada yang Sampai 7.800 mAh!
  • Inilah Alasan Kenapa Samsung Galaxy S27 Bakal Pakai 50 Persen Chipset Exynos, Qualcomm Mulai Ditinggalkan?
  • Inilah Vivo Y31d Pro, Smartphone “Badak” dengan Baterai 7000mAh dan Ketahanan Standar Militer
  • Inilah 11 Game Penghasil Saldo DANA Tercepat 2026, Cara Asyik Cari Cuan Sambil Rebahan!
  • Inilah Motorola Edge 70 Pro, HP Midrange Gahar dengan Baterai 6500 mAh yang Siap Meluncur!
  • Inilah Kode Redeem FF Max 15 April 2026, Buru Skin Undersea Splatter dan Item Eksklusif Bawah Laut Sekarang!
  • Inilah Bocoran Vivo X500 Series dan Kamera Vlogging Saku yang Bakal Bikin DJI Ketar-ketir!
  • Inilah 6 Rekomendasi HP Gaming Paling Murah April 2026, Main Game Berat Nggak Pake Lag!
  • Inilah Caranya Manfaatin SPayLater di Aplikasi ShopeePay Biar Keuangan Tetap Aman Saat Tanggal Tua
  • Inilah Perbedaan Durasi Reels IG dan FB Terbaru 2026, Ternyata Bisa Sampai 20 Menit Lho!
  • Is it Time to Replace Nano? Discover Fresh, the Terminal Text Editor You Actually Want to Use
  • How to Design a Services Like Google Ads
  • How to Fix 0x800ccc0b Outlook Error: Step-by-Step Guide for Beginners
  • How to Fix NVIDIA App Error on Windows 11: Simple Guide
  • How to Fix Excel Formula Errors: Quick Fixes for #NAME
  • How to use the Wan 2.7 AI model: A complete walkthrough
  • How to Run Minimax M2-7 Locally: A Step-by-Step Guide for Beginners
  • How to Build Self-Driving Codebases with Async Agents and NVIDIA Hardware
  • How to create a professional AI influencer using Apob AI
  • How to Use AI-Powered Tools to Level Up Your Stock Market Research Game with Claude Code
  • New Text Document
  • Apa itu Spear-Phishing via npm? Ini Pengertian dan Cara Kerjanya yang Makin Licin
  • Apa Itu Predator Spyware? Ini Pengertian dan Kontroversi Penghapusan Sanksinya
  • Mengenal Apa itu TONESHELL: Backdoor Berbahaya dari Kelompok Mustang Panda
  • Siapa itu Kelompok Hacker Silver Fox?

©2026 emka.web.id | Design: Newspaperly WordPress Theme