blob: 7cc2d55412a7d4dd699ec9c04ebbd869a02ca27a [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
Billy McFall5b826102019-05-16 15:58:58 -040046allow vpp_t self:capability { dac_override ipc_lock setgid sys_rawio net_raw sys_admin net_admin chown }; # too benevolent
Billy McFall28cf3b72018-01-15 17:54:52 -050047dontaudit vpp_t self:capability2 block_suspend;
Victor Nguyen -T (victong2 - OTHERWISE PORTAGE at Cisco)3f8562e2018-02-27 18:20:03 +010048allow vpp_t self:process { execmem execstack setsched signal }; # too benevolent
Billy McFall41decea2019-05-16 09:13:50 -040049allow vpp_t self:packet_socket { bind create setopt ioctl map };
Billy McFall28cf3b72018-01-15 17:54:52 -050050allow 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 };
Billy McFall5b826102019-05-16 15:58:58 -040054allow vpp_t self:netlink_route_socket { bind create nlmsg_write read write getattr setopt };
55allow vpp_t self:netlink_socket { bind create setopt };
Billy McFall28cf3b72018-01-15 17:54:52 -050056
57manage_dirs_pattern(vpp_t, vpp_lib_t, vpp_lib_t)
58manage_files_pattern(vpp_t, vpp_lib_t, vpp_lib_t)
59allow vpp_t vpp_lib_t:file execute;
60files_var_lib_filetrans(vpp_t, vpp_lib_t, {file dir})
61
62manage_dirs_pattern(vpp_t, vpp_log_t, vpp_log_t)
63manage_files_pattern(vpp_t, vpp_log_t, vpp_log_t)
64logging_log_filetrans(vpp_t, vpp_log_t, {file dir})
65
66manage_dirs_pattern(vpp_t, vpp_var_run_t, vpp_var_run_t)
67manage_files_pattern(vpp_t, vpp_var_run_t, vpp_var_run_t)
68manage_sock_files_pattern(vpp_t, vpp_var_run_t, vpp_var_run_t)
69allow vpp_t vpp_var_run_t:dir mounton;
70files_pid_filetrans(vpp_t, vpp_var_run_t, { dir sock_file file })
71
72manage_dirs_pattern(vpp_t, vpp_tmp_t, vpp_tmp_t)
73manage_files_pattern(vpp_t, vpp_tmp_t, vpp_tmp_t)
74manage_sock_files_pattern(vpp_t, vpp_tmp_t, vpp_tmp_t)
75allow vpp_t vpp_tmp_t:dir mounton;
76files_tmp_filetrans(vpp_t, vpp_tmp_t, { dir sock_file file })
77
78manage_dirs_pattern(vpp_t, vpp_tmpfs_t, vpp_tmpfs_t)
79manage_files_pattern(vpp_t, vpp_tmpfs_t, vpp_tmpfs_t)
80fs_tmpfs_filetrans(vpp_t, vpp_tmpfs_t, { dir file })
81
82read_files_pattern(vpp_t, vpp_config_rw_t, vpp_config_rw_t)
83
84kernel_read_system_state(vpp_t)
85kernel_read_network_state(vpp_t)
86kernel_dgram_send(vpp_t)
87kernel_request_load_module(vpp_t)
88
89auth_read_passwd(vpp_t)
90
91corenet_rw_tun_tap_dev(vpp_t)
92
Billy McFall5b826102019-05-16 15:58:58 -040093dev_rw_infiniband_dev(vpp_t)
Billy McFall28cf3b72018-01-15 17:54:52 -050094dev_rw_userio_dev(vpp_t)
95dev_rw_sysfs(vpp_t)
96dev_read_cpuid(vpp_t)
97dev_rw_vfio_dev(vpp_t)
Billy McFall1ac36d72018-03-14 09:34:02 -040098dev_rw_vhost( vpp_t )
Billy McFall41decea2019-05-16 09:13:50 -040099dev_rw_generic_chr_files(vpp_t)
Billy McFall28cf3b72018-01-15 17:54:52 -0500100
101domain_obj_id_change_exemption(vpp_t)
102
103fs_manage_hugetlbfs_dirs(vpp_t)
104fs_manage_hugetlbfs_files(vpp_t)
105allow vpp_t hugetlbfs_t:filesystem { getattr mount unmount };
106fs_getattr_tmpfs(vpp_t)
107
108logging_send_syslog_msg(vpp_t)
109
110miscfiles_read_generic_certs(vpp_t)
111
112userdom_list_user_home_content(vpp_t)
113
114optional_policy(`
115 virt_stream_connect_svirt(vpp_t)
116')
117
118optional_policy(`
119 unconfined_attach_tun_iface(vpp_t)
120')
121
122
123########################################
124#
125# svirt local policy for vpp
126#
127
128allow svirt_t vpp_t:unix_stream_socket connectto;
129
130manage_dirs_pattern(svirt_t, vpp_var_run_t, vpp_var_run_t)
131manage_files_pattern(svirt_t, vpp_var_run_t, vpp_var_run_t)
132manage_sock_files_pattern(svirt_t, vpp_var_run_t, vpp_var_run_t)
133
134allow vpp_t svirt_image_t:file { read write };
135
136
137########################################
138#
139# systemd_sysctl_t local policy for vpp
140#
141
142read_files_pattern(systemd_sysctl_t, vpp_config_rw_t, vpp_config_rw_t)
143
144