私のpython-flaskアプリ(gunicorn経由で実行されます)のapparmorプロファイルを書き込もうとすると、aa-logprofにすべての依存関係を尋ねることができません。
不平モードの場合、アプリケーションは期待どおりに動作しますが、aa-logprofはこれ以上の提案を行いません(この投稿の最後の完全なプロファイルを参照してください)。私が読んだすべての場所で、aa-logprofは/ var/log/syslog自体から読み取るすべての依存関係について尋ねるべきだと主張しているようです。 aa-enforceに切り替えると、アプリケーションが失敗して終了します。 syslogをテーリングすると、ネットワークが拒否されたことが表示されます。これは、当然、aa-logprofから質問されなかったために発生します。私の質問は、アプリケーションのネットワークをどのように有効にするかではなく、すべての依存関係について尋ねられないため、私のアプローチの何が間違っているのですか?
文句を言うと、ネットワーク関連のものは許可されます(そして、logprofは私にそれについて尋ねません!?)
Feb 22 20:54:40 devshed kernel: [7991608.610578] type=1400 audit(1424634880.675:68975): apparmor="ALLOWED" operation="accept" profile="/usr/local/bin/gunicorn" pid=2350 comm="gunicorn" laddr=127.0.0.1 lport=5000 family="inet" sock_type="stream" protocol=6
Feb 22 20:54:40 devshed kernel: [7991608.716887] type=1400 audit(1424634880.783:68976): apparmor="ALLOWED" operation="accept" profile="/usr/local/bin/gunicorn" pid=2353 comm="gunicorn" laddr=127.0.0.1 lport=5000 family="inet" sock_type="stream" protocol=6
強制されている場合、ネットワーク関連は拒否されます(そして、logprofはそれについて私に尋ねませんか?)
Feb 22 20:41:04 devshed kernel: [7990792.228716] type=1400 audit(1424634064.295:68737): apparmor="DENIED" operation="create" profile="/usr/local/bin/gunicorn" pid=2162 comm="gunicorn" family="inet" sock_type="stream" protocol=0
/usr/local/bin/gunicorn {
#include <abstractions/base>
#include <abstractions/bash>
#include <abstractions/python>
/bin/dash rix,
/bin/uname rix,
/etc/nsswitch.conf r,
/etc/services r,
/proc/*/mounts r,
/sbin/ldconfig rix,
/sbin/ldconfig.real rix,
/usr/bin/python2.7 ix,
/usr/local/bin/ r,
/usr/local/bin/gunicorn r,
/usr/share/mysql/charsets/Index.xml r,
/tmp/* rw,
/var/tmp/* a,
/var/www/api/app.log w,
/var/www/api/app/* r,
/var/www/api/* a,
}
それはあなたのせいではないと思います。 apparmor-utilsのバージョン2.8.98-0ubuntu2(Ubuntu 14.10に存在)はバグがあるようです。 aa-genprofが定期的にクラッシュし(Pythonエラー)、aa-logprofで説明したのと同じような動作が発生しました。それはいくつかのルールを満たしますが、他は除外されているようです。
うまくいけば、次のバージョンが良くなるでしょう。新しいバージョンは、まだ含まれていないだけですでにリリースされています。
ちなみに、aa-genprofでのクラッシュは、投稿したものと同様のソケットルールに関連しているため、ログパーサーに問題があると思われます。