landlock: Add ruleset and domain management
authorMickaël Salaün <mic@linux.microsoft.com>
Thu, 22 Apr 2021 15:41:12 +0000 (17:41 +0200)
committerJames Morris <jamorris@linux.microsoft.com>
Thu, 22 Apr 2021 19:22:10 +0000 (12:22 -0700)
commitae271c1b14de343b888e77f74f640e3dcbdeb4c9
tree2757621bfb42118d62da6154bfc3adcb9702c87e
parent90945448e9830aa1b39d7acaa4e0724a001e2ff8
landlock: Add ruleset and domain management

A Landlock ruleset is mainly a red-black tree with Landlock rules as
nodes.  This enables quick update and lookup to match a requested
access, e.g. to a file.  A ruleset is usable through a dedicated file
descriptor (cf. following commit implementing syscalls) which enables a
process to create and populate a ruleset with new rules.

A domain is a ruleset tied to a set of processes.  This group of rules
defines the security policy enforced on these processes and their future
children.  A domain can transition to a new domain which is the
intersection of all its constraints and those of a ruleset provided by
the current process.  This modification only impact the current process.
This means that a process can only gain more constraints (i.e. lose
accesses) over time.

Cc: James Morris <jmorris@namei.org>
Signed-off-by: Mickaël Salaün <mic@linux.microsoft.com>
Acked-by: Serge Hallyn <serge@hallyn.com>
Reviewed-by: Kees Cook <keescook@chromium.org>
Reviewed-by: Jann Horn <jannh@google.com>
Link: https://lore.kernel.org/r/20210422154123.13086-3-mic@digikod.net
Signed-off-by: James Morris <jamorris@linux.microsoft.com>
security/landlock/Makefile
security/landlock/limits.h [new file with mode: 0644]
security/landlock/ruleset.c [new file with mode: 0644]
security/landlock/ruleset.h [new file with mode: 0644]