3.2.用户空间客体管理器

SELinux体系结构的一个非常强大的特征就是,它不仅能应用到用户空间资源也能应用到内核资源。的确,他来源于对微内核的研究,在微内核中,大多数资源都是被用户空间服务器管理的。在Linux中能够对资源进行强制访问控制的用户空间服务器的例子有X服务和数据库服务。这些服务器都提供强制安全所能提供的抽象资源。这一节提到了两种SELinux体系结构支持的用户空间服务器。

3.2.1 内核对用户空间客体管理器的支持

SELinux对用户空间客体支持的一个简单的方式就是直接通过内核安全服务器,正如下面这个图表展示的:

在这种方法下,用户空间客体管理器和内核客体管理的行为是非常像的。内核安全服务包含整个安全策略,并且用户空间客体管理器一定要咨询内核来获取访问控制决定,两者主要的不同就是用户空间客体管理器不能使用内核的AVC(access vector cache)。每一个服务器都要有他们自己的,分离的AVC来存储他过去从内核请求来的决定。对于用户空间服务器来说,AVC的功能就是被包含在库libselinux中。

另外一个不同就是用户空间客体管理器没有LSM钩子,LSM钩子是内核空间的概念。然而,客体管理器在libselinux中的AVC有内核接口。AVC操纵缓存未命中并且代表客体管理器查询内核。

直白的说,这种支持用户空间客体管理器的方式有一些缺点。首先,为了使用类型强制策略,客体管理器必须要定义能够代表他们资源的客体类。例如,一个数据库服务器一定要定义包含数据库,表格,模式,实体等的客体类。对于内核资源,客体类是复杂的,并且和定义在SELinux的LSM模块头文件的硬编码类相符合。在策略中类定义的关系加上你这些内核编码导致了在用户空间策略和编码上不行的依赖关系。特别的,两个用户空间服务器一定要注意不要是用内核中的同一个客体类。内核没有为这种冲突提供解决办法。

这种方式的第二个缺点就是内核安全服务器为那些不在内核中的客体管理器中的客体类管理策略。这就增长了内核中和内核无关的抽象体的存储开销,并且会影响在AVC未命中的情况下,内核策略验证的开销。

3.2.2 策略服务器架构

为了解决用户空间客体服务器使用使用内核安全服务器的缺点和提高SELinux的安全性,一个正在进行的努力就是为用户空间客体管理器提供用户空间支持。这个项目有两个主要目标和一些第二目标。主要目标是:

  • 1:通过提供一个用户空间安全服务器来为用户空间客体管理器提供更好的支持,该安全服务器为用户的策略部分做出访问决定。
  • 2:通过构建一个策略管理服务器来为策略提供细粒度的访问控制,该策略管理服务器是一个用户空间客体管理器,他的客体类代表着策略部分。

全体上,这两个服务器和策略服务器是相关的。下面的这个图显示了策略服务器的架构。

在策略服务器架构中,整个系统策略的所有的操作和管理都是通过策略管理服务器(PMS)控制的。PMS是一个用户空间客体管理器,在PMS中,他创建了代表策略资源的客体类,并且对这些资源强制执行了一个更加细粒度的访问控制策略。这种特征为SELinux提供提供了非常重要的安全增强。在此之前,对策略的访问控制是一个要么有要么全无的议题。你要么可以写策略文件要么完全不能。伴随着PMS,你先在能够允许访问粗略部分并且限制对其他的访问。例如,SELinux策略能够允许用户管理工具添加用户和进行角色分配,但是,不能改变类型强制type规则。更好的是,你可以允许一个数据库服务器来改变和他的客体类和类型相关的TE策略,但不是内核中的那些。在内部,PMS被设计来使用SELinux最新的一个特征,可加载策略模块,这个会在后面的章节中描述。

PMS第二个主要的功能就是分离系统策略到内核和用户部分,并且分别将它们加载到内核安全服务器和用户空间安全服务器(USSS)。以这种方式,内核并不了解规则和客体类,仅仅对用户空间客体管理器具有重大意义。用户空间客体管理器咨询USSS而不是内核。为了策略更新和缓存相关性功能,在不同的用户空间客体管理器中的AVC向USSS注册(并不是内核)。

除了内核对用户空间资源的责任的去除和对策略管理更加细粒度的访问,策略服务器架构有更多优势。因为PMS是一个运行中的服务器,我们可以扩展他的接口来对分布式的策略管理允许远程的网络访问。PMS和USSS被设计来允许运行时客体类注册,打破了存在于内核中的用户空间客体管理器的编码依赖。两种方式的不同被libselinux对当前存在的工作提供向后兼容遮掩起来了。最终,PMS和USSS被设计成单独的服务,在没有另外一个的时候,运行一个或两个都被使用。例如,在一个细粒度策略访问控制是无用的系统中,USSS能够被单独使用来支持其他用户空间客体服务器。

版权声明:您好,转载请留下本人博客的地址,谢谢

时间: 2024-10-28 01:04:30

3.2.用户空间客体管理器的相关文章

Linux调度器 - 用户空间接口

一.前言 Linux调度器神秘而充满诱惑,每个Linux工程师都想深入其内部一探究竟.不过中国有一句古话叫做"相由心生",一个模块精巧的内部逻辑(也就是所谓的"心")其外延就是简洁而优雅的接口(我称之为"相").通过外部接口的定义,其实我们也可以收获百分之六七十的该模块的内部信息.因此,本文主要描述Linux调度器开放给用户空间的接口,希望可以通过用户空间的调度器接口来理解Linux调度器的行为. 二.nice函数 nice函数用来修改调用进程的

[转]SQL Server 2008 如何配置报表管理器

本文转自:https://docs.microsoft.com/zh-cn/previous-versions/sql/sql-server-2008/cc281384%28v%3dsql.100%29 如何配置报表管理器 报表管理器是一种用于查看报表.管理报表服务器内容以及向用户授予本机模式报表服务器访问权限的 Web 前端应用程序.如果在安装程序中选择**“以默认的本机模式配置安装”**选项,则可以将报表管理器与报表服务器 Web 服务一起安装在同一个报表服务器实例中,并有选择地进行配置.还

Linux命令-----用户和用户组管理

# ac  //查看系统总的连接时间 # ac -d  //按天对连接进行汇总 # ac -p  //列出所有用户的连接时间 # cat /etc/shadow  //查看/etc/shadow文件 # chage  //改变用户变更密码的期限,要求用户必须在几天之内变更密码 # chage -l ow2003  //查看ow2003用户密码的有效期 # chfn  //用来改变一个用户的完整用户名和其他信息 # chpasswd  //一次性更新一组现有用户的密码 # chroot /tmp/

linux内存管理-内核用户空间 【转】

转自:http://blog.chinaunix.net/uid-25909619-id-4491362.html 1,linux内存管理中几个重要的结构体和数组 page unsigned long flags 一组标志,也对页框所在的管理区进行编号 atomic_t _count 该页被引用的次数 atomic_t _mapcount 页框中页表项数目,如果没有则为-1 struct list_head lru 管理page忙碌/空闲链表(inactive_list/active_list)

删除合并快照时因磁盘空间不够导致快照管理器看不到快照无法完成的解决方法

VMWare Workstation合并快照时因磁盘空间不够导致快照管理器看不到快照无法完成的解决方法 ?Lander Zhang 专注外企按需IT基础架构运维服务,IT Helpdesk 实战培训践行者博客:https://blog.51cto.com/lander IT Helpdesk实战培训视频课程:https://edu.51cto.com/lecturer/733218.html 为什么要创建及删除合并快照? 搭建试验测试环境时,为了减少搭建时产生的未知错误导致已经完成的部分前功尽弃

Linux内存管理--用户空间和内核空间【转】

本文转载自:http://blog.csdn.net/yusiguyuan/article/details/12045255 关于虚拟内存有三点需要注意: 4G的进程地址空间被人为的分为两个部分--用户空间与内核空间.用户空间从0到3G(0xc0000000),内核空间占据3G到4G.用户进程通常情况下只能访问用户空间的虚拟地址,不能访问内核空间的虚拟地址.例外情况只有用户进程进行系统调用(代表用户进程在内核态执行)等时刻可以访问到内核空间. 用户空间对应进程,所以每当进程切换,用户空间就会跟着

mount挂载,dd 工具,配置配额系统,RAID阵列,逻辑卷管理器LVM

mount mount挂载 vim /etc/fstab 将常用的挂载的设备写入系统表中 文件挂载配置文件 /etc/fstab /etc/fstab每行定义一个要挂载的文件系统: 要挂载的设备或伪文件系统 挂载点 文件系统类型 挂载选项 转储频率 自检次序 要挂载的设备或伪文件系统: 设备文件.LABEL(LABEL="").UUID(UUID="").伪文件系统名称(proc, sysfs) 挂载选项:defaults 转储频率:0:不做备份 每天转储 每隔一天

1.Cocos2d-x-3.2编写3d打飞机,粒子管理器代码

 Cocos2d-x中的一个单例效果: #ifndef __Moon3d__ParticleManager__ #define __Moon3d__ParticleManager__ #include "cocos2d.h" USING_NS_CC; class ParticleManager { public: static ParticleManager* getInstance()//定义获取实例方法,单例设计模式.see notes { if ( m_pInstance =

Java之GUI编程(二)——布局管理器

在上篇博客Java之GUI编程(一)中我已经对GUI编程的组件和事件做了简单介绍了,现在来看看另外一部分关于组件在各个平台是如何做到仍能保持自己合理的位置大小以及外观的. 已经说了Java是跨平台运行的,但是不同的平台对于点及坐标的定义不完全相同.而且屏幕的解析度分辨率不同也会造成位置的变化,为了确保每个组件的相对位置和大小以及外观,java就设计了布局管理器. 布局管理器是对容器中的元素进行管理,按照一定的规则排放容器里面的元素.它控制了组件的摆放. 布局管理器分类: FlowLayout:浮