audit2allowkemungkinan menghasilkan aturan untuk memungkinkan execheapuntuk container_tproses jenis. Anda selalu dapat membuat modul terlebih dahulu dan memeriksanya, sebelum Anda memuatnya.
Masalah yang mungkin terjadi adalah, bahwa sekarang semua proses dengan container_ttipe sekarang diizinkan untuk operasi yang sama. Untuk menghindari ini, Anda mungkin perlu membuat jenis khusus Anda sendiri (menggunakan container_tsebagai templat) dan hanya mengizinkan execheapjenis khusus ini.
Posting blog ini oleh Dan Walsh menjelaskan cara menulis kebijakan khusus tersebut. Anda juga dapat menggabungkan ini dengan audit2allowuntuk menghasilkan aturan yang sebenarnya. Langkah-langkah penting adalah:
Buat kebijakan wadah dasar, misalnya container_execheap:
policy_module(container_execheap, 1.0)
virt_sandbox_domain_template(container_execheap_t)
virt_sandbox_domain_templatemakro membuat tipe baru container_execheap_tdan membuat aturan yang diperlukan untuk operasi buruh pelabuhan yang tipe baru dapat digunakan sebagai domain kontainer.
Kompilasi dan muat modul kebijakan (file pengembangan yang diperlukan, termasuk makefile, harus disediakan oleh selinux-policy-develpaket):
make -f /usr/selinux/devel/Makefile container_execheap.pp
semodule -i container_execheap.pp
Tipe baru dapat dikonfigurasikan menjadi domain permisif:
semanage permissive -a container_execheap_t
Untuk domain permisif, penolakan AVC dicatat tetapi aturan tidak ditegakkan. Dengan cara ini, mudah untuk menghasilkan aturan yang hilang di kemudian hari audit2allow.
Jalankan wadah Anda dalam konteks baru ini, sesuatu seperti docker run ... --security-opt label:type:container_execheap_t ...
Hasilkan kesalahan yang diharapkan. Kemudian jalankan audit2allowuntuk menghasilkan aturan yang memungkinkan operasi untuk container_execheap_t. Anda dapat memperbarui .tefile modul yang sama (ingat untuk menambah nomor versi) dengan aturan baru. Kompilasi dan instal modul yang diperbarui.
Saat tidak ada lagi kesalahan yang terjadi, kembalikan jenis wadah khusus ke dalam mode penegakan semanage -d container_execheap.