Atom feed of this document
  

 基于rootwrap的安全

Rootwrap是允许未授权的用户以root用户来安全的运行计算服务的一些动作的机制。计算服务原来使用sudo来实现此目的,但是这样非常的难以维护,况且还不允许有过滤。所以rootwrap 命令替代了sudo

要使用rootwrap,须为计算命令加上前缀nova-rootwrap。例如:

$ sudo nova-rootwrap /etc/nova/rootwrap.conf 命令

通用的 sudoers 入口使计算用户能够以 root 执行 nova-rootwrapnova-rootwrap 代码寻找其配置文件中的过滤器定义目录,并从中加载命令过滤器。然后,它会检查计算节点的请求是否匹配过滤器之一,如果匹配,(以 root) 执行命令。如果没有过滤器匹配,它会拒绝请求。

[注意]注意

请主意使用 NFS 和属于 root 的文件的问题。NFS 共享必需配置启用 no_root_squash 选项,这是为了使 rootwrap 正常工作。

Rootwrap 是完全由 root 用户控制的。root 用户拥有 sudoers 入口,这个入口允许计算节点以 root 且仅以特定配置文件 (这些文件被 root 所有) 运行一些指定的 rootwrap。nova-rootwrap 命令导入 Python 模块,它需要从一个干净的、系统默认的 PYTHONPATH 导入。被 root 所有的配置文件指向被 root 所有的过滤器定义目录,这些目录包含了被 root 所有的过滤定义文件。这样的链保证了计算节点用户自己不被配置或由 nova-rootwrap 可执行文件使用的模块的控制。

Rootwrap 是通过 rootwrap.conf 文件进行配置的。由于它在安全路径的信任之下,它必需被 root 用户所有并可以被 root 用户编辑。文件的位置在 sudoers 入口和 nova.conf 配置文件中的 rootwrap_config=entry 参数指定。

rootwrap.conf 文件使用一个包含这些小节和参数的 INI 文件格式:

表 4.4. rootwrap.conf 配置选项

配置属性=默认值

(类型) 描述

[DEFAULT]

filters_path=/etc/nova/rootwrap.d,/usr/share/nova/rootwrap

(ListOpt) 逗号分开的目录列表包含了过滤器定义文件。定义了 rootwrap 过滤器保存的地方。在这一行中定义的目录都应该存在,并被 root 用户拥有和对 root 用户可写。

如果 root wrapper 没有正常运作,您可以添加一个解决选项到 nova.conf 配置文件中。这个解决办法重新配置了 root wrapper 的配置来回到以 sudo 执行命令,且这是一个 Kilo 版本的发布特性。

将这个解决办法包括到您的配置文件防止您环境出现可能损害 root wrapper 性能的问题。工具修改影响了 Python Build Reasonableness (PBR),例如,一个影响 root wrapper 性能的已知问题。

要设置此临时修复的话,在配置文件 nova.conf中的[workaround] 一节设置disable_rootwrap

过滤器定义文件包含了 rootwrap 会使用的过滤器来允许或拒绝一个特定的命令。他们一般以 .filters 作为后缀。由于它们是受信任的安全路径,它们需要被 root 用户所有并对 root 用户可写。它们的位置在 rootwrap.conf 文件中指定。

过滤器定义文件使用一个 INI 文件格式,包含 [Filters] 小节和几行内容,每个都使用了一个唯一的参数名称,这些参数名称在您定义的过滤器中应该是不同的:

表 4.5. .filters 配置选项

配置属性=默认值

(类型) 描述

[Filters]

filter_name=kpartx: CommandFilter, /sbin/kpartx, root

(ListOpt) 逗号分开的列表包含了使用的过滤器类,紧跟着过滤器参数 (取决于选定过滤器类的不同)。

Questions? Discuss on ask.openstack.org
Found an error? Report a bug against this page


loading table of contents...