Dengan perkembangan pesat teknologi kontena, isu keselamatan secara beransur-ansur menarik perhatian orang ramai. Dalam persekitaran penggunaan kontena, pengasingan keselamatan dan pengurusan kebenaran kontena adalah penting. Artikel ini akan memperkenalkan cara menggunakan Docker untuk pengasingan selamat dan pengurusan kebenaran bagi bekas, dan memberikan contoh kod untuk membantu pembaca memahami dengan lebih baik.
1. Gunakan pengguna dan kumpulan untuk pengasingan keselamatan
Secara lalai, Docker menggunakan keistimewaan pengguna root apabila dijalankan dalam bekas. Jika tidak dihadkan, bekas itu akan mempunyai semua kebenaran hos, yang jelas tidak selamat. Oleh itu, untuk menjadikan bekas Docker lebih selamat, kami perlu mengehadkan kebenaran bekas itu. Satu cara untuk melakukan ini adalah melalui pengasingan keselamatan melalui pengguna dan kumpulan.
Pertama, kita perlu mencipta pengguna dan kumpulan baharu dalam imej Docker untuk mengehadkan kebenaran bekas. Gunakan arahan berikut untuk mencipta pengguna dan kumpulan baharu dalam Dockerfile.
RUN groupadd -r mygroup && useradd -r -g mygroup myuser
Arahan ini akan mencipta pengguna baharu bernama "myuser" dan menambahkannya pada kumpulan baharu bernama "mygroup". Gunakan parameter "-r" untuk menetapkan pengguna dan kumpulan ke tahap sistem.
Selepas mencipta pengguna dan kumpulan baharu, kita perlu bertukar kepada pengguna baharu dalam aplikasi dalam bekas. Ini boleh dicapai dengan menetapkan ENTRYPOINT atau CMD.
USER myuser
Kemudian, kita boleh bertukar ke kumpulan baharu dengan arahan berikut.
RUN chgrp mygroup /path/to/file
Arahan ini menukar kumpulan fail /group/to/file kepada "mygroup".
2. Gunakan ruang nama bekas untuk pengasingan selamat
Ruang nama bekas ialah ciri kernel Linux yang membenarkan pengasingan logik proses dan sumber. Dengan menggunakan ruang nama kontena, anda boleh mencipta persekitaran berjalan terpencil antara bekas, dengan itu meningkatkan keselamatan kontena.
Menggunakan pengasingan rangkaian, anda boleh mengasingkan bekas daripada hos dan bekas lain. Kita boleh mengasingkan bekas daripada rangkaian peribadi menggunakan arahan berikut.
docker run --net=bridge --name=mycontainer imagename
Menggunakan pengasingan PID, anda boleh mengasingkan bekas daripada proses lain pada hos. Kita boleh mengasingkan bekas dengan PID peribadi menggunakan arahan di bawah.
docker run --pid=container:target_container --name=mycontainer imagename
Menggunakan pengasingan UTS, anda boleh mengasingkan bekas daripada hos. Gunakan arahan di bawah untuk mengasingkan bekas dengan UTS peribadi.
docker run --uts=private --name=mycontainer imagename
3 Gunakan Seccomp untuk pengurusan kebenaran
Seccomp ialah fungsi kernel Linux yang digunakan untuk mengehadkan akses proses kepada panggilan sistem. Menggunakan Seccomp, anda boleh mentakrifkan panggilan sistem bahawa proses dibenarkan untuk dilaksanakan, dengan itu mengurangkan risiko proses yang mengeksploitasi kelemahan peningkatan keistimewaan. Dalam Docker, anda boleh menggunakan dasar Seccomp untuk mengehadkan keupayaan bekas.
Mula-mula, kita perlu mencipta profil Seccomp. Anda boleh menggunakan editor teks untuk mencipta fail yang dipanggil "seccomp.json" dan mentakrifkan panggilan sistem yang dibenarkan oleh bekas.
{ "defaultAction": "SCMP_ACT_ALLOW", "syscalls": [ { "name": "write", "action": "SCMP_ACT_ERRNO", "args": [ { "index": 0, "value": 1 }, { "index": 1, "value": 2 } ] }, { "name": "open", "action": "SCMP_ACT_ALLOW" }, { "name": "close", "action": "SCMP_ACT_ALLOW" } ] }
Dalam contoh di atas, panggilan sistem "tulis" dan "buka" dibenarkan, dan panggilan sistem "tutup" dibenarkan ditutup.
Gunakan arahan di bawah untuk menggunakan dasar Seccomp pada bekas.
docker run --security-opt seccomp=./seccomp.json --name=mycontainer imagename
Di sini, kami menetapkan fail seccomp.json sebagai fail konfigurasi dasar Seccom bagi bekas semasa membuat bekas.
Ringkasan
Artikel ini memperkenalkan cara menggunakan Docker untuk pengasingan keselamatan dan pengurusan kebenaran kontena, termasuk menggunakan pengguna dan kumpulan, menggunakan ruang nama kontena dan menggunakan Seccomp. Dengan aplikasi kontena yang meluas pada masa hadapan, keselamatan kontena akan menarik lebih banyak perhatian. Adalah disyorkan bahawa pemaju dan kakitangan operasi dan penyelenggaraan mesti mengukuhkan pengasingan keselamatan dan pengurusan kebenaran kontena apabila menggunakan kontena.
Atas ialah kandungan terperinci Cara menggunakan Docker untuk pengasingan keselamatan kontena dan pengurusan kebenaran. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!