The role of Roles

来源:互联网 发布:时尚职业装品牌淘宝 编辑:程序博客网 时间:2024/04/29 06:24

SELinux也提供了可一种基于角色的访问控制(RBAC,Role-based access control)。SELinux的RBAC的特征是建立在TE基础上的。在SELinux中的访问控制在根本上是TE,即类型强制访问策略。角色能够限制一个进程转换后的类型,该类型是在进程安全上下文中基于角色标识符转换的。通过这种方式,一个策略定义者能够创建一个角色,该角色被允许转换成一系列的域类型(假设TE规则允许这种转换),因此来定义角色的限制。同样,使用我们在图表2-5中的密码程序的例子。虽然根据类型强制访问策略规则,密码程序被允许从user_t的域类型转换成新的passwd_t域,joe的角色也一定被允许该转换的发生。为了能够阐述清楚,我们扩展了密码程序的例子。

这里写图片描述

我们已经添加了描述进程的安全上下文的角色部分(user_r)。我们也添加了一个新的规则,role声明:

role user_r type passwd_t

role语句声明了角色标识符,并且将声明的角色和类型联系起来。上一个描述声明了角色user_r(如果它在策略中还没有被声明的话),并且将标识符passwd_t和角色user_r联系起来。该联系意味着passwd_t类型在安全上下文中被允许和角色user_r共存。如果没有这个role声明的话,新的上下文joe:user_r:user_t将不能被创建,并且execve()系统调用也将会失败,即使TE策略允许joe的类型(user_t)所有必要的访问。

一个策略定义者能够定义有约束的角色并且将这些角色和特定的用户联系起来。例如,想象一下,在我们的策略中,我们也创建了一个叫做retricted_user_r角色,在所有方面和user_r是一样的,除了他没有和passwd_t类型相联系。因此,如果joe的角色是restricted_user_r而不是user_r,joe将不能运行密码程序
即使TE规则允许该域标识的访问。

在第六章中,”角色和用户”详细的讨论了在SELinux中角色的意义,特别指出了角色是如何被创建的,并且又是如何和用户相联系的。

0 0
原创粉丝点击