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