blob: e0a1f64d0184a63f5c41a5a07abc4afb53c6b866 [file] [log] [blame]
Billy McFall28cf3b72018-01-15 17:54:52 -05001policy_module(vpp-custom,1.0)
2
3########################################
4#
5# Declarations
6#
7
8gen_require(`
9 type hugetlbfs_t;
10 type svirt_t;
11 type svirt_image_t;
12 type systemd_sysctl_t;
13 class capability sys_admin;
14')
15
16type vpp_t;
17type vpp_exec_t;
18init_daemon_domain(vpp_t, vpp_exec_t)
19
20type vpp_config_rw_t;
21files_config_file(vpp_config_rw_t)
22
23type vpp_lib_t; # if there is vpp_var_lib_t, we don't need vpp_lib_t
24files_type(vpp_lib_t)
25
26type vpp_log_t;
27logging_log_file(vpp_log_t)
28
29type vpp_var_run_t;
30files_type(vpp_var_run_t)
31
32type vpp_unit_file_t;
33systemd_unit_file(vpp_unit_file_t)
34
35type vpp_tmpfs_t;
36files_tmpfs_file(vpp_tmpfs_t)
37
38type vpp_tmp_t;
39files_tmp_file(vpp_tmp_t)
40
41########################################
42#
43# vpp local policy
44#
45
46allow vpp_t self:capability { dac_override ipc_lock setgid sys_rawio net_raw sys_admin }; # too benefolent
47dontaudit vpp_t self:capability2 block_suspend;
48allow vpp_t self:process { execmem execstack setsched signal }; # too benefolent
49allow vpp_t self:packet_socket { bind create setopt ioctl };
50allow vpp_t self:tun_socket { create relabelto relabelfrom };
51allow vpp_t self:udp_socket { create ioctl };
52allow vpp_t self:unix_dgram_socket { connect create ioctl };
53allow vpp_t self:unix_stream_socket { create_stream_socket_perms connectto };
54
55manage_dirs_pattern(vpp_t, vpp_lib_t, vpp_lib_t)
56manage_files_pattern(vpp_t, vpp_lib_t, vpp_lib_t)
57allow vpp_t vpp_lib_t:file execute;
58files_var_lib_filetrans(vpp_t, vpp_lib_t, {file dir})
59
60manage_dirs_pattern(vpp_t, vpp_log_t, vpp_log_t)
61manage_files_pattern(vpp_t, vpp_log_t, vpp_log_t)
62logging_log_filetrans(vpp_t, vpp_log_t, {file dir})
63
64manage_dirs_pattern(vpp_t, vpp_var_run_t, vpp_var_run_t)
65manage_files_pattern(vpp_t, vpp_var_run_t, vpp_var_run_t)
66manage_sock_files_pattern(vpp_t, vpp_var_run_t, vpp_var_run_t)
67allow vpp_t vpp_var_run_t:dir mounton;
68files_pid_filetrans(vpp_t, vpp_var_run_t, { dir sock_file file })
69
70manage_dirs_pattern(vpp_t, vpp_tmp_t, vpp_tmp_t)
71manage_files_pattern(vpp_t, vpp_tmp_t, vpp_tmp_t)
72manage_sock_files_pattern(vpp_t, vpp_tmp_t, vpp_tmp_t)
73allow vpp_t vpp_tmp_t:dir mounton;
74files_tmp_filetrans(vpp_t, vpp_tmp_t, { dir sock_file file })
75
76manage_dirs_pattern(vpp_t, vpp_tmpfs_t, vpp_tmpfs_t)
77manage_files_pattern(vpp_t, vpp_tmpfs_t, vpp_tmpfs_t)
78fs_tmpfs_filetrans(vpp_t, vpp_tmpfs_t, { dir file })
79
80read_files_pattern(vpp_t, vpp_config_rw_t, vpp_config_rw_t)
81
82kernel_read_system_state(vpp_t)
83kernel_read_network_state(vpp_t)
84kernel_dgram_send(vpp_t)
85kernel_request_load_module(vpp_t)
86
87auth_read_passwd(vpp_t)
88
89corenet_rw_tun_tap_dev(vpp_t)
90
91dev_rw_userio_dev(vpp_t)
92dev_rw_sysfs(vpp_t)
93dev_read_cpuid(vpp_t)
94dev_rw_vfio_dev(vpp_t)
95
96domain_obj_id_change_exemption(vpp_t)
97
98fs_manage_hugetlbfs_dirs(vpp_t)
99fs_manage_hugetlbfs_files(vpp_t)
100allow vpp_t hugetlbfs_t:filesystem { getattr mount unmount };
101fs_getattr_tmpfs(vpp_t)
102
103logging_send_syslog_msg(vpp_t)
104
105miscfiles_read_generic_certs(vpp_t)
106
107userdom_list_user_home_content(vpp_t)
108
109optional_policy(`
110 virt_stream_connect_svirt(vpp_t)
111')
112
113optional_policy(`
114 unconfined_attach_tun_iface(vpp_t)
115')
116
117
118########################################
119#
120# svirt local policy for vpp
121#
122
123allow svirt_t vpp_t:unix_stream_socket connectto;
124
125manage_dirs_pattern(svirt_t, vpp_var_run_t, vpp_var_run_t)
126manage_files_pattern(svirt_t, vpp_var_run_t, vpp_var_run_t)
127manage_sock_files_pattern(svirt_t, vpp_var_run_t, vpp_var_run_t)
128
129allow vpp_t svirt_image_t:file { read write };
130
131
132########################################
133#
134# systemd_sysctl_t local policy for vpp
135#
136
137read_files_pattern(systemd_sysctl_t, vpp_config_rw_t, vpp_config_rw_t)
138
139