Elasticsearch 群集节点可由不同客户端访问,如:
Sentinel:提取事件数据并在事件可视化仪表板中显示。
在 YARN NodeManager 节点运行的 Spark 作业:对从 Kafka 接收的事件执行批量索引。(针对 SSDM)
Collector Manager:对具有传统储存的 Sentinel 中的事件执行批量索引。
其他外部客户端:执行自定义操作,例如自定义分析。
Sentinel 为 Elasticsearch 提供名为 elasticsearch-security-plugin 的安全插件,该插件可鉴定和授予对 Elasticsearch 的访问权限。
根据客户端的连接方式,插件使用 SAML 令牌或白名单进行验证:
当客户端与请求一同发送 SAML 令牌时,插件针对 Sentinel 鉴定服务器鉴定令牌。鉴定成功后,插件仅允许客户端访问其具备访问权限的的筛选事件。
例如,事件可视化仪表板(客户端)仅显示来自 Elasticsearch、用户角色有权查看的那些事件。
有关角色和权限的相关信息,请参见 Sentinel 管理指南中的创建角色
。
客户端无法发送 SAML 令牌时,插件检查其合法客户端的白名单。验证成功后,插件允许访问所有事件,无需筛选。
客户端不发送有效 SAML 令牌或白名单不允许此客户端时,插件将其认定为非法客户端并拒绝对此客户端的访问。
此部分提供有关安装和配置 Elasticsearch 安全插件的信息:
必须在 Elasticsearch 群集的每个节点以及 Sentinel 中所包含的 Elasticsearch 节点中安装 Elasticsearch 安全插件。
要在 Sentinel 中所包含的 Elasticsearch 节点上安装 Elasticsearch 安全插件:
登录 Sentinel 主仪表板或 SSDM 服务器。
按下列方式设置 JAVA_HOME 环境变量路径:
export JAVA_HOME=/<Sentinel_installation_path>/opt/novell/sentinel/jdk/
安装插件:
在 Linux 中,以运行 Elasticsearch 的用户身份登录,并运行下列命令:
<sentinel_installation_path>/opt/novell/sentinel/3rdparty/elasticsearch/bin/elasticsearch-plugin install file://localhost/<Sentinel_installation_path>/etc/opt/novell/sentinel/scalablestore/elasticsearch-security-plugin*.zip --verbose
提示继续安装时,输入 y。
(有条件)如果 Elasticsearch 不在侦听默认 HTTP 端口 (9200),则必须在 <Sentinel_installation_path>/opt/novell/sentinel/3rdparty/elasticsearch/plugins/elasticsearch-security-plugin/elasticsearch-ip-whitelist.txt 文件中的每个条目中更新 Elasticsearch 端口号。
有关详细信息,请参见通过使用白名单提供对 Elasticsearch 客户端的访问权限。
使用下列命令在 Sentinel 中重启动索引服务:
rcsentinel stopSIdb rcsentinel startSIdb
要在外部 Elasticsearch 节点安装 Elasticsearch 安全插件:
在 Elasticsearch 群集的每个节点执行下列步骤:
登录 Sentinel 主仪表板或 SSDM 服务器。
将 <Sentinel_installation_path>/etc/opt/novell/sentinel/scalablestore/elasticsearch-security-plugin*.zip 文件复制到 Elasticsearch 群集每个节点的临时位置。
安装插件:
在 Linux 中,以运行 Elasticsearch 的用户身份登录,并运行下列命令:
<elasticsearch_install_directory>/bin/elasticsearch-plugin install file://localhost/<full path of elasticsearch-security-plugin*.zip file> --verbose
提示继续安装时,输入 y。
(有条件)如果 Elasticsearch 不在侦听默认 HTTP 端口 (9200),则必须在 <elasticsearch_install_directory>/plugins/elasticsearch-security-plugin/elasticsearch-ip-whitelist.txt 文件中的每个条目中更新 Elasticsearch 端口号。
有关详细信息,请参见通过使用白名单提供对 Elasticsearch 客户端的访问权限。
重启动 Elasticsearch。
默认情况下,受信客户端如 SSDM 服务器(针对事件可视化仪表板)、YARN NodeManager、Sentinel 服务器(针对事件可视化仪表板)以及 RCM 拥有 Elasticsearch 的访问权限。如果想要使用其他 Elasticsearch 客户端,必须通过使用 SAML 令牌或白名单提供这些其他客户端的安全访问权限。
如果使用 REST 客户端访问 Elasticsearch,可以按下列方式在请求标题中包含一个 SAML 令牌:
从 Sentinel 鉴定服务器获取 SAML 令牌。有关更多信息,请参见 Sentinel 中提供的 REST API 文档。
单击帮助 > API > 教程 > API 安全性 > 获取 SAML 令牌(登录)。
在后续 REST 请求中使用 SAML 令牌:在 REST 客户端所作的每个请求的授权标题中包含 SAML 令牌。将标题名称指定为 Authorization,标题值指定为步骤 1 中所获得的 <SAML 令牌>。
默认情况下,Sentinel 用受信 Elasticsearch 客户端,如 SSDM 服务器(针对事件可视化仪表板)、YARN NodeManager、Sentinel 服务器(针对事件可视化仪表板)以及 RCM 的 IP 地址自动填充白名单。Elasticsearch 安全插件为白名单中所列的所有客户端授予对 Elasticsearch 的访问权限。
要为不发送有效 Sentinel 令牌的其他客户端提供访问权限,则必须以 IP address:port 的格式将客户端的 IP 地址和 Elasticsearch 服务器的 HTTP 端口号添加到白名单中。您必须确保添加到白名单的外部客户端合法且可信,以阻止任意未授权的访问。
要更新白名单:
以运行 Elasticsearch 的用户身份登录 Sentinel 服务器或 Elasticsearch 节点。
在下列文件中添加条目 <Elasticsearch_Client_IP>:<Target_Elasticsearch_HTTP_Port>:
Sentinel 所包含的 Elasticsearch 节点的 <Sentinel_installation_path>/opt/novell/sentinel/3rdparty/elasticsearch/plugins/elasticsearch-security-plugin//elasticsearch-ip-whitelist.txt。
外部 Elasticsearch 节点的 <elasticsearch_install_directory>/plugins/elasticsearch-security-plugin/elasticsearch-ip-whitelist.txt
如果有多个条目,在新行中添加每个条目并保存文件。
在 Elasticsearch 群集的每个节点重复上述步骤。
如果修改可缩放储存组件的 IP 地址/主机名和端口号或 Elasticsearch 版本和端口号,则必须相应更新 Elasticsearch 插件配置文件。
在 Elasticsearch 群集的每个节点执行下列步骤:
以运行 Elasticsearch 的用户身份登录 Elasticsearch 节点。
(有条件)如果修改 YARN NodeManager IP 地址、SSDM 或 Sentinel 服务器 IP 地址、RCM IP 地址或 Elasticsearch 端口号,则相应更新白名单以确保 Elasticsearch 安全插件授予对 Elasticsearch 客户端的访问权限。
如果在 HA 模式中配置 SSDM 或 Sentinel,为 HA 群集的每个活动节点和被动节点的物理 IP 地址添加条目。
如果修改 HA 群集任意节点的物理 IP 地址或向 HA 群集添加新节点,请用修改或新添加节点的物理 IP 地址更新白名单。
有关详细信息,请参见通过使用白名单提供对 Elasticsearch 客户端的访问权限。
(有条件)如果修改 SSDM IP 地址、Sentinel 服务器 IP 地址或 Web 服务器端口号,更新下列文件中的 authServer.host 和 authServer.port 属性并重启动 Elasticsearch:
Sentinel 所包含的 Elasticsearch 节点的 <sentinel_installation_path>/opt/novell/sentinel/3rdparty/elasticsearch/plugins/elasticsearch-security-plugin/plugin-configuration.properties。
外部 Elasticsearch 节点的 <elasticsearch_install_directory>/plugins/elasticsearch-security-plugin/plugin-configuration.properties。
如果在 HA 模式中配置 SSDM 或 Sentinel,将 authServer.host 属性设置为 HA 群集的虚拟 IP 地址。
如果修改 HA 群集的虚拟 IP 地址,将 authServer.host 属性更新为修改的虚拟 IP 地址。
(有条件)如果已将 Elasticsearch 升级为更新的版本,在下列文件中更新 elasticsearch.version 属性并重启动 Elasticsearch:
Sentinel 所包含的 Elasticsearch 节点的 /opt/novell/sentinel/3rdparty/elasticsearch/plugins/elasticsearch-security-plugin/plugin-descriptor.properties。
外部 Elasticsearch 节点的 <elasticsearch_install_directory>/plugins/elasticsearch-security-plugin/plugin-descriptor.properties。