| 1 | # SPDX-License-Identifier: GPL-2.0-only |
| 2 | config SECURITY_APPARMOR |
| 3 | bool "AppArmor support" |
| 4 | depends on SECURITY && NET |
| 5 | select AUDIT |
| 6 | select SECURITY_PATH |
| 7 | select SECURITYFS |
| 8 | select SECURITY_NETWORK |
| 9 | default n |
| 10 | help |
| 11 | This enables the AppArmor security module. |
| 12 | Required userspace tools (if they are not included in your |
| 13 | distribution) and further information may be found at |
| 14 | https://apparmor.wiki.kernel.org |
| 15 | |
| 16 | If you are unsure how to answer this question, answer N. |
| 17 | |
| 18 | config SECURITY_APPARMOR_DEBUG |
| 19 | bool "Build AppArmor with debug code" |
| 20 | depends on SECURITY_APPARMOR |
| 21 | default n |
| 22 | help |
| 23 | Build apparmor with debugging logic in apparmor. Not all |
| 24 | debugging logic will necessarily be enabled. A submenu will |
| 25 | provide fine grained control of the debug options that are |
| 26 | available. |
| 27 | |
| 28 | config SECURITY_APPARMOR_DEBUG_ASSERTS |
| 29 | bool "Build AppArmor with debugging asserts" |
| 30 | depends on SECURITY_APPARMOR_DEBUG |
| 31 | default y |
| 32 | help |
| 33 | Enable code assertions made with AA_BUG. These are primarily |
| 34 | function entry preconditions but also exist at other key |
| 35 | points. If the assert is triggered it will trigger a WARN |
| 36 | message. |
| 37 | |
| 38 | config SECURITY_APPARMOR_DEBUG_MESSAGES |
| 39 | bool "Debug messages enabled by default" |
| 40 | depends on SECURITY_APPARMOR_DEBUG |
| 41 | default n |
| 42 | help |
| 43 | Set the default value of the apparmor.debug kernel parameter. |
| 44 | When enabled, various debug messages will be logged to |
| 45 | the kernel message buffer. |
| 46 | |
| 47 | config SECURITY_APPARMOR_INTROSPECT_POLICY |
| 48 | bool "Allow loaded policy to be introspected" |
| 49 | depends on SECURITY_APPARMOR |
| 50 | default y |
| 51 | help |
| 52 | This option selects whether introspection of loaded policy |
| 53 | is available to userspace via the apparmor filesystem. This |
| 54 | adds to kernel memory usage. It is required for introspection |
| 55 | of loaded policy, and check point and restore support. It |
| 56 | can be disabled for embedded systems where reducing memory and |
| 57 | cpu is paramount. |
| 58 | |
| 59 | config SECURITY_APPARMOR_HASH |
| 60 | bool "Enable introspection of sha256 hashes for loaded profiles" |
| 61 | depends on SECURITY_APPARMOR_INTROSPECT_POLICY |
| 62 | select CRYPTO_LIB_SHA256 |
| 63 | default y |
| 64 | help |
| 65 | This option selects whether introspection of loaded policy |
| 66 | hashes is available to userspace via the apparmor |
| 67 | filesystem. This option provides a light weight means of |
| 68 | checking loaded policy. This option adds to policy load |
| 69 | time and can be disabled for small embedded systems. |
| 70 | |
| 71 | config SECURITY_APPARMOR_HASH_DEFAULT |
| 72 | bool "Enable policy hash introspection by default" |
| 73 | depends on SECURITY_APPARMOR_HASH |
| 74 | default y |
| 75 | help |
| 76 | This option selects whether sha256 hashing of loaded policy |
| 77 | is enabled by default. The generation of sha256 hashes for |
| 78 | loaded policy provide system administrators a quick way to |
| 79 | verify that policy in the kernel matches what is expected, |
| 80 | however it can slow down policy load on some devices. In |
| 81 | these cases policy hashing can be disabled by default and |
| 82 | enabled only if needed. |
| 83 | |
| 84 | config SECURITY_APPARMOR_EXPORT_BINARY |
| 85 | bool "Allow exporting the raw binary policy" |
| 86 | depends on SECURITY_APPARMOR_INTROSPECT_POLICY |
| 87 | select ZSTD_COMPRESS |
| 88 | select ZSTD_DECOMPRESS |
| 89 | default y |
| 90 | help |
| 91 | This option allows reading back binary policy as it was loaded. |
| 92 | It increases the amount of kernel memory needed by policy and |
| 93 | also increases policy load time. This option is required for |
| 94 | checkpoint and restore support, and debugging of loaded policy. |
| 95 | |
| 96 | config SECURITY_APPARMOR_COMPRESSED_POLICY |
| 97 | bool "Allow loading policy in a compressed format" |
| 98 | depends on SECURITY_APPARMOR |
| 99 | select ZSTD_DECOMPRESS |
| 100 | default y |
| 101 | help |
| 102 | This option allows loading policy from userspace in a |
| 103 | compressed format. This allows for userspace to not have to |
| 104 | decrompress caches before loading policy, and also allows |
| 105 | for less kernel memory to be used when "exporting the raw |
| 106 | binary policy" is enabled. |
| 107 | |
| 108 | config SECURITY_APPARMOR_PARANOID_LOAD |
| 109 | bool "Perform full verification of loaded policy" |
| 110 | depends on SECURITY_APPARMOR |
| 111 | default y |
| 112 | help |
| 113 | This options allows controlling whether apparmor does a full |
| 114 | verification of loaded policy. This should not be disabled |
| 115 | except for embedded systems where the image is read only, |
| 116 | includes policy, and has some form of integrity check. |
| 117 | Disabling the check will speed up policy loads. |
| 118 | |
| 119 | config SECURITY_APPARMOR_KUNIT_TEST |
| 120 | tristate "Build KUnit tests for policy_unpack.c" if !KUNIT_ALL_TESTS |
| 121 | depends on KUNIT && SECURITY_APPARMOR |
| 122 | default KUNIT_ALL_TESTS |
| 123 | help |
| 124 | This builds the AppArmor KUnit tests. |
| 125 | |
| 126 | KUnit tests run during boot and output the results to the debug log |
| 127 | in TAP format (https://testanything.org/). Only useful for kernel devs |
| 128 | running KUnit test harness and are not for inclusion into a |
| 129 | production build. |
| 130 | |
| 131 | For more information on KUnit and unit tests in general please refer |
| 132 | to the KUnit documentation in Documentation/dev-tools/kunit/. |
| 133 | |
| 134 | If unsure, say N. |