oracle数据库的访问控制,数据库角色访问控制

基于角色的访问控制 (Role-based access control, RBAC) 是一种安全功能,用于控制用户对通常仅限于超级用户的任务的访问。通过对进程和用户应用安全属性,RBAC 可以向多个管理员分派超级用户功能。进程权限管理通过特权实现。用户权限管理通过 RBAC 实现

RBAC:超级用户模型的替代方法

在传统 UNIX 系统中,root 用户(也称为超级用户)具有最高权限。以 root 身份运行的程序(即 setuid 程序)可执行所有功能。root 用户可以读取和写入任何文件,运行所有程序,以及向任何进程发送中止信号。实际上,任何可成为超级用户的用户都能够修改站点的防火墙,更改审计迹,读取机密记录以及关闭整个网络。被劫持的 setuid 程序可以在系统上执行任何操作。

与超级用户模型(管理员对系统要么具有全部控制权要么毫无控制权)相比,基于角色的访问控制 (Role-based access control, RBAC) 是一种更为安全的方法。使用 RBAC,可以在更精细的级别上强制执行安全策略。RBAC 采用最小特权的安全原则。最小特权表示用户仅具有执行某项作业所必需的特权。普通用户具有足够特权来使用其应用程序、检查其作业状态、打印文件、创建新文件等。超出普通用户功能以外的功能将分组到各权限配置文件中。如果用户将要执行的作业要求具有某些超级用户功能才能执行,这些用户将承担拥有适当权限配置文件的角色。

RBAC 会将超级用户功能收集到权限配置文件中。这些权限配置文件将指定给称为角色的特殊用户帐户。然后,用户可以承担某个角色,以执行要求具有某些超级用户功能才能执行的作业。预定义的权限配置文件随 Oracle Solaris 软件附带。您可以创建角色并指定相应的配置文件。

权限配置文件可以提供广泛的功能。例如,Primary Administrator(主管理员)权限配置文件等效于超级用户。也可将权限配置文件定义为提供限定功能。例如,Cron Management(计时程序管理)权限配置文件可管理 at 和 cron 作业。创建角色时,您可以决定是创建具有广泛功能的角色,还是创建具有有限功能的角色,或者是同时创建这两种角色。

在 RBAC 模型中,超级用户可创建一种或多种角色。这些角色基于权限配置文件。然后,超级用户会将这些角色指定给可以执行角色任务的可信用户。这些用户使用自己的用户名进行登录。登录之后,用户将承担可以运行限定管理命令和图形用户界面 (graphical user interface, GUI) 工具的角色。

由于可以灵活地设置角色,因此可实现各种安全策略。尽管 Oracle Solaris 附带的角色很少,但是可以轻松地配置三种建议的角色。这些角色基于同名的权限配置文件:Primary Administrator(主管理员)-等效于 root 用户(即超级用户)的功能强大的角色。

root-等效于 root 用户的功能强大的角色。但是,此 root 角色不能登录。一般用户必须先登录,再承担指定的 root 角色。

System Administrator(系统管理员)-可执行与安全性无关的管理任务的角色,其功能相对较弱。此角色可以管理文件系统、邮件以及软件安装,但是不能设置口令。

Operator(操作员)-可执行备份和打印机管理等操作的初级管理员角色。

注 -Media Backup(介质备份)权限配置文件提供对整个根文件系统的访问权限。因此,面向初级管理员设计 Media Backup(介质备份)和 Operator(操作员)权限配置文件时,必须确保用户可信。

并不一定要实现这三种角色。角色是一种满足组织安全性需要的功能。可以为在某些领域(如安全性、联网或防火墙管理)中承担特殊任务的管理员设置角色。另一种策略是创建一个功能强大的管理员角色以及一个高级用户角色。高级用户角色将用于那些获许修复其自己的系统部分的用户。

超级用户模型与 RBAC 模型可以共存。下表汇总了 RBAC 模型中可以存在的各个等级(从超级用户到限定普通用户)。该表包含可以在这两种模型中跟踪的管理操作。有关特权对系统的单独影响的概要信息,请参见表 8-2。

表 8-1 超级用户模型与具有特权的 RBAC 模型系统上的用户功能超级用户模型RBAC 模型

是否可成为具有完全超级用户功能的超级用户是是

是否可使用具有完全用户功能的用户身份登录是是

是否可成为具有有限功能的超级用户否是

是否可使用用户身份登录,有时具有超级用户功能是,仅限 setuid 程序是,使用 setuid 程序和 RBAC

是否可使用具有管理权能的用户身份登录,但是不具有完全超级用户功能否是,使用 RBAC 以及直接指定的特权和授权

是否可使用功能少于普通用户的用户身份登录否是,使用 RBAC 和已删除的特权

是否可跟踪超级用户操作是,通过审计 su 命令是,通过审计配置文件 shell 命令

另外,如果禁用了 root 用户,则审计迹中会出现已经承担 root 角色的用户的名称

Oracle Solaris RBAC 元素和基本概念

Oracle Solaris 中的 RBAC 模型引入了以下元素:授权-一种权限,允许用户或角色执行某一类需要额外权限才能执行的操作。例如,安装过程中的安全策略会为普通用户提供 solaris.device.cdrw 授权。用户可使用此授权来读取和写入 CD-ROM 设备。有关授权的列表,请参见 /etc/security/auth_attr 文件。

特权-可以授予命令、用户、角色或系统的独立权限。特权可以保证进程成功执行。例如,proc_exec 特权允许进程调用 execve()。普通用户具有基本特权。要查看您的基本特权,请运行 ppriv -vl basic 命令。

安全属性-允许进程执行某个操作的属性。在典型的 UNIX 环境中,安全属性允许进程执行原本禁止普通用户执行的操作。例如,setuid 和 setgid 程序具有安全属性。在 RBAC 模型中,一般用户执行的操作可能需要安全属性。除了 setuid 和 setgid 程序之外,授权和特权也是 RBAC 模型中的安全属性。例如,具有 solaris.device.allocate 授权的用户可以分配设备供独占使用。具有 sys_time 特权的进程可以处理系统时间。

特权应用程序-可以通过检查安全属性来覆盖系统控制的应用程序或命令。在典型的 UNIX 环境和 RBAC 模型中,使用 setuid 和 setgid 的程序都是特权应用程序。在 RBAC 模型中,需要有特权或授权才能成功执行的程序也是特权应用程序。有关更多信息,请参见特权应用程序和 RBAC。

权限配置文件-可以指定给角色或用户的管理权能的集合。一个权限配置文件可由授权、具有安全属性的命令以及其他权限配置文件组成。权限配置文件提供了一种便捷的安全属性分组方法。

角色-用于运行特权应用程序的特殊身份。这种特殊身份只能由指定的用户承担。在由角色运行的系统中,超级用户并不是必需的。超级用户功能会分配给不同的角色。例如,在有两种角色的系统中,将由其中的安全角色处理安全任务,而另一个角色负责处理与安全无关的系统管理任务。角色可以进行更细粒度的划分。例如,系统可以包括各种独立的管理角色,分别用于处理加密框架、打印机、系统时间、文件系统和审计。

下图说明了各 RBAC 元素如何协同工作。

图 8-1 Oracle Solaris RBAC 元素关系

c43374c89edf03cc2a4e62c455119f9a.png

在 RBAC 中,角色是指定给用户的。用户承担某种角色时,便可使用此角色的功能。角色从权限配置文件中获取其功能。权限配置文件可以包含授权、直接指定的特权、特权命令以及其他补充权限配置文件。特权命令是指使用安全属性执行的命令。

下图使用 Network Security(网络安全)角色和 Network Security(网络安全)权限配置文件说明了 RBAC 关系。

图 8-2 Oracle Solaris RBAC 元素关系示例

9b8984aa30a350ef5a2540f067696c8c.png

Network Security(网络安全)角色用于管理 IPsec、wifi 和网络链接。该角色指定给了用户 jdoe。jdoe 可以通过切换到该角色然后提供角色口令来承担该角色。

Network Security(网络安全)权限配置文件已指定给 Network Security(网络安全)角色。Network Security(网络安全)权限配置文件包含一些按顺序评估的补充配置文件:Network Wifi Security(网络 Wifi 安全)、Network Link Security(网络链接安全)和 Network IPsec Management(网络 IPsec 管理)。这些补充配置文件用于角色的主要任务。

Network Security(网络安全)权限配置文件有三个直接指定的授权,没有直接指定的特权,还有两个具有安全属性的命令。补充权限配置文件有直接指定的授权,其中两个包含具有安全属性的命令。在 Network Security(网络安全)角色中,jdoe 拥有这些配置文件中的所有指定授权,并可运行这些配置文件中所有具有安全属性的命令。jdoe 可以管理网络安全。

特权升级

Oracle Solaris 为管理员提供了安全性配置的极大灵活性。安装该软件后不允许进行 privilege escalation(特权升级)。当用户或进程获取的管理权限多于本应授予的权限时,才会发生特权升级。从这个意义上说,特权就是某种安全属性,而不仅是特权。

Oracle Solaris 软件提供仅指定给 root 用户的安全属性。在实施了其他安全保护措施的情况下,管理员可以将为 root 用户设计的属性指定给其他帐户,但必须谨慎进行此类指定。

例如,存在 Media Restore(介质恢复)权限配置文件,但它不属于任何其他权限配置文件。因为 Media Restore(介质恢复)配置文件提供对整个根文件系统的访问权限,因此使用它可能是一种特权升级。可以恢复故意更改的文件或替代介质。缺省情况下,只有 root 用户具有此权限配置文件。

有关会影响特权安全属性的升级,请参见防止特权升级。

RBAC 授权

授权是指可以授予角色或用户的独立权限。授权在用户应用程序级别强制执行策略。

尽管可以将授权直接指定给角色或用户,但最佳做法是将授权归到权限配置文件中。然后,将该权限配置文件添加到某个角色中,再将该角色指定给用户。有关示例,请参见图 8-2。

RBAC 兼容的应用程序可以先检查用户的授权,然后再授予其访问该应用程序或应用程序中特定操作的权限。此检查取代了传统的 UNIX 应用程序中对 UID=0 的检查。有关授权的更多信息,请参见以下各节:

授权和特权

特权在内核中强制执行安全策略。授权与特权之间的差别与强制执行安全策略的级别有关。如果没有适当的特权,内核可能会阻止进程执行特权操作。如果没有适当的授权,用户可能无法使用特权应用程序或在特权应用程序内执行与安全相关的操作。有关特权的更全面的介绍,请参见特权(概述)。

特权应用程序和 RBAC

可以覆盖系统控制的应用程序和命令被视为特权应用程序。使用安全属性(如 UID=0)、特权和授权,可以将应用程序成为特权应用程序。

检查 UID 和 GID 的应用程序

检查 root (UID=0) 或其他某个特殊 UID 或 GID 的特权应用程序在 UNIX 环境中已经存在很久。通过权限配置文件机制,可以隔离需要特定 ID 的命令。您不必更改任何人都可访问的命令的 ID,而是可以将具有执行安全属性的命令放置在某个权限配置文件中。这样,拥有此权限配置文件的用户或角色不必成为超级用户便可运行程序。

可以指定实际 ID 或有效 ID。指定有效 ID 优先于指定实际 ID。有效 ID 等效于文件权限位中的 setuid 功能,该 ID 还可以标识 UID 以进行审计。但是,由于某些 shell 脚本和程序需要 root 的实际 UID,因此也可设置实际 UID。例如,pkgadd 命令需要实际 UID 而不是有效 UID。如果使用有效 ID 不足以运行命令,则需要将此 ID 更改为实际 ID。有关过程,请参见如何创建或更改权限配置文件。

检查特权的应用程序

特权应用程序可以检查特权的使用。通过 RBAC 权限配置文件机制,可以为特定命令指定特权。可以将具有执行安全属性的命令单独放在某个权限配置文件中,而无需超级用户功能来使用应用程序或该命令。这样,拥有此权限配置文件的用户或角色便可仅使用成功执行命令所需的特权来运行此命令。

检查特权的命令包括:Kerberos 命令,如 kadmin、kprop 和 kdb5_util

网络命令,如 ifconfig、routeadm 和 snoop

文件和文件系统命令,如 chmod、chgrp 和 mount

控制进程的命令,如 kill、pcred 和 rcapadm

要将具有特权的命令添加到权限配置文件中,请参见如何创建或更改权限配置文件。要确定特定配置文件中用于检查特权的命令,请参见确定已指定给您的特权。

检查授权的应用程序

Oracle Solaris 额外提供了用于检查授权的命令。根据定义,root 用户拥有所有授权。因此,root 用户可以运行任何应用程序。检查授权的应用程序包括:整套 Solaris Management Console 工具

审计管理命令,如 auditconfig 和 auditreduce

打印机管理命令,如 lpadmin 和 lpfilter

与批处理作业相关的命令,如 at、atq、batch 和 crontab

面向设备的命令,如 allocate、deallocate、list_devices 和 cdrw。

RBAC 权限配置文件

权限配置文件是可以指定给角色或用户的系统覆盖值的集合。一个权限配置文件可以包含授权、具有指定安全属性的命令以及其他权限配置文件。权限配置文件信息分放在 prof_attr 和 exec_attr 数据库中。权限配置文件名称和授权在 prof_attr 数据库中。权限配置文件名称和具有指定安全属性的命令在 exec_attr 数据库中。

有关权限配置文件的更多信息,请参见以下各节:

RBAC 角色

角色是一种特殊类型的用户帐户,通过此帐户可运行特权应用程序。角色的创建方式与用户帐户的常规创建方式相同。角色具有起始目录、组指定和口令等。权限配置文件和授权可为角色提供管理权能。角色不能从其他角色或其他用户继承功能。各角色分配有相应的超级用户功能,因此可以实现更为安全的管理。

用户承担某种角色时,此角色的属性将取代所有用户属性。角色信息存储在 passwd、shadow 和 user_attr 数据库中。可以将角色信息添加到 audit_user 数据库中。有关设置角色的详细信息,请参见以下各节:

可以将一种角色指定给多个用户。所有可以承担相同角色的用户都具有同一个角色起始目录,在同一环境中运行,并且可访问相同文件。用户可以通过从命令行运行 su 命令并提供角色名称和口令来承担角色,还可以在 Solaris Management Console 工具中承担角色。

角色不能直接登录。用户需要首先登录,然后承担角色。用户承担一种角色之后,如果不先退出当前角色,将无法承担其他角色。用户退出当前角色之后,才能承担其他角色。

通过将 root 用户更改为承担某种角色,可防止匿名 root 登录,如如何使 root 用户成为角色中所示。如果审计配置文件 shell 命令 pfexec,则审计迹会包含登录用户的实际 UID、用户承担的角色以及该角色执行的操作。要针对角色操作来审计系统或特定用户,请参见如何审计角色。

Oracle Solaris 软件没有附带任何预定义的角色。不过,随软件提供的权限配置文件对应于角色。例如,Primary Administrator(主管理员)权限配置文件可用于创建 Primary Administrator(主管理员)角色。

配置文件 Shell 和 RBAC

角色可以通过 Solaris Management Console 启动器或profile shell(配置文件 shell)来运行特权应用程序。配置文件 shell 是一种特殊的 shell,可以识别权限配置文件中包含的安全属性。当用户运行 su 命令来承担角色时,便会启动配置文件 shell。配置文件 shell 包括 pfsh、pfcsh 和 pfksh。这些 shell 分别对应于 Bourne shell (sh)、C shell (csh) 和 Korn shell (ksh)。

已直接指定有权限配置文件的用户必须调用某个配置文件 shell 才能运行具有安全属性的命令。有关可使用性和安全性的注意事项,请参见直接指定安全属性时的安全注意事项。

可以对所有在配置文件 shell 中执行的命令进行审计。有关更多信息,请参见如何审计角色。

名称服务范围和 RBAC

名称服务范围是了解 RBAC 的一个重要概念。角色的范围可以限定为单个主机。或者,此范围也可以包括由某种名称服务(如 NIS、NIS+ 或 LDAP)提供服务的所有主机。系统的名称服务范围在文件 /etc/nsswitch.conf 中指定。遇到第一个匹配项时,查找便会停止。例如,如果某个权限配置文件存在于两个名称服务范围中,则只会使用第一个名称服务范围中的各项。如果 files 是第一个匹配项,则角色的范围将限定为本地主机。

直接指定安全属性时的安全注意事项

通常,用户通过角色来获取管理权能。授权和特权命令会分组到权限配置文件中。该权限配置文件会包括到某个角色中,再将该角色指定给用户。

还可以直接指定权限配置文件和安全属性:可以将权限配置文件、特权和授权直接指定给用户。

可以将特权和授权直接指定给用户和角色。

但是,直接指定特权的做法并不安全。具有直接指定的特权的用户和角色可能会在每次内核需要该特权时覆盖安全策略。更安全的做法是在权限配置文件中将特权指定为某个命令的安全属性。这样,该特权只可由拥有此权限配置文件的用户用于该命令。

由于授权在用户级别执行,因此,与直接指定特权相比,直接指定授权的危险性会更小。但是,用户可以使用授权来执行高度安全的任务,如指定审计标志。

直接指定给用户的权限配置文件存在的可用性问题要多于安全性问题。权限配置文件中具有安全属性的命令只能在配置文件 shell 中成功执行。用户必须记得打开某个配置文件 shell,然后在该 shell 中键入命令。指定有权限配置文件的角色会自动获得配置文件 shell。因此,命令可在此角色的 shell 中成功执行。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值