مولد ملف تعريف Apparmor لحاويات Docker. في الأساس ، ملف تعريف Apparmor بشكل أفضل ، من إنشاء واحد باليد ، لأن من سيفعل ذلك.
"مراجعة طلبات سحب ملف تعريف Apparmor هي لعنة وجودي"
جيس فرازيل

جدول المحتويات
تثبيت
الثنائيات
عن طريق الذهاب
الاستخدام
ملف globbing
ملف التكوين
تثبيت ملف تعريف
كيف تبدو الملف الشخصي الذي تم إنشاؤه؟
التكامل مع Docker
للحصول على تعليمات التثبيت من الثنائيات ، يرجى زيارة صفحة الإصدارات.
$ go get github.com/genuinetools/bane
$ bane -Hbane -مخصص ملف تعريف Apparmor المخصص لحاويات Docker: Bane <Somment> Flags: -d تمكين تسجيل التصحيح (الافتراضي: خطأ) -دليل -دير لحفظ الملفات الشخصية (الافتراضي: /etc/apparmor.d/containers) الأوامر: الإصدار إظهار معلومات الإصدار.
Sample.Toml هو تكوين عينة Apparmor لـ nginx في حاوية.
| مثال على الكرة الأرضية | وصف |
|---|---|
/dir/file | تطابق ملف معين |
/dir/* | تطابق أي ملفات في دليل (بما في ذلك ملفات DOT) |
/dir/a* | تطابق أي ملف في دليل يبدأ بـ |
/dir/*.png | تطابق أي ملف في دليل ينتهي مع .png |
/dir/[^.]* | تطابق أي ملف في دليل باستثناء ملفات DOT |
/dir/ | تطابق دليل |
/dir/*/ | تطابق أي دليل داخل /dir / |
/dir/a*/ | تطابق أي دليل داخل / dir / بدءًا من ملف |
/dir/*a/ | تطابق أي دليل داخل / dir / ending مع أ |
/dir/** | تطابق أي ملف أو دليل في أو أسفل /dir / |
/dir/**/ | تطابق أي دليل في أو أسفل /دير / |
/dir/**[^/] | تطابق أي ملف في أو أدناه /dir / |
/dir{,1,2}/** | تطابق أي ملف أو دليل في أو أدناه /dir /، /dir1 /، و /dir2 / |
الآن بعد أن أصبح لدينا ملف التكوين الخاص بنا من أعلاه ، دعنا نثبته. سيقوم bane بتثبيت ملف التعريف تلقائيًا في دليل /etc/apparmor.d/containers/ وتشغيل apparmor_parser .
$ sudo bane sample.toml# profile profile بنجاح يمكنك الآن تشغيل ملف التعريف مع# `docker run-security-opt =" apparmor: docker-nginx-sample "`# الآن دعنا ندير nginx $ run -d-security -OPT = "Apparmor: Docker-Nginx-Sample" -P 80:80 Nginx
لم يكن استخدام ملفات تعريف Apparmor المخصصة أسهل!
الآن دعنا نحاول القيام بأنشطة خبيثة مع ملف تعريف العينة:
$ Docker Run--security-Opt = "Apparmor: Docker-Nginx-Sample" -P 80:80-RM -it nginx bashroot@6da5a2a930b9: ~# Ping 8.8.8. :/# topbash:/usr/bin/top: إذن deniedroot@6da5a2a930b9: ~# touch ~/thingtouch: لا يمكن أن تلمس "الشيء": إذن deniedroot@6da5a2a930b9:/# shbash:/bin/sh: إذن deniedroot@6da5a2a930b9:/# dashbash:/bin/dash:
عينة من إخراج dmesg عند استخدام LogOnWritePaths :
[ 1964.142128] type=1400 audit(1444369315.090:38): apparmor="STATUS" operation="profile_replace" profile="unconfined" name="docker-nginx" pid=3945 comm="apparmor_parser" [ 1966.620327] type=1400 audit(1444369317.570:39): apparmor="AUDIT" operation="open" profile="docker-nginx" name="/1" pid=3985 comm="nginx" requested_mask="c" fsuid=0 ouid=0 [ 1966.624381] type=1400 audit(1444369317.574:40): apparmor="AUDIT" operation="mkdir" profile="docker-nginx" name="/var/cache/nginx/client_temp/" pid=3985 comm="nginx" requested_mask="c" fsuid=0 ouid=0 [ 1966.624446] type=1400 audit(1444369317.574:41): apparmor="AUDIT" operation="chown" profile="docker-nginx" name="/var/cache/nginx/client_temp/" pid=3985 comm="nginx" requested_mask="w" fsuid=0 ouid=0 [ 1966.624463] type=1400 audit(1444369317.574:42): apparmor="AUDIT" operation="mkdir" profile="docker-nginx" name="/var/cache/nginx/proxy_temp/" pid=3985 comm="nginx" requested_mask="c" fsuid=0 ouid=0 [ 1966.624494] type=1400 audit(1444369317.574:43): apparmor="AUDIT" operation="chown" profile="docker-nginx" name="/var/cache/nginx/proxy_temp/" pid=3985 comm="nginx" requested_mask="w" fsuid=0 ouid=0 [ 1966.624507] type=1400 audit(1444369317.574:44): apparmor="AUDIT" operation="mkdir" profile="docker-nginx" name="/var/cache/nginx/fastcgi_temp/" pid=3985 comm="nginx" requested_mask="c" fsuid=0 ouid=0 [ 1966.624534] type=1400 audit(1444369317.574:45): apparmor="AUDIT" operation="chown" profile="docker-nginx" name="/var/cache/nginx/fastcgi_temp/" pid=3985 comm="nginx" requested_mask="w" fsuid=0 ouid=0 [ 1966.624546] type=1400 audit(1444369317.574:46): apparmor="AUDIT" operation="mkdir" profile="docker-nginx" name="/var/cache/nginx/uwsgi_temp/" pid=3985 comm="nginx" requested_mask="c" fsuid=0 ouid=0 [ 1966.624582] type=1400 audit(1444369317.574:47): apparmor="AUDIT" operation="chown" profile="docker-nginx" name="/var/cache/nginx/uwsgi_temp/" pid=3985 comm="nginx" requested_mask="w" fsuid=0 ouid=0
بالنسبة sample.toml أعلاه. toml يتوفر ملف التعريف الذي تم إنشاؤه كـ Docker-Nginx-Sample.
كان هذا في الأصل دليلًا على المفهوم لما سيكون من المأمول أن يصبح ملفًا للأمان الأصلي في محرك Docker. لمزيد من المعلومات حول هذا ، راجع Docker/Docker#17142.