安全
编辑安全编辑
如果您的集群启用了安全功能,Elasticsearch SQL 会与安全功能集成。在这种情况下,Elasticsearch SQL 支持传输层安全(通过加密消费者和服务器之间的通信)和身份验证(用于访问层)。
SSL/TLS 配置编辑
对于加密传输,需要在 Elasticsearch SQL 中启用 SSL/TLS 支持才能与 Elasticsearch 正确建立通信。这可以通过将 ssl
属性设置为 true
或在 URL 中使用 https
前缀来完成。
根据您的 SSL 配置(证书是否由 CA 签名,证书是全局的还是仅限于一个应用程序),可能需要设置 keystore
和/或 truststore
,即存储凭据的位置 (keystore
- 通常存储私钥和证书) 以及如何验证它们 (truststore
- 通常存储来自第三方(也称为 CA - 证书颁发机构)的证书)。
通常(请注意,您的环境可能会有很大差异),如果 Elasticsearch SQL 的 SSL 设置尚未在 JVM 级别完成,则如果 Elasticsearch SQL 安全需要客户端身份验证(PKI - 公钥基础设施),则需要设置 keystore,如果启用了 SSL,则需要设置 truststore
。
身份验证编辑
Elasticsearch SQL 中的身份验证支持有两种类型
- 用户名/密码
- 通过
user
和password
属性设置。 - PKI/X.509
- 使用 X.509 证书对 Elasticsearch SQL 进行身份验证以连接到 Elasticsearch。为此,您需要将包含私钥和证书的
keystore
设置到相应的用户(在 Elasticsearch 中配置)以及使用 CA 证书签署 Elasticsearch 集群中的 SSL/TLS 证书的truststore
。也就是说,您应该设置密钥来对 Elasticsearch SQL 进行身份验证,并验证它是否正确。为此,您应该设置ssl.keystore.location
和ssl.truststore.location
属性以指示要使用的keystore
和truststore
。建议通过密码来保护这些属性,在这种情况下,需要ssl.keystore.pass
和ssl.truststore.pass
属性。
权限(服务器端)编辑
在服务器上,您需要为用户添加一些权限,以便他们能够运行 SQL。要运行 SQL,用户至少需要 read
和 indices:admin/get
权限,而 API 的某些部分需要 cluster:monitor/main
权限。
您可以通过创建角色并将其分配给用户来添加权限。可以使用 Kibana、API 调用 或 roles.yml
配置文件 来创建角色。使用 Kibana 或角色管理 API 是定义角色的首选方法。基于文件的角色管理在您想要定义不需要更改的角色时很有用。您不能使用角色管理 API 查看或编辑在 roles.yml
中定义的角色。
使用角色管理 API 添加权限编辑
此示例配置了一个角色,该角色可以在 JDBC 中运行 SQL,查询 test
索引
POST /_security/role/cli_or_drivers_minimal { "cluster": ["cluster:monitor/main"], "indices": [ { "names": ["test"], "privileges": ["read", "indices:admin/get"] } ] }
将权限添加到 roles.yml
编辑
此示例配置了一个角色,该角色可以在 JDBC 中运行 SQL,查询 test
和 bort
索引。将以下内容添加到 roles.yml
cli_or_drivers_minimal: cluster: - "cluster:monitor/main" indices: - names: test privileges: [read, "indices:admin/get"] - names: bort privileges: [read, "indices:admin/get"]