
## <summary>The open-source application container engine.</summary>

########################################
## <summary>
##	Execute docker in the docker domain.
## </summary>
## <param name="domain">
## <summary>
##	Domain allowed to transition.
## </summary>
## </param>
#
interface(`docker_domtrans',`
	gen_require(`
		type docker_t, docker_exec_t;
	')

	corecmd_search_bin($1)
	domtrans_pattern($1, docker_exec_t, docker_t)
')

########################################
## <summary>
##	Execute docker in the caller domain.
## </summary>
## <param name="domain">
## <summary>
##	Domain allowed to transition.
## </summary>
## </param>
#
interface(`docker_exec',`
	gen_require(`
		type docker_exec_t;
	')

	corecmd_search_bin($1)
	can_exec($1, docker_exec_t)
')

########################################
## <summary>
##	Search docker lib directories.
## </summary>
## <param name="domain">
##	<summary>
##	Domain allowed access.
##	</summary>
## </param>
#
interface(`docker_search_lib',`
	gen_require(`
		type docker_var_lib_t;
	')

	allow $1 docker_var_lib_t:dir search_dir_perms;
	files_search_var_lib($1)
')

########################################
## <summary>
##	Execute docker lib directories.
## </summary>
## <param name="domain">
##	<summary>
##	Domain allowed access.
##	</summary>
## </param>
#
interface(`docker_exec_lib',`
	gen_require(`
		type docker_var_lib_t;
	')

	allow $1 docker_var_lib_t:dir search_dir_perms;
	can_exec($1, docker_var_lib_t)
')

########################################
## <summary>
##	Read docker lib files.
## </summary>
## <param name="domain">
##	<summary>
##	Domain allowed access.
##	</summary>
## </param>
#
interface(`docker_read_lib_files',`
	gen_require(`
		type docker_var_lib_t;
	')

	files_search_var_lib($1)
	read_files_pattern($1, docker_var_lib_t, docker_var_lib_t)
')

########################################
## <summary>
##	Read docker share files.
## </summary>
## <param name="domain">
##	<summary>
##	Domain allowed access.
##	</summary>
## </param>
#
interface(`docker_read_share_files',`
	gen_require(`
		type docker_share_t;
	')

	files_search_var_lib($1)
	read_files_pattern($1, docker_share_t, docker_share_t)
')

########################################
## <summary>
##	Manage docker lib files.
## </summary>
## <param name="domain">
##	<summary>
##	Domain allowed access.
##	</summary>
## </param>
#
interface(`docker_manage_lib_files',`
	gen_require(`
		type docker_var_lib_t;
	')

	files_search_var_lib($1)
	manage_files_pattern($1, docker_var_lib_t, docker_var_lib_t)
	manage_lnk_files_pattern($1, docker_var_lib_t, docker_var_lib_t)
')

########################################
## <summary>
##	Manage docker lib directories.
## </summary>
## <param name="domain">
##	<summary>
##	Domain allowed access.
##	</summary>
## </param>
#
interface(`docker_manage_lib_dirs',`
	gen_require(`
		type docker_var_lib_t;
	')

	files_search_var_lib($1)
	manage_dirs_pattern($1, docker_var_lib_t, docker_var_lib_t)
')

########################################
## <summary>
##	Create objects in a docker var lib directory
##	with an automatic type transition to
##	a specified private type.
## </summary>
## <param name="domain">
##	<summary>
##	Domain allowed access.
##	</summary>
## </param>
## <param name="private_type">
##	<summary>
##	The type of the object to create.
##	</summary>
## </param>
## <param name="object_class">
##	<summary>
##	The class of the object to be created.
##	</summary>
## </param>
## <param name="name" optional="true">
##	<summary>
##	The name of the object being created.
##	</summary>
## </param>
#
interface(`docker_lib_filetrans',`
	gen_require(`
		type docker_var_lib_t;
	')

	filetrans_pattern($1, docker_var_lib_t, $2, $3, $4)
')

########################################
## <summary>
##	Read docker PID files.
## </summary>
## <param name="domain">
##	<summary>
##	Domain allowed access.
##	</summary>
## </param>
#
interface(`docker_read_pid_files',`
	gen_require(`
		type docker_var_run_t;
	')

	files_search_pids($1)
	read_files_pattern($1, docker_var_run_t, docker_var_run_t)
')

########################################
## <summary>
##	Execute docker server in the docker domain.
## </summary>
## <param name="domain">
##	<summary>
##	Domain allowed to transition.
##	</summary>
## </param>
#
interface(`docker_systemctl',`
	gen_require(`
		type docker_t;
		type docker_unit_file_t;
	')

	systemd_exec_systemctl($1)
	init_reload_services($1)
        systemd_read_fifo_file_passwd_run($1)
	allow $1 docker_unit_file_t:file read_file_perms;
	allow $1 docker_unit_file_t:service manage_service_perms;

	ps_process_pattern($1, docker_t)
')

########################################
## <summary>
##	Read and write docker shared memory.
## </summary>
## <param name="domain">
##	<summary>
##	Domain allowed access.
##	</summary>
## </param>
#
interface(`docker_rw_sem',`
	gen_require(`
		type docker_t;
	')

	allow $1 docker_t:sem rw_sem_perms;
')

#######################################
## <summary>
##  Read and write the docker pty type.
## </summary>
## <param name="domain">
##  <summary>
##  Domain allowed access.
##  </summary>
## </param>
#
interface(`docker_use_ptys',`
    gen_require(`
        type docker_devpts_t;
    ')

    allow $1 docker_devpts_t:chr_file rw_term_perms;
')

#######################################
## <summary>
##      Allow domain to create docker content
## </summary>
## <param name="domain">
##      <summary>
##      Domain allowed access.
##      </summary>
## </param>
#
interface(`docker_filetrans_named_content',`

    gen_require(`
        type docker_var_lib_t;
        type docker_share_t;
	type docker_log_t;
	    type docker_var_run_t;
        type docker_home_t;
    ')

    files_pid_filetrans($1, docker_var_run_t, file, "docker.pid")
    files_pid_filetrans($1, docker_var_run_t, sock_file, "docker.sock")
    files_pid_filetrans($1, docker_var_run_t, dir, "docker-client")
    logging_log_filetrans($1, docker_log_t, dir, "lxc")
    files_var_lib_filetrans($1, docker_var_lib_t, dir, "docker")
    filetrans_pattern($1, docker_var_lib_t, docker_share_t, file, "config.env")
    filetrans_pattern($1, docker_var_lib_t, docker_share_t, file, "hosts")
    filetrans_pattern($1, docker_var_lib_t, docker_share_t, file, "hostname")
    filetrans_pattern($1, docker_var_lib_t, docker_share_t, file, "resolv.conf")
    filetrans_pattern($1, docker_var_lib_t, docker_share_t, dir, "init")
    userdom_admin_home_dir_filetrans($1, docker_home_t, dir, ".docker")
')

########################################
## <summary>
##	Connect to docker over a unix stream socket.
## </summary>
## <param name="domain">
##	<summary>
##	Domain allowed access.
##	</summary>
## </param>
#
interface(`docker_stream_connect',`
	gen_require(`
		type docker_t, docker_var_run_t;
	')

	files_search_pids($1)
	stream_connect_pattern($1, docker_var_run_t, docker_var_run_t, docker_t)
')

########################################
## <summary>
##	Connect to SPC containers over a unix stream socket.
## </summary>
## <param name="domain">
##	<summary>
##	Domain allowed access.
##	</summary>
## </param>
#
interface(`docker_spc_stream_connect',`
	gen_require(`
		type spc_t, spc_var_run_t;
	')

	files_search_pids($1)
	files_write_all_pid_sockets($1)
	allow $1 spc_t:unix_stream_socket connectto;
')


########################################
## <summary>
##	All of the rules required to administrate
##	an docker environment
## </summary>
## <param name="domain">
##	<summary>
##	Domain allowed access.
##	</summary>
## </param>
#
interface(`docker_admin',`
	gen_require(`
		type docker_t;
		type docker_var_lib_t, docker_var_run_t;
		type docker_unit_file_t;
		type docker_lock_t;
		type docker_log_t;
		type docker_config_t;
	')

	allow $1 docker_t:process { ptrace signal_perms };
	ps_process_pattern($1, docker_t)

	admin_pattern($1, docker_config_t)

	files_search_var_lib($1)
	admin_pattern($1, docker_var_lib_t)

	files_search_pids($1)
	admin_pattern($1, docker_var_run_t)

	files_search_locks($1)
	admin_pattern($1, docker_lock_t)

	logging_search_logs($1)
	admin_pattern($1, docker_log_t)

	docker_systemctl($1)
	admin_pattern($1, docker_unit_file_t)
	allow $1 docker_unit_file_t:service all_service_perms;

	optional_policy(`
		systemd_passwd_agent_exec($1)
		systemd_read_fifo_file_passwd_run($1)
	')
')

interface(`domain_stub_named_filetrans_domain',`
    gen_require(`
        attribute named_filetrans_domain;
    ')
')

interface(`lvm_stub',`
    gen_require(`
        type lvm_t;
    ')
')
interface(`staff_stub',`
    gen_require(`
        type staff_t;
    ')
')
interface(`virt_stub_lxc',`
	gen_require(`
		type virtd_lxc_t;
	')
')
interface(`virt_stub_svirt_sandbox_domain',`
	gen_require(`
		attribute svirt_sandbox_domain;
	')
')
interface(`virt_stub_svirt_sandbox_file',`
	gen_require(`
		type svirt_sandbox_file_t;
	')
')
interface(`fs_dontaudit_remount_tmpfs',`
	gen_require(`
		type tmpfs_t;
	')

	dontaudit $1 tmpfs_t:filesystem remount;
')
interface(`dev_dontaudit_list_all_dev_nodes',`
	gen_require(`
		type device_t;
	')

	dontaudit $1 device_t:dir list_dir_perms;
')
interface(`kernel_unlabeled_entry_type',`
	gen_require(`
		type unlabeled_t;
	')

	domain_entry_file($1, unlabeled_t)
')
interface(`kernel_unlabeled_domtrans',`
	gen_require(`
		type unlabeled_t;
	')

	read_lnk_files_pattern($1, unlabeled_t, unlabeled_t)
	domain_transition_pattern($1, unlabeled_t, $2)
	type_transition $1 unlabeled_t:process $2;
')
interface(`files_write_all_pid_sockets',`
	gen_require(`
		attribute pidfile;
	')

	allow $1 pidfile:sock_file write_sock_file_perms;
')
interface(`dev_dontaudit_mounton_sysfs',`
	gen_require(`
		type sysfs_t;
	')

	dontaudit $1 sysfs_t:dir mounton;
')
