audit2allow
có khả năng tạo ra một quy tắc để cho phép execheap
cho container_t
quá trình loại. Trước tiên, bạn luôn có thể tạo mô-đun và kiểm tra nó trước khi tải.
Một vấn đề có thể là, bây giờ bất kỳ quy trình nào với container_t
loại hiện được phép hoạt động tương tự. Để tránh điều này, bạn có thể cần phải tạo loại tùy chỉnh của riêng mình (sử dụngcontainer_t
làm mẫu) và chỉ cho phép execheap
loại đặc biệt này.
Bài đăng trên blog này của Dan Walsh giải thích cách viết chính sách tùy chỉnh như vậy. Bạn cũng có thể kết hợp điều này với audit2allow
để tạo ra các quy tắc thực tế. Các bước cần thiết là:
Tạo một chính sách container cơ bản, ví dụ container_execheap
:
policy_module(container_execheap, 1.0)
virt_sandbox_domain_template(container_execheap_t)
virt_sandbox_domain_template
macro tạo loại mới container_execheap_t
và tạo các quy tắc cần thiết cho hoạt động của docker mà loại mới có thể được sử dụng làm miền chứa.
Biên dịch và tải mô-đun chính sách (các tệp phát triển cần thiết, bao gồm tệp tạo tệp, nên được cung cấp theo selinux-policy-devel
gói):
make -f /usr/selinux/devel/Makefile container_execheap.pp
semodule -i container_execheap.pp
Loại mới có thể được cấu hình là một miền cho phép:
semanage permissive -a container_execheap_t
Đối với các miền cho phép, từ chối AVC được ghi lại nhưng các quy tắc không được thi hành. Bằng cách này, nó dễ dàng tạo ra các quy tắc còn thiếu sau khi sử dụng audit2allow
.
Chạy container của bạn trong bối cảnh mới này, một cái gì đó như docker run ... --security-opt label:type:container_execheap_t ...
Tạo lỗi dự kiến. Sau đó chạy audit2allow
để tạo quy tắc cho phép các hoạt động cho container_execheap_t
. Bạn có thể cập nhật cùng một .te
tệp mô-đun (nhớ tăng số phiên bản) với các quy tắc mới. Biên dịch và cài đặt các mô-đun cập nhật.
Khi không còn lỗi nào được tạo, hãy đặt loại thùng chứa tùy chỉnh trở lại chế độ thực thi semanage -d container_execheap
.