mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-12-28 16:56:26 +00:00
lsm: add the lsm_prop data structure
When more than one security module is exporting data to audit and networking sub-systems a single 32 bit integer is no longer sufficient to represent the data. Add a structure to be used instead. The lsm_prop structure definition is intended to keep the LSM specific information private to the individual security modules. The module specific information is included in a new set of header files under include/lsm. Each security module is allowed to define the information included for its use in the lsm_prop. SELinux includes a u32 secid. Smack includes a pointer into its global label list. The conditional compilation based on feature inclusion is contained in the include/lsm files. Cc: apparmor@lists.ubuntu.com Cc: bpf@vger.kernel.org Cc: selinux@vger.kernel.org Cc: linux-security-module@vger.kernel.org Suggested-by: Paul Moore <paul@paul-moore.com> Signed-off-by: Casey Schaufler <casey@schaufler-ca.com> Acked-by: John Johansen <john.johansen@canonical.com> [PM: added include/linux/lsm/ to MAINTAINERS, subj tweak] Signed-off-by: Paul Moore <paul@paul-moore.com>
This commit is contained in:
parent
9852d85ec9
commit
ed870e35db
@ -20846,6 +20846,7 @@ Q: https://patchwork.kernel.org/project/linux-security-module/list
|
||||
B: mailto:linux-security-module@vger.kernel.org
|
||||
P: https://github.com/LinuxSecurityModule/kernel/blob/main/README.md
|
||||
T: git https://git.kernel.org/pub/scm/linux/kernel/git/pcmoore/lsm.git
|
||||
F: include/linux/lsm/
|
||||
F: include/linux/lsm_audit.h
|
||||
F: include/linux/lsm_hook_defs.h
|
||||
F: include/linux/lsm_hooks.h
|
||||
|
17
include/linux/lsm/apparmor.h
Normal file
17
include/linux/lsm/apparmor.h
Normal file
@ -0,0 +1,17 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 */
|
||||
/*
|
||||
* Linux Security Module interface to other subsystems.
|
||||
* AppArmor presents single pointer to an aa_label structure.
|
||||
*/
|
||||
#ifndef __LINUX_LSM_APPARMOR_H
|
||||
#define __LINUX_LSM_APPARMOR_H
|
||||
|
||||
struct aa_label;
|
||||
|
||||
struct lsm_prop_apparmor {
|
||||
#ifdef CONFIG_SECURITY_APPARMOR
|
||||
struct aa_label *label;
|
||||
#endif
|
||||
};
|
||||
|
||||
#endif /* ! __LINUX_LSM_APPARMOR_H */
|
16
include/linux/lsm/bpf.h
Normal file
16
include/linux/lsm/bpf.h
Normal file
@ -0,0 +1,16 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 */
|
||||
/*
|
||||
* Linux Security Module interface to other subsystems.
|
||||
* BPF may present a single u32 value.
|
||||
*/
|
||||
#ifndef __LINUX_LSM_BPF_H
|
||||
#define __LINUX_LSM_BPF_H
|
||||
#include <linux/types.h>
|
||||
|
||||
struct lsm_prop_bpf {
|
||||
#ifdef CONFIG_BPF_LSM
|
||||
u32 secid;
|
||||
#endif
|
||||
};
|
||||
|
||||
#endif /* ! __LINUX_LSM_BPF_H */
|
16
include/linux/lsm/selinux.h
Normal file
16
include/linux/lsm/selinux.h
Normal file
@ -0,0 +1,16 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 */
|
||||
/*
|
||||
* Linux Security Module interface to other subsystems.
|
||||
* SELinux presents a single u32 value which is known as a secid.
|
||||
*/
|
||||
#ifndef __LINUX_LSM_SELINUX_H
|
||||
#define __LINUX_LSM_SELINUX_H
|
||||
#include <linux/types.h>
|
||||
|
||||
struct lsm_prop_selinux {
|
||||
#ifdef CONFIG_SECURITY_SELINUX
|
||||
u32 secid;
|
||||
#endif
|
||||
};
|
||||
|
||||
#endif /* ! __LINUX_LSM_SELINUX_H */
|
17
include/linux/lsm/smack.h
Normal file
17
include/linux/lsm/smack.h
Normal file
@ -0,0 +1,17 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 */
|
||||
/*
|
||||
* Linux Security Module interface to other subsystems.
|
||||
* Smack presents a pointer into the global Smack label list.
|
||||
*/
|
||||
#ifndef __LINUX_LSM_SMACK_H
|
||||
#define __LINUX_LSM_SMACK_H
|
||||
|
||||
struct smack_known;
|
||||
|
||||
struct lsm_prop_smack {
|
||||
#ifdef CONFIG_SECURITY_SMACK
|
||||
struct smack_known *skp;
|
||||
#endif
|
||||
};
|
||||
|
||||
#endif /* ! __LINUX_LSM_SMACK_H */
|
@ -34,6 +34,10 @@
|
||||
#include <linux/sockptr.h>
|
||||
#include <linux/bpf.h>
|
||||
#include <uapi/linux/lsm.h>
|
||||
#include <linux/lsm/selinux.h>
|
||||
#include <linux/lsm/smack.h>
|
||||
#include <linux/lsm/apparmor.h>
|
||||
#include <linux/lsm/bpf.h>
|
||||
|
||||
struct linux_binprm;
|
||||
struct cred;
|
||||
@ -152,6 +156,22 @@ enum lockdown_reason {
|
||||
LOCKDOWN_CONFIDENTIALITY_MAX,
|
||||
};
|
||||
|
||||
/* scaffolding */
|
||||
struct lsm_prop_scaffold {
|
||||
u32 secid;
|
||||
};
|
||||
|
||||
/*
|
||||
* Data exported by the security modules
|
||||
*/
|
||||
struct lsm_prop {
|
||||
struct lsm_prop_selinux selinux;
|
||||
struct lsm_prop_smack smack;
|
||||
struct lsm_prop_apparmor apparmor;
|
||||
struct lsm_prop_bpf bpf;
|
||||
struct lsm_prop_scaffold scaffold;
|
||||
};
|
||||
|
||||
extern const char *const lockdown_reasons[LOCKDOWN_CONFIDENTIALITY_MAX+1];
|
||||
extern u32 lsm_active_cnt;
|
||||
extern const struct lsm_id *lsm_idlist[];
|
||||
|
Loading…
Reference in New Issue
Block a user