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

  • Apa Itu HYFE XL Prioritas? Ini Pengertian, FUP, dan Realita Kecepatannya
  • Pengertian Render dan Convert: Apa Bedanya dalam Video Editing?
  • Cara Mengatasi Aplikasi Office yang Terus Muncul dan Menerapkan Perubahan Pengaturan Privasi
  • Pixel Launcher Mendapatkan Sentuhan Google Search Baru!
  • Penyebab Aplikasi Wondr BNI Tidak Bisa Dibuka
  • Kode 0425 Daerah Mana? Ini Pengertian dan Fakta Sebenarnya
  • Apa Itu SSS CapCut? Pengertian Downloader Video Tanpa Watermark yang Wajib Kalian Tahu
  • Apa Itu Paket GamesMAX Telkomsel? Ini Pengertian dan Fungsinya Bagi Gamers
  • Apa Itu Menu Plus di Google Search? Ini Pengertian dan Fungsinya
  • Apa Itu Lepas Kolpri? Ini Pengertian dan Fenomenanya di Dunia Gaming
  • Pixel Buds Pro Dapat Update Software dengan Dukungan ANC Adaptif dan Peningkatan Audio
  • Mous Pixel Watch 4 Akan Hadir dengan Charger Baru dan Fitur-Fitur Terbaru
  • Hati-hati, Video Asli Botol Golda Viral Season 4 Full 6.30 Menit, Cek Link dan Faktanya disini!
  • Google Docs Dapat Update Material 3 dan Desain Ekspresif Baru, Fokus pada Kreativitas dan Kolaborasi
  • Belum Tahu? Ini Trik Hitung Cost Per Gigabyte Supaya Gak Boncos Saat Beli Paket Internet
  • Apple TV dan Google Cast Akan Terintegrasi Lebih Dalam, Tawarkan Pengalaman Streaming yang Lebih Baik
  • Lagi Rame Botol Golda Viral 19 Detik? APA ITU? Jangan Asal Klik Link Sembarangan, Ini Bahayanya!
  • Apa itu Regedit FF Auto Headshot 100 No Password 2024? Simak Definisi dan Cara Kerjanya
  • Apa Itu KPH dan MPH? Pengertian dan Perbedaannya di Game Balap
  • Belum Tahu? Inilah Cara Aman Quotex Login dan Solusi Kalau Error!
  • Apa Itu Fitur Gestur Baru di Pixel Watch 4? Ini Pengertian dan Perbedaannya
  • Belum Tahu? Inilah Cara Aman Login Binomo dan Trik Trading Buat Pemula Biar Nggak Boncos
  • Cara Mengatasi Error ‘Versi Diagnostik Belum Terbarui’ (Your current version of diagnostics is not up to date)
  • Cara Membuat Newsletter di Outlook 365
  • Sering Telepon di Tempat Berisik? Fitur Baru Expressive Call dari Google Bakal Jadi Penyelamat Kalian!
  • Google Pixel 10 Pro Akan Punya Integrasi Play Points Lebih Dalam
  • Stop Cara Kuno! Ini Trik Supaya Manajemen Karyawan Jadi Lebih Cepat dan Anti Ribet
  • Bug di Aplikasi Cuaca Wear OS Google: Update Tidak Ngaruh!
  • Samsung Kembangkan Sensor Kamera Baru Pakai Teknologi Global Shutter dan Efek Blur Bergerak
  • Cara Membuat Anggaran Otomatis di Excel
  • Apa Itu EmmaUbuntu Debian 6? Pengertian Distro Ringan Berbasis Trixie untuk PC Lawas
  • Apa Itu LocalSend? Pengertian dan Definisi Solusi Transfer File Lintas Platform
  • Apa Itu Microservices Playbook untuk AI Agent? Ini Definisi dan Strategi Penerapannya
  • Apa Itu Firefox AI Engine? Definisi dan Pengertian Strategi Baru Mozilla
  • Apa Itu Toradex Luna SL1680? Definisi System-on-Module dengan Kekuatan AI Terjangkau
  • Apa Itu US National Framework for AI? Kepres Donald Trump Bikin Heboh Dunia AI
  • Kenapa Bisnis Properti & Real Estate Harus Pakai AI, Ini Alasannya!
  • BARU! Brave Browser Bakal Bisa Ngerjain Tugas Kalian Secara Otomatis Lewat Agentic AI!
  • Belum Tahu? Google Maps Bakal Makin Canggih Berkat Integrasi Gemini Visual Ini!
  • Siap-Siap! Tahun 2026 Gemini Bakal “Menjajah” Chrome, iPhone, sampai Smartwatch Kalian
  • Apa Itu Serangan Kredensial IAM (IAM Credential Attack)? Ini Pengertian dan Risiko Fatalnya
  • Apa Itu Serangan Malware Kloning Aplikasi? Ini Pengertian dan Cara Kerjanya
  • Serangan Siber Rusia Targetkan Industri Energi: Sandworm Mengintai
  • Apa Itu Video PT Pabrik Brebes Viral? Ini Pengertian dan Fakta Sebenarnya
  • Apa itu Data Breach Coupang? Pengertian dan Kronologi Kebocoran Data Terbesar di Korea Selatan

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