To frame my response, snaps are a form of ‘containerized’ application but are designed specifically to integrate more fully into the system than other container technologies like docker and LXD (or VMs) where the applications look and feel separated from the host. In addition, the sandboxing model is abstracted away for users and developers so that they do not have to perform arcane actions to make applications work. The design of the sandbox necessarily relies on a combination of technologies.
For a distribution to support strict mode snaps, that distribution must have certain properties that come from the kernel and userspace. This includes, but is not limited to, certain kernel configuration being turned on related to apparmor, seccomp, yama, cgroups, namespaces, etc. It also needs userspace components such as the apparmor parser, apparmor boot scripts, a new enough libseccomp, etc. Upon startup, snapd will interrogate the system and make a decision if strict mode snaps are supported or not. It is the combination of these technologies that provide the strict sandbox, so if any are not present, snapd will log a message but still allow snaps to be usable on the system, though without full sandboxing (snapd does not try to hide this: it logs a message and provides a command to show the confinement level (eg, ‘snap debug confinement’ will show ‘strict’ if supported and ‘partial’ or ‘none’ depending on the system characteristics)).
In terms of networking, snapd’s network mediation is currently coarse-grained and as mentioned by others, is provided by the network and network-bind interfaces (as well as a couple others related to managing networking on the system) and the mediation of AF_INET and AF_INET6 is mediated entirely by AppArmor, not seccomp (I’ll also correct others to say that our syscall mediation for the socket syscall uses argument filtering and we can differentiate on AF_INET/AF_INET6, but the default template allows these for historical reasons and the sandbox instead relies on apparmor for this).
AppArmor is the primary sandboxing technology for snaps and is the enabling technology for snaps to integrate comfortably into the system, be isolated from each other and the system, and for snaps to interact with the host and each other in controlled ways. AppArmor is able to mediate many things and most of these mediation points are in the upstream kernel and usable anywhere that has the AppArmor userspace installed. There are two pieces of AppArmor that need special attention by the distribution in order to support strict confinement in snaps: AF_UNIX and networking. An additional patch is needed to the kernel to mediate AF_UNIX and the AppArmor developers are working to upstream this (there is an intersection with LSM stacking that has delayed its progress, but it will happen).
For networking, either the distribution needs to patch their kernel for the ‘network compat’ patch, or the distribution needs to have a new enough upstream kernel with AppArmor’s ‘networkv8’ along with the AppArmor 3 userspace (which is currently in beta but not released yet).
Now, for the specific case of Leap, it does have networkv8 but doesn’t have the AppArmor 3 userspace and it does not carry the ‘network compat’ patch. As a result, full strict confinement is not supported and snaps, by design, are still usable but are able to use the network. If you are interested in helping Leap users with snaps or for having a full-featured AppArmor (Leap utilizes AppArmor for quite a few things besides snaps), I suggest filing a bug with them to request the the AF_UNIX and network compat patches (eventually, Leap will support strict mode naturally since it will pick up the future AppArmor 3 and a new enough kernel).
Lastly, our documentation discussing the benefits of snap sandboxing should have language about ‘supported distributions’ for strict confinement and if this isn’t clear, I would consider that a bug in our documentation. Can you please file a bug at https://launchpad.net/snappy/+filebug so we can take a look and clear up any confusion for other users? Thanks!