Bagaimana cara melarang akses ke bagian dalam wadah Docker?

14

Saya ingin mengirimkan aplikasi saya kepada pelanggan dalam bentuk gambar buruh pelabuhan. Tetapi penting untuk memastikan bahwa pengguna akhir tidak mengubah apa pun di dalam wadah. Pengguna seharusnya hanya dapat menjalankan / menghentikan wadah dan berinteraksi dengan wadah melalui jaringan.

Apakah mungkin untuk melarang akses ke bagian dalam wadah? Apakah mungkin memverifikasi integritas gambar yang terbuat dari wadah?

Victor Mezrin
sumber
2
Kecuali Anda mengelola host buruh pelabuhan, saya yakin Anda tidak bisa. Masalah apa yang Anda ingin selesaikan dengan mencegah akses ini?
Tensibai
Seperti yang disebutkan Tensibai, itu tergantung. Jika Anda perlu tahu bahwa wadah itu tidak dimodifikasi untuk alasan keamanan, Anda pada dasarnya harus menjalankannya di server Anda sendiri. Jika Anda hanya ingin mencegah orang untuk memodifikasinya sehingga mereka tidak merusak barang, mungkin ada cara Anda bisa melakukan itu. Menjelaskan use case Anda akan membantu di sini.
Aurora0001

Jawaban:

11

Singkatnya, Anda tidak dapat mencegah pelanggan Anda dari memodifikasi kontainer yang mereka jalankan di infrastruktur mereka sendiri. Kontainer tidak seperti biner yang dapat dikaburkan; mereka adalah lingkungan runtime. Namun, kode yang Anda bagikan di dalam wadah dapat dikaburkan.

Pertanyaan Anda menyinggung masalah dukungan pihak ketiga: klien memodifikasi perangkat lunak yang mereka jalankan di lingkungan mereka sendiri. Jika Anda menyediakan alat untuk mengoperasikan wadah yang Anda berikan (mis. Pemantauan dan penebangan) maka klien harus setuju (sebagai bagian dari lisensi perangkat lunak) untuk tidak melakukan modifikasi yang tidak sah kepada mereka. Ini berlaku untuk semua jenis perangkat lunak pihak ketiga, bukan hanya wadah.

Tergantung pada situasi Anda, Anda mungkin juga memiliki opsi untuk menyediakan aplikasi Anda sebagai Perangkat Lunak Sebagai Layanan (SaaS) yang berjalan di infrastruktur cloud.

Jika klien Anda mengharuskan kontainer Anda dijalankan pada infrastruktur mereka, dan menolak untuk mematuhi pembatasan modifikasi, maka Anda mungkin tidak ingin mencoba mendukung penggunaan perangkat lunak Anda oleh mereka.

Dave Swersky
sumber
6

Docker tidak menyediakan sarana apa pun untuk menghalangi akses pengguna ke wadah, namun sebagai pengembang gambar Anda dapat mengikuti beberapa strategi

  • Mengaburkan perangkat lunak Anda (ruby, python, dll)
  • Bangun gambar Anda dari gambar dasar yang tidak memiliki shell, dan binari lain yang dapat digunakan pengguna untuk menginjak-injak gambar.

Tentu saja mereka selalu dapat mengekspor kontainer dan mengemasnya kembali, tetapi itu adalah langkah ekstrim ...

Astaga
sumber
Mengapa Ruby dan Python diberikan sebagai contoh untuk kode yang membingungkan? Kode dalam bahasa-bahasa itu biasanya disimpan sebagai file sumber teks-jelas pada OS yang menjalankan. Bukankah lebih disukai menggunakan bahasa yang dikompilasi seperti C ++, C #, Java atau yang bisa "diperkecil" seperti JS?
AjaxLeung
5

Anda dapat menghapus pengguna dari grup buruh pelabuhan dan membuat sudo untuk docker startdan docker stop.

pengguna2590
sumber
3
hanya mungkin / efektif jika Anda memiliki server-server itu ...
Dan Cornilescu
5

Jika klien Anda siap untuk menginvestasikan uang maka Anda harus menggunakan edisi Docker enterprise. Di Docker EE Anda memiliki satu alat yaitu UCP(Universal Control Plane) UCP . Dengan UCP Anda dapat membuat peran dan hak akses dan membatasi pengguna untuk mengubah / memodifikasi wadah.

Jika Anda ingin menguji UCP daripada DDC (Docker Data Center) memiliki lisensi uji coba satu bulan yang akan membantu Anda untuk menjelaskan hal-hal sesuai kebutuhan Anda.

Semoga ini bisa membantu!

Terima kasih!

chintan thakar
sumber
1
Sebagai solusi tentang grup buruh pelabuhan, ini berfungsi jika Anda mengelola sistem host buruh pelabuhan saja, OP terdengar lebih seperti mendistribusikan gambar ...
Tensibai
2

Berikan pengiriman Anda melalui skrip yang memungkinkan. Simpan semua jenis pembatasan dan periksa di skrip yang memungkinkan.

lakshayk
sumber
2
Bagaimana ini mencegah akses ke wadah? Coba Anda jelaskan bagaimana proposisi Anda benar-benar akan menyelesaikan masalah OP.
Michael Le Barbier Grünewald