[refpolicy] [PATCH 1/3] Introduce vde domain
Christopher J. PeBenito
cpebenito at tresys.com
Tue Nov 8 09:01:38 CST 2011
On 10/23/11 10:08, Sven Vermeulen wrote:
>
> VDE, or Virtual Distributed Ethernet, is a process that simulates a
> hub/switch within a virtual network. It can be used to provide both
> simple and complex network environments within a virtual scope.
>
> We introduce the vde_t domain (and related types) here, and will later
> patch qemu to (optionally) use VDE
>
> Signed-off-by: Sven Vermeulen <sven.vermeulen at siphos.be>
> ---
> vde.fc | 21 ++++++++++++++++++++
> vde.if | 65 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
> vde.te | 60 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
> 3 files changed, 146 insertions(+), 0 deletions(-)
> create mode 100644 vde.fc
> create mode 100644 vde.if
> create mode 100644 vde.te
>
> diff --git a/vde.if b/vde.if
> new file mode 100644
> index 0000000..987a8c2
> --- /dev/null
> +++ b/vde.if
> @@ -0,0 +1,65 @@
> +## <summary>Virtual Distributed Ethernet switch service</summary>
> +
> +########################################
> +## <summary>
> +## The rules needed to manage the VDE switches
> +## </summary>
> +## <param name="role">
> +## <summary>
> +## The role to be allowed to manage the vde domain.
> +## </summary>
> +## </param>
> +## <param name="domain">
> +## <summary>
> +## Domain allowed access.
> +## </summary>
> +## </param>
> +## <rolecap/>
> +#
> +interface(`vde_role',`
> + gen_require(`
> + type vde_t, vde_tmp_t;
> + type vde_conf_t, vde_var_run_t;
> + type vde_initrc_exec_t, vde_exec_t;
> + ')
> +
> + role $1 types vde_t;
> +
> + allow $2 vde_t:process { ptrace signal_perms };
> + allow vde_t $2:process { sigchld signull };
> + allow vde_t $2:fd use;
> + allow vde_t $2:tun_socket { relabelfrom };
> + allow vde_t self:tun_socket { relabelfrom relabelto };
> + ps_process_pattern($2, vde_t)
> +
> + domain_auto_trans($2, vde_exec_t, vde_t)
> +')
> +
> +########################################
> +## <summary>
> +## Allow communication with the VDE service
> +## </summary>
> +## <param name="domain">
> +## <summary>
> +## Domain allowed access.
> +## </summary>
> +## </param>
> +## <rolecap/>
> +#
> +interface(`vde_connect',`
> + gen_require(`
> + type vde_t, vde_var_run_t, vde_tmp_t;
> + ')
> +
> + allow $1 vde_var_run_t:sock_file write_sock_file_perms;
> + allow $1 vde_t:unix_stream_socket { connectto };
> + allow $1 vde_t:unix_dgram_socket { sendto };
> + allow vde_t $1:unix_dgram_socket { sendto };
> +
> + allow $1 vde_tmp_t:sock_file manage_sock_file_perms;
> + files_tmp_filetrans($1, vde_tmp_t, sock_file)
> +
> + tunable_policy(`gentoo_try_dontaudit',`
> + dontaudit $1 vde_var_run_t:sock_file { setattr };
> + ')
Remember to remove these testing rules. Its also unnecessary to have the braces for single permissions.
> +')
> diff --git a/vde.te b/vde.te
> new file mode 100644
> index 0000000..af00640
> --- /dev/null
> +++ b/vde.te
> @@ -0,0 +1,60 @@
> +policy_module(vde, 0.0.1)
> +
> +########################################
> +#
> +# Declarations
> +#
> +
> +type vde_t;
> +type vde_exec_t;
> +init_daemon_domain(vde_t, vde_exec_t)
> +
> +type vde_initrc_exec_t;
> +init_script_file(vde_initrc_exec_t)
> +
> +type vde_conf_t;
> +files_type(vde_conf_t);
> +
> +type vde_var_lib_t;
> +files_type(vde_var_lib_t)
> +
> +type vde_var_run_t;
> +files_pid_file(vde_var_run_t)
> +
> +type vde_tmp_t;
> +files_tmp_file(vde_tmp_t)
> +
> +########################################
> +#
> +# Local policy
> +#
> +
> +allow vde_t self:process { signal_perms getcap setcap };
> +allow vde_t self:capability { chown net_admin dac_override fowner fsetid };
> +allow vde_t self:unix_stream_socket { create_stream_socket_perms connectto };
> +allow vde_t self:unix_dgram_socket create_socket_perms;
> +allow vde_t vde_conf_t:dir list_dir_perms;
> +allow vde_t vde_tmp_t:sock_file manage_sock_file_perms;
Please move these down with the other rules.
> +
> +manage_dirs_pattern(vde_t, vde_var_run_t, vde_var_run_t)
> +manage_files_pattern(vde_t, vde_var_run_t, vde_var_run_t)
> +manage_sock_files_pattern(vde_t, vde_var_run_t, vde_var_run_t)
> +files_pid_filetrans(vde_t, vde_var_run_t, { dir file sock_file unix_dgram_socket })
> +
> +files_tmp_filetrans(vde_t, vde_tmp_t, sock_file)
> +
> +read_files_pattern(vde_t, vde_conf_t, vde_conf_t)
> +read_lnk_files_pattern(vde_t, vde_conf_t, vde_conf_t)
> +
> +corenet_rw_tun_tap_dev(vde_t)
> +
> +domain_use_interactive_fds(vde_t)
> +
> +files_read_etc_files(vde_t)
I'm not clear why there is a need for vde_conf_t. It appears that it is only ever read, so it seems that etc_t would be fine.
> +logging_send_syslog_msg(vde_t)
> +
> +miscfiles_read_localization(vde_t)
> +
> +userdom_use_user_terminals(vde_t)
> +
--
Chris PeBenito
Tresys Technology, LLC
www.tresys.com | oss.tresys.com
More information about the refpolicy
mailing list