github.com/walkingsparrow/docker@v1.4.2-0.20151218153551-b708a2249bfa/contrib/apparmor/template.go (about) 1 package main 2 3 const dockerProfileTemplate = `@{DOCKER_GRAPH_PATH}=/var/lib/docker 4 5 profile /usr/bin/docker (attach_disconnected, complain) { 6 # Prevent following links to these files during container setup. 7 deny /etc/** mkl, 8 deny /dev/** kl, 9 deny /sys/** mkl, 10 deny /proc/** mkl, 11 12 mount -> @{DOCKER_GRAPH_PATH}/**, 13 mount -> /, 14 mount -> /proc/**, 15 mount -> /sys/**, 16 mount -> /run/docker/netns/**, 17 mount -> /.pivot_root[0-9]*/, 18 19 / r, 20 21 umount, 22 pivot_root, 23 {{if ge .MajorVersion 2}}{{if ge .MinorVersion 9}} 24 signal (receive) peer=@{profile_name}, 25 signal (receive) peer=unconfined, 26 signal (send), 27 {{end}}{{end}} 28 network, 29 capability, 30 owner /** rw, 31 @{DOCKER_GRAPH_PATH}/** rwl, 32 @{DOCKER_GRAPH_PATH}/linkgraph.db k, 33 @{DOCKER_GRAPH_PATH}/network/files/boltdb.db k, 34 @{DOCKER_GRAPH_PATH}/network/files/local-kv.db k, 35 @{DOCKER_GRAPH_PATH}/[0-9]*.[0-9]*/linkgraph.db k, 36 37 # For non-root client use: 38 /dev/urandom r, 39 /dev/null rw, 40 /dev/pts/[0-9]* rw, 41 /run/docker.sock rw, 42 /proc/** r, 43 /proc/[0-9]*/attr/exec w, 44 /sys/kernel/mm/hugepages/ r, 45 /etc/localtime r, 46 /etc/ld.so.cache r, 47 /etc/passwd r, 48 49 {{if ge .MajorVersion 2}}{{if ge .MinorVersion 9}} 50 ptrace peer=@{profile_name}, 51 ptrace (read) peer=docker-default, 52 deny ptrace (trace) peer=docker-default, 53 deny ptrace peer=/usr/bin/docker///bin/ps, 54 {{end}}{{end}} 55 56 /usr/lib/** rm, 57 /lib/** rm, 58 59 /usr/bin/docker pix, 60 /sbin/xtables-multi rCx, 61 /sbin/iptables rCx, 62 /sbin/modprobe rCx, 63 /sbin/auplink rCx, 64 /sbin/mke2fs rCx, 65 /sbin/tune2fs rCx, 66 /sbin/blkid rCx, 67 /bin/kmod rCx, 68 /usr/bin/xz rCx, 69 /bin/ps rCx, 70 /bin/cat rCx, 71 /sbin/zfs rCx, 72 /sbin/apparmor_parser rCx, 73 74 {{if ge .MajorVersion 2}}{{if ge .MinorVersion 9}} 75 # Transitions 76 change_profile -> docker-*, 77 change_profile -> unconfined, 78 {{end}}{{end}} 79 80 profile /bin/cat (complain) { 81 /etc/ld.so.cache r, 82 /lib/** rm, 83 /dev/null rw, 84 /proc r, 85 /bin/cat mr, 86 87 # For reading in 'docker stats': 88 /proc/[0-9]*/net/dev r, 89 } 90 profile /bin/ps (complain) { 91 /etc/ld.so.cache r, 92 /etc/localtime r, 93 /etc/passwd r, 94 /etc/nsswitch.conf r, 95 /lib/** rm, 96 /proc/[0-9]*/** r, 97 /dev/null rw, 98 /bin/ps mr, 99 100 {{if ge .MajorVersion 2}}{{if ge .MinorVersion 9}} 101 # We don't need ptrace so we'll deny and ignore the error. 102 deny ptrace (read, trace), 103 {{end}}{{end}} 104 105 # Quiet dac_override denials 106 deny capability dac_override, 107 deny capability dac_read_search, 108 deny capability sys_ptrace, 109 110 /dev/tty r, 111 /proc/stat r, 112 /proc/cpuinfo r, 113 /proc/meminfo r, 114 /proc/uptime r, 115 /sys/devices/system/cpu/online r, 116 /proc/sys/kernel/pid_max r, 117 /proc/ r, 118 /proc/tty/drivers r, 119 } 120 profile /sbin/iptables (complain) { 121 {{if ge .MajorVersion 2}}{{if ge .MinorVersion 9}} 122 signal (receive) peer=/usr/bin/docker, 123 {{end}}{{end}} 124 capability net_admin, 125 } 126 profile /sbin/auplink flags=(attach_disconnected, complain) { 127 {{if ge .MajorVersion 2}}{{if ge .MinorVersion 9}} 128 signal (receive) peer=/usr/bin/docker, 129 {{end}}{{end}} 130 capability sys_admin, 131 capability dac_override, 132 133 @{DOCKER_GRAPH_PATH}/aufs/** rw, 134 @{DOCKER_GRAPH_PATH}/tmp/** rw, 135 # For user namespaces: 136 @{DOCKER_GRAPH_PATH}/[0-9]*.[0-9]*/** rw, 137 138 /sys/fs/aufs/** r, 139 /lib/** rm, 140 /apparmor/.null r, 141 /dev/null rw, 142 /etc/ld.so.cache r, 143 /sbin/auplink rm, 144 /proc/fs/aufs/** rw, 145 /proc/[0-9]*/mounts rw, 146 } 147 profile /sbin/modprobe /bin/kmod (complain) { 148 {{if ge .MajorVersion 2}}{{if ge .MinorVersion 9}} 149 signal (receive) peer=/usr/bin/docker, 150 {{end}}{{end}} 151 capability sys_module, 152 /etc/ld.so.cache r, 153 /lib/** rm, 154 /dev/null rw, 155 /apparmor/.null rw, 156 /sbin/modprobe rm, 157 /bin/kmod rm, 158 /proc/cmdline r, 159 /sys/module/** r, 160 /etc/modprobe.d{/,/**} r, 161 } 162 # xz works via pipes, so we do not need access to the filesystem. 163 profile /usr/bin/xz (complain) { 164 {{if ge .MajorVersion 2}}{{if ge .MinorVersion 9}} 165 signal (receive) peer=/usr/bin/docker, 166 {{end}}{{end}} 167 /etc/ld.so.cache r, 168 /lib/** rm, 169 /usr/bin/xz rm, 170 deny /proc/** rw, 171 deny /sys/** rw, 172 } 173 profile /sbin/xtables-multi (attach_disconnected, complain) { 174 /etc/ld.so.cache r, 175 /lib/** rm, 176 /sbin/xtables-multi rm, 177 /apparmor/.null w, 178 /dev/null rw, 179 180 /proc r, 181 182 capability net_raw, 183 capability net_admin, 184 network raw, 185 } 186 profile /sbin/zfs (attach_disconnected, complain) { 187 file, 188 capability, 189 } 190 profile /sbin/mke2fs (complain) { 191 /sbin/mke2fs rm, 192 193 /lib/** rm, 194 195 /apparmor/.null w, 196 197 /etc/ld.so.cache r, 198 /etc/mke2fs.conf r, 199 /etc/mtab r, 200 201 /dev/dm-* rw, 202 /dev/urandom r, 203 /dev/null rw, 204 205 /proc/swaps r, 206 /proc/[0-9]*/mounts r, 207 } 208 profile /sbin/tune2fs (complain) { 209 /sbin/tune2fs rm, 210 211 /lib/** rm, 212 213 /apparmor/.null w, 214 215 /etc/blkid.conf r, 216 /etc/mtab r, 217 /etc/ld.so.cache r, 218 219 /dev/null rw, 220 /dev/.blkid.tab r, 221 /dev/dm-* rw, 222 223 /proc/swaps r, 224 /proc/[0-9]*/mounts r, 225 } 226 profile /sbin/blkid (complain) { 227 /sbin/blkid rm, 228 229 /lib/** rm, 230 /apparmor/.null w, 231 232 /etc/ld.so.cache r, 233 /etc/blkid.conf r, 234 235 /dev/null rw, 236 /dev/.blkid.tab rl, 237 /dev/.blkid.tab* rwl, 238 /dev/dm-* r, 239 240 /sys/devices/virtual/block/** r, 241 242 capability mknod, 243 244 mount -> @{DOCKER_GRAPH_PATH}/**, 245 } 246 profile /sbin/apparmor_parser (complain) { 247 /sbin/apparmor_parser rm, 248 249 /lib/** rm, 250 251 /etc/ld.so.cache r, 252 /etc/apparmor/** r, 253 /etc/apparmor.d/** r, 254 /etc/apparmor.d/cache/** w, 255 256 /dev/null rw, 257 258 /sys/kernel/security/apparmor/** r, 259 /sys/kernel/security/apparmor/.replace w, 260 261 /proc/[0-9]*/mounts r, 262 /proc/sys/kernel/osrelease r, 263 /proc r, 264 265 capability mac_admin, 266 } 267 }`