保护客户端和集成

edit

您需要更新多个客户端的配置,以便与受保护的Elasticsearch集群一起工作。

Elasticsearch 安全功能使您能够保护您的 Elasticsearch 集群。但 Elasticsearch 本身只是 Elastic Stack 中的一个产品。通常情况下,Elastic Stack 中的其他产品会连接到集群,因此也需要进行安全保护,或者至少以安全的方式与集群进行通信:

HTTP/REST 客户端和安全

edit

Elasticsearch 安全功能与标准的 HTTP 基本认证 头一起工作,用于用户认证。由于 Elasticsearch 是无状态的,因此必须在每个请求中发送此头:

Authorization: Basic <TOKEN> 

The 计算为 base64(USERNAME:PASSWORD)

或者,您可以使用 基于令牌的身份验证服务

客户端示例

edit

此示例使用 curl 创建索引,不使用基本认证:

curl -XPUT 'localhost:9200/idx'
{
  "error":  "AuthenticationException[Missing authentication token]",
  "status": 401
}

由于上述请求没有与用户关联,因此返回了身份验证错误。现在我们将使用curl与基本认证来以rdeniro用户的身份创建一个索引:

curl --user rdeniro:taxidriver -XPUT 'localhost:9200/idx'
{
  "acknowledged": true
}

二次授权

edit

一些API支持次级授权头,用于在您希望任务以不同凭据集运行的情况下。例如,除了基本身份验证头之外,您还可以发送以下头:

es-secondary-authorization: Basic <TOKEN> 

The 计算为 base64(USERNAME:PASSWORD)

The es-secondary-authorization header 与 Authorization header 具有相同的语法。因此,它也支持使用 基于令牌的身份验证服务。例如:

es-secondary-authorization: ApiKey <TOKEN> 

The 计算为 base64(API key ID:API key)

通过HTTP的客户端库

edit

有关在特定语言客户端中使用安全功能的更多信息,请参阅:

ES-Hadoop 与安全

edit

Elasticsearch for Apache Hadoop(“ES-Hadoop”)在访问 Elasticsearch 集群时,能够使用 HTTP 基本认证和 PKI 认证以及/或者 TLS/SSL。有关详细信息,请参阅 ES-Hadoop 文档,特别是 Security 部分。

为了进行身份验证,请为您的ES-Hadoop客户端选择一个用户(为了维护目的,最好创建一个专用用户)。然后,将该用户分配到一个具有Hadoop/Spark/Storm作业所需权限的角色。通过es.net.http.auth.useres.net.http.auth.pass属性配置ES-Hadoop以使用用户名和密码。

如果启用了PKI认证,请通过es.net.ssl.keystore.locationes.net.truststore.location设置相应的keystoretruststore(并使用各自的.pass属性来指定密码)。

为了进行安全传输,通过将es.net.ssl属性设置为true来启用SSL/TLS。根据您的SSL配置(密钥库、信任库等),您可能还需要设置其他参数 - 请参阅ES-Hadoop文档,特别是配置安全章节。

监控与安全

edit

Elastic Stack 监控功能由两个组件组成: 一个代理,您需要在每个 Elasticsearch 和 Logstash 节点上安装,以及 Kibana 中的监控 UI。监控代理收集并索引来自节点的指标,您可以通过 Kibana 中的监控仪表板可视化数据。该代理可以在同一个 Elasticsearch 集群上索引数据,或者将其发送到外部监控集群。

要使用启用了安全功能的监控功能,您需要 设置 Kibana 以使用安全功能 并至少为监控 UI 创建一个用户。如果您使用的是外部监控集群,您还需要为监控代理配置一个用户,并配置代理以在与其监控集群通信时使用适当的凭据。

更多信息,请参阅: