介绍
本文档描述了Nagios Core CGI如何决定谁有权查看监视和配置信息,以及谁可以通过Web界面向Nagios Core守护程序提交命令。
定义
在继续之前,重要的是要了解经过身份验证的用户和经过身份验证的联系人的含义和区别:
- 经过身份验证的用户是指已使用用户名和密码向Web服务器进行身份验证并被授予访问Nagios Core Web界面访问权限的用户。
- 经过身份验证的联系人是经过身份验证的用户,其用户名与联系人定义的简称匹配。
设置经过身份验证的用户
假设您按照快速入门指南中的说明配置了Web服务器,则在访问Nagios Core CGI之前,应该要求您进行身份验证。您还应该拥有一个可以访问CGI的用户帐户(nagiosadmin)。
当您定义更多用于接收主机和服务通知的联系人时,您很可能希望让他们访问Nagios Core Web界面。您可以使用以下命令来添加其他可以向CGI进行身份验证的用户。将<username>替换为要添加的实际用户名。在大多数情况下,用户名应与已定义的联系人的简称匹配。
htpasswd /usr/local/nagios/etc/htpasswd.users <用户名>
在CGI中启用身份验证/授权功能
接下来需要做的是确保将CGI配置为使用身份验证和授权功能来确定用户可以访问哪些信息和/或命令。这是通过将CGI配置文件中的use_authentication变量设置为非零值来完成的。例:
use_authentication = 1
好的,您现在已经完成了在CGI中设置基本身份验证/授权功能的工作。
CGI信息的默认权限
那么,启用身份验证/授权功能后,默认情况下,用户在CGI中具有哪些默认权限?
CGI数据 | 经过身份验证的联系人* | 其他经过身份验证的用户* |
---|---|---|
主机状态信息 | 是 | 没有 |
主机配置信息 | 是 | 没有 |
主机历史 | 是 | 没有 |
主机通知 | 是 | 没有 |
主机命令 | 是 | 没有 |
服务状态信息 | 是 | 没有 |
服务配置信息 | 是 | 没有 |
服务历史 | 是 | 没有 |
服务通知 | 是 | 没有 |
服务命令 | 是 | 没有 |
所有配置信息 | 没有 | 没有 |
系统/过程信息 | 没有 | 没有 |
系统/过程命令 | 没有 | 没有 |
经过身份验证的联系人*被授予针对其联系的每个服务的以下权限(但不授予非联系人的服务的权限)…
- 授权查看服务状态信息
- 授权查看服务配置信息
- 授权查看服务的历史记录和通知
- 授权发布服务命令
对于经过身份验证的联系人*,将为其作为其联系人的每个主机(但对于不是其作为联系人的主机)授予以下权限…
- 授权查看主机状态信息
- 授权查看主机配置信息
- 授权查看主机的历史记录和通知
- 授权发布主机命令
- 授权查看主机上所有服务的状态信息
- 授权查看主机上所有服务的配置信息
- 授权查看主机上所有服务的历史记录和通知信息
- 授权为主机上的所有服务发出命令
重要的是要注意,默认情况下,没有人被授权进行以下操作…
- 通过showlog CGI查看原始日志文件
- 通过扩展信息CGI查看Nagios过程信息
- 通过命令CGI发出Nagios过程命令
- 通过配置CGI查看主机组,联系人,联系人组,时间段和命令定义
毫无疑问,您将要访问此信息,因此,您将需要为自己(以及其他用户)分配其他权限,如下所述。
向CGI信息授予其他权限
您可以通过将经过身份验证的联系人或其他经过身份验证的用户添加到CGI配置文件中的各种授权变量中,来授予其对CGI中其他信息的权限。我意识到,可用选项不允许真正明确特定权限,但是总比没有好。
通过将用户添加到CGI配置文件中的以下变量中,可以向用户授予其他授权…
- authorized_for_system_information
- authorized_for_system_commands
- authorized_for_configuration_information
- authorized_for_all_hosts
- authorized_for_all_host_commands
- authorized_for_all_services
- authorized_for_all_service_commands
CGI授权要求
如果您对访问CGI中各种信息所需的授权感到困惑,请按照此处所述阅读每个CGI的“授权要求”部分。
安全的Web服务器上的身份验证
如果您的Web服务器位于安全域中(即,位于防火墙后面),或者您使用的是SSL,则可以定义可用于访问CGI的默认用户名。这是通过在CGI配置文件中定义default_user_name选项来完成的。通过定义可以访问CGI的默认用户名,您可以允许用户访问CGI,而不必向Web服务器进行身份验证。您可能要使用它来避免使用基本的Web身份验证,因为基本身份验证会通过Internet以明文形式传输密码。
重要说明:除非你正在运行一个安全的Web服务器,并确保每个有权访问CGI的人已经被定义相对应的用户名,否则请勿使用默认的用户名。如果定义此变量,则未通过Web服务器身份验证的任何人都将继承您分配给该用户的所有权限!