您现在的位置: 主页 > 嵌入式操作系统 > Linux > Linux多安全策略和动态安全策略框架模块代码分析报告(14)
本文所属标签:
为本文创立个标签吧:

Linux多安全策略和动态安全策略框架模块代码分析报告(14)

来源:net 网络用户发布,如有版权联系网管删除 2018-07-11 

  策略库中各个数据结构之间的关系

  上文分别介绍了策略库及各种策略规则在策略中的表示方法,对于这些数据结构,它们之间的关系如图所示:

  

  安全服务器相关操作

  安全服务器主要由SID/安全上下文的映射和策略逻辑两部分组成,主要用于维护SID与安全上下文的映射关系、维护系统的访问控制策略、为新建客体提供SID、接收客体管理器的安全查询请求等。对于这些操作,Linux中实现如下表所示,这些函数均定义在security/selinux/ss/services.c中。

  函数名称

  函数功能

  selinux_set_mapping()

  计算参数map中客体类别的数量,并将map中字符形式的类别-权限映射转换为数值形式的类别权限映射

  map_class()

  将客体类别在策略中的值转换为内核中相应的类别值

  ummap_class()

  将映射的客体类别值转换为策略中相应的类别值

  map_decision()

  根据客体类别获取相应的访问向量策略

  security_mls_enabled()

  判断是否启用了MLS策略

  constraint_expr_eval()

  计算约束表达式的布尔值

  security_dump_masked_av()

  审计指定的权限

  context_struct_to_string()

  将一个安全上下文字符串写入到动态分配的字符串中,并让参数*scontext指向该字符串,*scontext_len存放该字符串的长度

  security_validate_transition()

  判断指定的源、目的、进程的安全上下文是否满足客体类别的约束表达式,若不满足,则释放相应的安全上下文对应的空间

  security_bounded_transition()

  检查指定的转换是否受到限制,如果newsid受到oldsid的约束,返回0,否则返回错误码

  avd_init()

  初始化访问向量决策

  security_compute_av()

  根据客体类别对(ssid,tsid)计算访问向量决策

  security_get_initial_sid_context()

  将初始化SID转化为相应的上下文字符串

  security_sid_to_context_core()

  将SID关联的安全上下文字符串写入动态分配的字符串中,并让scontext指向该字符串,scontext_len存放该字符串的长度

  string_to_context_struct()

  解析安全上下文字符串,将其转化为相应的context结构

  security_context_to_sid_core()

  获取字符串形式的安全上下文对应的SID,成功时返回0

  security_context_to_sid()

  获取给定的安全上下文对应的SID,该函数只是对security_context_to_sid_core()的简单封装

  security_context_to_sid_default()

  该函数只是简单的封装了security_context_to_sid_core()函数

  compute_sid_handle_invalid_context()

  对于一个无效的安全上下文生成一条审计记录

  filename_compute_type()

  根据文件名转换规则设置指定安全上下文newcontext中的类型

  security_compute_sid()

  根据源SID、目标SID以及目标客体类别生成一个安全上下文,并获取该上下文对应的SID

  security_transition_sid()

  为新的客体创建一个SID,成功时返回0,该函数只是简单的封装了security_compute_sid()函数

  security_member_sid()

  为对实例化对象中选择的成员计算一个SID,该函数只是简单的封装了security_compute_sid()函数

  security_change_sid()

  重新标记客体时计算一个可用的SID,该函数只是简单的封装了security_compute_sid()函数

  clone_sid()

  将SID和其对应的安全上下文插入到SID表中

  convert_context()

  将安全上下文c中的值由p->oldp指定的值转化为p->newp指定的值,并基于新策略确定安全上下文的有效性。

  security_policydb_len()

  获取策略库的长度

  security_load_policy()

  加载一套新的安全策略,并使其生效,然后刷新访问向量缓存,并在必要的情况下转换SID表

  security_genfs_sid()

  为不支持扩展属性、基于转换的、基于进程的文件系统中的文件获取一个SID

  security_fs_use()

  确定如何处理一个文件系统的标记

  security_get_bools()

  获取策略支持的布尔值的数量、名字和值

  security_set_bools()

  设置策略库支持的布尔值,并更新条件策略

  security_get_bool_value()

  用于获取指定布尔值的状态

  security_preserve_bools()

  根据策略库中布尔值的当前值计算条件策略语句

  security_sid_mls_copy()

  根据sid对应的安全上下文中的用户、角色、类型和mls_sid对应的安全上下文中的mls域创建一个新的安全上下文,在确保安全上下文有效的情况下获取对应的SID,并将其存放到new_sid中

  security_get_classes()

  获取策略支持的客体类别的数量及各个类别的值

  security_get_permission()

  获取指定的客体类别支持的权限的数量及相应的权限

  security_policycap_supported()

  检查策略库是否支持指定的能力

  security_read_policy()

  将策略库结构体中的数据写入到二进制策略文件中

  selinux_audit_rule_free()

  释放审计规则占有的存储空间

  selinux_audit_rule_init()

  根据参数field对审计规则进行初始化

  selinux_audit_rule_known()

  检查规则是否包含selinux中的相关域,若包含,返回1

  selinux_audit_rule_audit()

  根据field/op对判断sid对应的安全上下文是否与指定的审计安全上下文匹配,若匹配返回真,反之返回假

  aurule_init()

  该函数为AVC_CALLBACK_RESET事件注册aurule_avc_callback()回调函数,该函数在AVC_CALLBACK_RESET事件发生时将会调用aurule_callback()函数来重新初始化所有可用规则的lsm_rule域

  如表所示,这里只给出了安全服务器的部分操作的实现,并没有给出网络相关的操作。对于这些函数,下一节将会对其中比较重要的部分函数进行介绍。



              查看评论 回复



嵌入式交流网主页 > 嵌入式操作系统 > Linux > Linux多安全策略和动态安全策略框架模块代码分析报告(14)
 安全 策略 上下文

"Linux多安全策略和动态安全策略框架模块代码分析报告(14)"的相关文章

网站地图

围观()