按需授权:如何从 sudo 迁移到 AIX 基于角色的访问控制(Role-Based Access Control)
2010-03-03 00:00:00 来源:WEB开发网过去,UNIX 系统 root 用户拥有最大特权,且该用户是惟一能够在任意安全级别中运行、终止或执行任意程序的人员。当普通用户需要执行特权任务时,他们不可避免地要接收超级用户访问。这会很麻烦,因为当普通用户获得额外特权时,他们也就获得了非法侵入系统的机会。具有特权访问的普通用户有时可能会违反要求并滥用权限。因此,开发了像 sudo 这样的工具来解决这个问题,但是该工具也不是终极解决方案。
在 AIX 6.1 中,IBM 引入了基于角色的访问控制(RBAC),这解决了 sudo 的许多安全和审计问题。在本文中,我们将首先检查 sudo,然后概述如何迁移到 RBAC 来改进组织的管理模型。
什么是 sudo?
在传统的 UNIX 管理员模型中,root 密码由执行管理工作的多个用户共享,且只有 root 用户能够执行特权功能。然而,有些工具,比如 sudo,允许普通用户充当 root 用户或超级用户的角色,并通过配置文件提供访问控制。sudo 对用户进行配置,以使其使用特定的命令组。配置文件通常称为 sudoers 文件。该文件由两个条目组成,分别是别名和 Extended Backus-Naur 格式的用户规范。可使用配置文件 /etc/sudoers 将命令分成一些命令组并将用户分配给命令组。对于普通用户来说,sudo 是实现 root 访问的一种很好的解决方案,不过,它也有一定的局限性。
sudo 的缺陷
sudo 机制缺少对特权的粒度级控制。sudo 命令使用全部 root 用户特权运行,且容易受到恶意侵入。另外,对 sudo 配置文件的管理很费力,因为当管理员或用户离开组织时,需要向另一个用户重新分配管理工作或角色。
例如,有些部门拥有多个管理员,他们执行职能不同的特权工作。这里的主要难题是访问控制。负责数据库相关功能的管理员不允许为其他与数据库操作无关的应用程序修改系统配置。
解决方案
目前,您可以使用 sudo 分离职能。将常用命令组合在一起放到命令别名下面,然后将用户分配给组。当只有少数系统需要管理时,这种解决方法就已足够了。不过,要扩展这种方法来管理上百个系统就有难度了。
RBAC 通过按需授权来增强该功能。RBAC 将用户的独有职能或责任定义为角色,为每个角色提供其所需的最小特权,从而使其完成给定工作或任务。
可以在 RBAC 模型内创建很多角色,每个角色都具有特定功能,可以满足用户的安全策略需要。这有助于按照组织需求提供系统管理策略,而不是在严格的用户组范围之外授予功能强大的 root 密码。
RBAC 框架提供能分配给用户的角色。这些角色可设计为根据组织层次结构和功能而流动(见图 1)。其优点是需要执行一次配置并提供粒度级安全。其他优势包括:
需要知道的访问
将特权 root 操作赋予普通用户的基础设施
对系统操作和最小特权的细粒度控制
广泛使用特权;不需要 setuid/setgid 等程序。
职责与工作相分离
图 1.RBAC 示意图
比较优势
对于基于 sudo 的访问控制,我们将审查两类工作(操作员和监控员),这两类工作通过相应的分组识别。操作员类由所有 1 级系统管理任务组成,其中都是重复性、低风险的工作。监控员类由高级系统管理任务组成,其中包括大部分超级用户工作且几乎等同于“root”。
对于 RBAC 方法,操作员和监控员工作如表 1 所示。用户定义角色使用各自的授权创建,以执行上述任务。
表1.RBAC 方法
操作员角色 | 授权 |
UserAdmin | 用户ID 管理员。 |
FSAdmin | 文件系统管理员。 |
BackupAdmin | 收集文件系统信息以及执行系统备份(/usr/bin/mksysb & /usr/sbin/alt_disk_install)和 TSM 备份(/usr/bin/dsmc)。 |
ProcAdmin | 负责重启进程和子服务(startsrc, stopsrc, kill)。 |
CronAdmin | aix.system.config.cron [/usr/bin/crontab]。 |
ConfigAdmin | 修改、调整、更新相应的配置文件。 |
监控员角色 | 授权 |
操作员 | 以上的所有授权功能。 |
网络管理员 | 网络配置管理 |
安全策略管理员 | 配置安全设置以及相应的操作。 |
系统管理员 | 进行系统级的配置工作。 |
使用 sudo 方法时,操作员和监控员任务之间没有访问帘式(access curtain);所有系统管理员都被授予完全的 sudo 访问。这会导致一个漏洞,即所有系统管理员(不分权限级别)都能损坏系统和进程。
sudo 支持的命令通常按照功能归类。而在使用 AIX 中的 RBAC 时,大多数命令已随适当的 RBAC 授权一同载入。因此,当迁移到 RBAC 时,该任务相对简单。通过分配相关授权,默认情况下不受 RBAC 支持的命令也可得到 RBAC 的支持。
与 sudo 相比,AIX RBAC 还提供了其他功能。容易出问题的方面包括:
配置文件管理。sudo 最大的一个难题是配置文件的管理。sudoers 文件具有特殊的语义,任何错误都可能导致 sudo 功能失常。AIX RBAC 提供一个干净的命令界面来创建角色和授权,并将它们分配给命令。
有效维护配置文件。对配置文件 /etc/sudoers 的管理成为一个很大的难题,特别是当人们频繁加入和/或离开组织时。默认情况下,AIX 对多数需要企业级可管理性的命令提供轻量级目录访问协议(LDAP)支持,同样地,RBAC 数据库和配置命令也受 LDAP 支持。
权限分配。sudo 不支持特权降级。当新进程由 fork 系统调用创建时,fork 会授予该进程与父进程(调用 fork 系统调用的进程)相同的特权。作为一个 setuid 应用程序,sudo 以超级用户 root 的身份运行目标命令,因此,由此命令生成的所有进程都属于 root。
可重用性授权。可重用性授权是 RBAC 模型中的一个安全属性,它允许用户执行特权任务。AIX 6.1 中的 RBAC 模型提供预定义的系统授权,该授权已嵌入到操作系统中。可重用授权提供了一种结构化方法,可捕获公认为最佳实践的角色。重用性在任务和角色管理方面发挥着很大的作用,因为这有助于优化组织结构。
更好的解决方案
许多这样的特性使 RBAC 成为 AIX 6.1 中备受推崇的特权管理框架。该方法对系统管理提供精细控制。基于对系统和访问需求的适当分析,AIX RBAC 能替代 sudo 这样的工具。这里的难题是正确理解现有系统并在 AIX RBAC 中找到等效功能。AIX RBAC 提供一套丰富的特性,从 sudo 过渡到 RBAC 是可以实现的。
本文示例源代码或素材下载
更多精彩
赞助商链接