免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2241 | 回复: 1
打印 上一主题 下一主题

Domain RBAC 简介 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-01-18 17:02 |只看该作者 |倒序浏览
简介
管理用户和组并控制它们的访问一直都是操作系统中一项关键任务。AIX 提供了一种功能,可通过基于角色的访问控制 (RBAC) 机制将管理角色委托给非 root 用户。借助 RBAC,用户只要拥有部分软硬件组件的管理权限就能够管理这些组件上的任务。但是这种机制有一个局限,即用户以一种角色就能管理所有的相似项。因此,我们在 RBAC 之上引入了域的概念来消除这种局限。AIX 6.1 Tl06 和 AIX 7.1 Tl01 发布版及后续版本均支持 Domain RBAC。
本文涵盖的内容包括:Domain RBAC 概述、通过 Domain RBAC 所引入的组件,以及 Domain RBAC 命令的使用,并以一个简单的示例给出概括性的使用指南。
Domain RBAC 概述
简言之,DOMAIN RBAC 是一种用来限制未经授权用户对资源的访问的机制,或总的来说 DOMAIN RBAC 是为那些具有给定角色的特权和授权用户提供对象隔离。
随着 RBAC 的引入,也带来了将管理权限和责任扩展到非 root 用户的可行性。Domain RBAC 为用户提供了很好的资源访问粒度控制,它要求启用 Enhanced RBAC。Domain RBAC 不能工作于传统的 RBAC 模式。Domain RBAC 在加强的 RBAC 模式下是默认启用的。
Domain RBAC 引入了一些新组件,如下所示。
  • Domain:可定义成 “与系统上的对象和用户相关联的人类可读的安全性标记或名称”。
  • Object:是保存信息的实体。系统上的对象可以是文件、文件系统、卷组、设备等。
  • Subject:是需要访问来自对象信息的实体。代表用户运行的进程通常被称为主题。
  • Property:是决定是否赋予通过某个主题访问某个对象的一个规则集。
    • Alpha rule:对象的域集是主题域集的一个子集。
    • Star property:是对象的一个特殊属性。主题和对象之间要求最少有一个共同的域。
  • Conflict set:是一个域对象属性,能够根据某个实体可能已定义的现有域访问权限来限制对域的访问。
  • Secflag:是一个域对象属性。它可根据对象的属性指定安全性标记。有效值为:
    • FSF_DOM_ANY:它遵循 Star property 的规则。主题和对象之间要求至少有一个共同的域。用户只被允许通过此主题访问对象。
    • FSF_DOM_ALL:它遵循对象的 Alpha rule 属性。主题应该保存所有对象的域集。

域是一种额外的访问控制机制。现有的访问控制机制不会被忽略。比如,域访问控制机制仍会采用 Discretionary Access Controls (DAC) 和 RBAC。因此,只有当 DAC 和 RBAC 均成功并符合由 Domain RBAC 强制执行的控制规则时,才会赋予通过此主题对一个对象进行访问或是用域标记运行进程。下列 图 1 演示了上述所做的讨论。

图 1. Domain RBAC 概述

保护系统上的信息不受未经授权的访问一直都是一个关键任务。可用通过系统上的软件或硬件组件访问信息。信息通常以文件或目录这类对象的形式保存。对象可通过主题访问。
如果用户不具备对某个对象的 DAC 权限,那么只拥有 Domain 特权是不能使该用户通过此主题访问到该对象。它遵循的是上图所示的自下而上的方式。
Domain RBAC 命令
Domain RBAC 引入了四个新命令并使用一些现有的命令来处理系统上的域操作。
命令
描述
mkdom在域数据库内创建一个新域。用户可以用这个 mkdom 命令来指定域属性。它还支持以 -R 选项在 LDAP 数据库上创建域。
lsdom列出存在于域数据库中的域。用户可以使用 -R 选项指定一个远端模块。
chdom更改现有域的属性信息。它还支持通过指定 -R 选项更改远端数据库上的域属性。
rmdom从域数据库删除此域。要在一个远端数据库上进行删除,需指定 -R 选项。
setsecattr添加或修改对象的域属性。新的 -o 选项可处理域对象。
lssecattr列出一个对象的域属性。新的 -o 选项可列出域对象。
rmsecattr从域数据库删除域对象定义。rmsecattr 并不会从系统删除此对象。它只是从域数据库删除域定义。
将域分配给用户。在访问一个域对象时会对用户的域进行评估。可以在域创建期间将其分配给用户,也可以在之后通过使用 mkuserchuser 命令来将域分配给用户。
域数据库
在 /etc/security/domains 文件中定义域。信息在这数据库中被存储为 stanza 格式。
在 /etc/security/domobjs 文件中定义域对象。信息在这数据库中被存储为 stanza 格式。
/usr/sbin/setkst 命令会将域和域对象信息从 /etc/security/domains 和 /etc/security/domobjs 文件下载到内核。每当用户尝试通过主题访问对象时,此内核会在赋予对此对象的访问权限之前先验证这些主题域。如果信息存储于一个远端数据库,则会基于 /etc/nscontrol.conf 文件内的定义将其下载到内核。
示例 1
假设在一台服务器上配置了一个工资单应用程序。该应用程序会在每月末生成一个员工工资日志 (esalary.log) 文件。在默认的情况下,该 payroll 组下的所有用户均拥有访问此日志文件的权限。但是,工资单管理员想要限制对此日志文件的访问。
# ls -l esalary.log
-rw-r--r--    1 payroll        12785 Mar 27 13:49 esalary.log

  • 用 mkdom 命令创建一个域。
    #mkdom HR        
  • 可用 lsdom 命令列出这个域。
    # lsdom HR
    HR id=51            
  • 用 setsecattr 命令将域 HR 分配给该域对象文件 (esalary.log)。
    # setsecattr -o domains=HR objtype=file /payroll/esalary.log
    # lssecattr -o /payroll/esalary.log
    /payroll/esalary.log domains=HR objtype=file        
  • 用 setkst 命令将域和域对象数据库加载到内核。
    # setkst
    Successfully updated the Kernel Authorization Table.
    Successfully updated the Kernel Role Table.
    Successfully updated the Kernel Command Table.
    Successfully updated the Kernel Device Table.
    Successfully updated the Kernel Object Domain Table.
    Successfully updated the Kernel Domains Table.
  • 用户 john 和用户 bob 均属于 payroll 组。在默认的情况下,这两位用户目前均可访问该文件。现在,工资单管理员要限制 bob 的访问权限。
        # lsgroup payroll
    payroll id=202 admin=false users=john,bob registry=files
  • 将用户 john 添加到 HR 域。
    # chuser domains=HR john
    # lsuser -a pgrp domains john
    john pgrp=payroll domains=HR
  • 以用户 john 登录并访问该文件。
    # su - john
    $ cat /payroll/esalary.log
    Note: user able to access this file

当用户 bob 试图访问此文件时,会得到如下的错误消息:
# su - bob
$ cat /payroll/esalary.log
cat: 0652-050 Cannot open /payroll/esalary.log.

示例 2
正如之前所讨论的,域也可以应用到卷组。如下的示例描述了如何将域分配到卷 组。
假设有一个系统,配置了三个卷组(VG1、VG2 和 VG3)。在默认的情况下,系统管理员(root)能够管理所有的这些卷组。可以通过在 RBAC 模式下将 Admin 特权指派给常规用户的方式来管理卷组。有了这个特权,常规用户也可以管理这三个卷组。
然而,若要基于所需资源以粒度的方式限制管理员对逻辑卷的管理,可以将域分配给他们。通过将域分配给卷组和管理员,就可以限制常规用户管理卷组。
在 图 2 中,用户 Admin1、Admin2 和 Admin3 均为逻辑卷管理员,在 RBAC 模式下可管理任其一个逻辑卷组 (vg1、vg2 或 vg3)。但是,通过 Domain RBAC,可将用户 admin1 指定为域标识符 blue,将 admin2 指定为域标识符 red,并将 admin3 指定为域标识符 green 以分别管理域为蓝、红、绿的这三个卷组(vg1、vg2 和 vg3)。

图 2. 通过域管理卷组

如 图2 所示,为系统被配置了三个卷组。
# ls -l /dev/vg1 /dev/vg2 /dev/vg3
crw-rw----    1 root     system       10,  0 May 30 16:41 /dev/vg1
crw-rw----    1 root     system       34,  0 Jun 12 13:28 /dev/vg2
crw-rw----    1 root     system       44,  0 Jun 12 13:28 /dev/vg3

下列的角色为赋予常规用户对这三个卷组的管理权限:
# mkrole authorizations=aix.lvm.manage.create VGrole
# lsrole VGrole
VGrole authorizations=aix.lvm.manage.create rolelist= groups= visibility=1 screens=*
     dfltmsg= msgcat= auth_mode=INVOKER id=11

将 VGrole 角色分配给这些用户:
chuser roles=VGrole Admin1
chuser roles=VGrole Admin2
chuser roles=VGrole Admin3

有了这个角色,Admin1、Admin2 和 Admin3 就能够管理卷组 VG1、VG2 和 VG3。 不过,如果管理员想要限制用户 Admin1、Admin2 和 Admin3 对各卷组的访问,要为这些卷组创建域。
通过将域分配给这些卷组,就可以限制用户对这些资源的访问。
mkdom BLUE;mkdom RED;mkdom GREEN

使用 setsecattr 命令将域分配给卷组。
setsecattr -o domains=BLUE objtype=device /dev/VG1
setsecattr -o domains=RED objtype=device /dev/VG2
setsecattr -o domains=GREEN objtype=device /dev/VG3

对于需要访问相应卷组的用户,可以用 chuser 命令将那些域分配给用户。
chuser domains=BLUE Admin1
chuser domains=RED Admin2
chuser domains=Green Admin3

以 Admin1 用户登录,可在 VG1 卷组下创建逻辑卷。
#mklv -y testlv VG1 12

限制了用户 Admin1 管理卷组 VG2 和 VG3 的权限。同样地,也限制了 Admin2 和 Admin3 用户访问其他卷组的权限。
Domain RBAC LDAP 支持
也可以将这个域数据库配置在 LDAP 服务器上。所有的 LDAP 客户机都可下载这个域数据库并加以使用。自 AIX 6.1 Tl07 和 AIX 7.1 Tl02 发布版开始,就可实现在 LDAP 服务器上配置域数据库。可修改所有的域和 LDAP 命令来支持它。
域的限制
  • Domain RBAC 必须要求系统启用 Enhanced RBAC 模式。
  • Domain RBAC 在系统上最多可创建 1024 个域对象。
  • Domain RBAC 在系统上最多可创建 1024 个域 ID。
结束语
基于角色的访问控制 (RBAC) 为普通用户提供了具有特权管理的访问权限, 而 DOMAIN RBAC 使用户能够进一步使用域对象的特权管理,从而限制其他用户只能访问所需的资源。

关于作者
Uma M. Chandolu 是一名 AIX 上的开发支持专家,拥有 6 年多在 AIX 环境中工作的大量实践经验,擅长 AIX 系统管理和其他子系统。他拥有与客户合作和处理客户关键型情景的经验。他曾是 “IBM developerWorks 投稿作者”。




http://www.ibm.com/developerworks/cn/aix/library/au-introdomainrbac/index.html


论坛徽章:
0
2 [报告]
发表于 2012-07-13 16:26 |只看该作者
好东西
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP