通过配置阿里云Elasticsearch实例的YML参数,您可以设置允许自动创建索引、删除索引指定名称、配置Auditlog索引、开启Watcher以及其他配置。本文介绍如何配置YML参数、CORS访问、reindex白名单、Auditlog和queue大小。
注意事项
2020年10月起,由于阿里云Elasticsearch网络架构调整,导致部分通过reindex方式跨集群迁移数据的场景受到了限制。如果需要使用reindex方式跨集群迁移数据,请参见通过实例私网打通将自建Elasticsearch数据迁移至阿里云中的注意事项进行处理。
对于华北3(张家口)和海外地域,由于网络架构调整时间不确定,因此需要提交工单,联系阿里云Elasticsearch技术支持,校验网络是否可以互通。
修改配置
- 登录阿里云Elasticsearch控制台。
- 在左侧导航栏,单击Elasticsearch实例。
- 进入目标实例。
- 在顶部菜单栏处,选择资源组和地域。
- 在Elasticsearch实例中单击目标实例ID。
在左侧导航栏,选择 。
在ES集群配置页面,单击YML文件配置右侧的修改配置。
在YML文件配置页面,按照以下说明进行配置。
说明如果您需要查看elasticsearch.yml的内容,可登录Kibana控制台,执行
GET _cluster/settings?include_defaults
命令。参数
说明
自动创建索引
当Elasticsearch实例接收到新文档后,如果没有对应索引,是否允许系统自动创建索引。
对应的YML文件的配置项为action.auto_create_index,默认为false。
阿里云Elasticsearch默认不允许自动创建索引,您可以通过以下方式开启:
重要自动创建的索引可能不符合您的预期,建议您评估后再开启。
通过控制台集群配置开启。该操作为YML静态配置,会触发实例重启。
通过动态方式快速开启(不需要重启)。登录Kibana控制台,通过以下命令设置允许自动创建索引:
允许自动创建所有索引
PUT /_cluster/settings { "persistent": { "action": { "auto_create_index": "true" } } }
重要该方式将开放所有索引的自动创建功能,如果您需要禁止,请将
true
改成false
。只允许自动创建部分指定索引,如下示例仅允许自动创建系统索引:
PUT /_cluster/settings { "persistent": { "action": { "auto_create_index": "+.*,-*" } } }
删除索引指定名称
在删除索引时是否需要明确指定索引名称。如果选择删除或关闭时索引名称支持通配符,则可以使用通配符进行批量删除索引。索引删除后不可恢复,请谨慎使用此配置。
对应的YML文件的配置项为action.destructive_requires_name,默认为true。
Auditlog
开启后,系统会记录Elasticsearch实例对应的增、删、改、查等操作产生的审计日志,该日志信息会占用您的磁盘空间,同时也会影响性能,不建议开启,请谨慎使用此配置。更多参数说明,请参见配置Auditlog(审计日志)。
对应的YML文件的配置项为xpack.security.audit.enabled,默认为false。
开启Watcher
开启后,可使用X-Pack的Watcher功能。请注意定时清理.watcher-history*索引,避免占用大量磁盘空间。
对应的YML文件的配置项为xpack.watcher.enabled,默认为false。
其他Configure配置
支持的部分配置项如下(以下配置项,如果没有标识具体适用于哪个Elasticsearch版本,默认兼容Elasticsearch 5.x、6.x和7.x版本):
http.cors.enabled
http.cors.allow-origin
http.cors.max-age
http.cors.allow-methods
http.cors.allow-headers
http.cors.allow-credentials
reindex.remote.whitelist
Elasticsearch 7.x和8.x版本仅支持配置xpack.security.audit.logfile.events.include参数,5.x和6.x版本支持以下参数:
xpack.watcher.enabled
xpack.notification
xpack.security.audit.enabled
xpack.security.audit.index.bulk_size
xpack.security.audit.index.flush_interval
xpack.security.audit.index.rollover
xpack.security.audit.index.events.include
xpack.security.audit.index.events.exclude
xpack.security.audit.index.events.emit_request_body
xpack.security.audit.index.settings.index
LDAP功能
除5.x版本外,其他版本支持:
xpack.security.authc.realms.ldap1
xpack.security.authc.realms.active_directory1
xpack.security.authc.realms.pki1
xpack.security.authc.realms.saml1
xpack.security.authc.realms.kerberos1
xpack.security.authc.token.enabled
thread_pool.bulk.queue_size(适用于5.x及6.x版本)
thread_pool.write.queue_size(适用于6.x、7.x及8.x版本)
thread_pool.search.queue_size
自定义SQL插件配置
xpack.sql.enabled
默认情况下Elasticsearch实例会启用X-Pack自带的SQL插件,如需上传自定义的SQL插件,请将xpack.sql.enabled设置为false。
重要配置YML文件会触发集群滚动重启。如果集群中的索引有副本且集群负载正常(CPU使用率在60%左右,堆内存使用率在50%左右,load_1m低于CPU核数),一般情况下,在重启过程中可持续对外提供服务。重启时长与集群规模、数据量及负载情况等有关系,建议在业务低峰期操作。
如果集群负载过高且索引没有副本,同时业务中存在大量的写入或查询等场景,在集群变更过程中,业务可能会出现偶发的访问超时现象。建议在客户端访问脚本中配置重试机制,以减小对业务的影响。
选中该操作会重启实例,请确认后操作,单击确定。
确定后,Elasticsearch实例会重启。重启过程中,可在任务列表查看进度。重启成功后,即可完成YML文件的配置。
配置CORS访问
通过配置跨域资源共享CORS(Cross-origin resource sharing)访问,设置是否允许其他域资源下的浏览器向阿里云Elasticsearch发送请求。您可以在YML文件配置中,配置CORS访问,支持配置的参数如下。
表格中的参数是阿里云Elasticsearch为支持HTTP协议开放的自定义配置。
表格中的参数仅支持静态配置。如果您想使配置生效,需要将配置信息写入elasticsearch.yml文件中。
表格中的参数依赖于集群网络设定(Network settings)。
参数 | 默认值 | 说明 |
http.cors.enabled | false | 设置是否启用跨域资源访问(Elasticsearch是否允许其他域资源下的浏览器向其发送请求):
|
http.cors.allow-origin | “” | 域资源配置项,可设置接受来自哪些域名的请求。默认不允许接受跨域请求且无配置。支持正则表达式,例如/https?:\/\/localhost(:[0-9]+)?/,表示可响应符合此正则的请求信息。 警告 *是合法配置,表示集群支持来自任意域名的跨域请求,此配置存在安全风险,不建议使用。 |
http.cors.max-age | 1728000(20天) | 浏览器可发送OPTIONS请求以获取CORS配置信息,此配置项可设置获取的信息在浏览器中的缓存时间,单位为秒。 |
http.cors.allow-methods | OPTIONS, HEAD, GET, POST, PUT, DELETE | 请求方法配置项。 |
http.cors.allow-headers | X-Requested-With, Content-Type, Content-Length | 请求头信息配置项。 |
http.cors.allow-credentials | false | 凭证信息配置项目,设置是否允许响应头中返回Access-Control-Allow-Credentials信息:
|
配置reindex白名单
通过当前集群调用reindex API,从远程集群迁移索引数据前,需要先配置reindex白名单。您可以在YML文件配置中,配置reindex白名单,支持配置的参数如下。
参数 | 默认值 | 说明 |
reindex.remote.whitelist | [] | 设置远程Elasticsearch集群的访问地址,将其添加到当前集群的远程访问白名单中。 白名单支持host和port的组合,并使用逗号分隔多个主机配置(例如otherhost:9200,another:9200,127.0.10.**:9200,localhost:**),不识别协议信息。 |
配置reindex白名单时,如果远程Elasticsearch集群为单可用区的阿里云Elasticsearch实例,请使用<阿里云Elasticsearch实例的域名>:9200;如果为多可用区实例,请使用实例中所有数据节点的IP地址与端口的组合。具体示例如下:
单可用区
reindex.remote.whitelist: ["es-cn-09k1rgid9000g****.elasticsearch.aliyuncs.com:9200"]
多可用区
reindex.remote.whitelist: ["10.0.xx.xx:9200","10.0.xx.xx:9200","10.0.xx.xx:9200","10.15.xx.xx:9200","10.15.xx.xx:9200","10.15.xx.xx:9200"]
说明reindex白名单配置完成后,即可调用reindex API重建索引。具体操作,请参见阿里云ES间跨集群reindex。
配置Auditlog(审计日志)
Auditlog为审计日志,默认关闭。查看审计日志前,需要先开启Auditlog。开启后,系统会记录Elasticsearch实例对应的增、删、改、查等操作产生的日志。对于审计日志的开启、配置和查看,阿里云Elasticsearch不同版本实例的操作有所不同,具体如下。
关于Auditlog的更多详细信息,请参见Auditing Security Settings。
7.x及以上版本
进入YML文件配置面板。
具体操作请参见修改配置。
选中Auditlog参数中的开启Auditlog,开启审计日志。
自定义Auditlog配置。
开启Auditlog后,您可以在其他Configure配置中调整xpack.security.audit.logfile.events.include参数的配置,示例如下:
xpack: security: audit: logfile: events: include: >- access_denied,anonymous_access_denied,authentication_failed,connection_denied,tampered_request,run_as_denied,run_as_granted
重要7.x及以上版本实例仅支持配置xpack.security.audit.logfile.events.include参数。
默认Auditlog配置只会在审计日志中打印请求被拒绝或失败的审计日志,如需获取请求成功的审计日志,需要添加access_granted事件。添加后,磁盘将存储所有访问信息,可能会存在磁盘使用率过高的风险,建议您问题排查完后,关闭审计日志功能。
查看审计日志(Auditlog)。
5.x及6.x版本
进入YML文件配置面板。
具体操作请参见YML文件配置。
选中Auditlog参数中的开启Auditlog索引,开启审计日志。
Auditlog索引的默认配置如下,您可以根据具体业务进行调整。
xpack.security.audit.index.bulk_size: 5000 xpack.security.audit.index.events.emit_request_body: false xpack.security.audit.index.events.exclude: run_as_denied,anonymous_access_denied,realm_authentication_failed,access_denied,connection_denied xpack.security.audit.index.events.include: authentication_failed,access_granted,tampered_request,connection_granted,run_as_granted xpack.security.audit.index.flush_interval: 180s xpack.security.audit.index.rollover: hourly xpack.security.audit.index.settings.index.number_of_replicas: 1 xpack.security.audit.index.settings.index.number_of_shards: 10
配置
默认设置
说明
xpack.security.audit.index.bulk_size
1000
当您将多个审计事件分批写入到一个Auditlog索引中时,可通过该参数,设置写入事件的数量。
xpack.security.audit.index.flush_interval
1s
控制缓冲事件刷新到索引的频率。
xpack.security.audit.index.rollover
daily
控制滚动构建到新索引的频率,可以设置为hourly、daily、weekly或monthly。
xpack.security.audit.logfile.events.include
access_denied,anonymous_access_denied,authentication_failed, connection_denied,tampered_request,run_as_denied,run_as_granted
控制何种Auditlog事件可以被采集到审计日志中。目前审计日志功能仅开放部分地域,详情请参见使用限制。完整事件类型列表,请参见Audit event types (7.x)。
xpack.security.audit.index.events.include
access_denied, access_granted, anonymous_access_denied, authentication_failed, connection_denied, tampered_request, run_as_denied, run_as_granted
控制何种Auditlog事件可以被写入到索引中,仅5.x和6.x版本的实例支持。完整事件类型列表,请参见Audit event types (6.x)。
xpack.security.audit.index.events.exclude
null(默认不处理任何事件)
构建索引过程中,排除的Auditlog事件。
xpack.security.audit.index.events.emit_request_body
false
当触发明确的事件类型时(例如authentication_failed),是否忽略或包含以REST发送的请求体。
警告当Auditlog中包含RequestBody信息时,可能会在日志文件中暴露敏感信息。
查看审计日志(Auditlog)。
对于5.x和6.x版本实例,当开启Auditlog后,Auditlog文件将输出到Elasticsearch实例中,并使用.security_audit_log-*开头的索引名称。因此您可以通过在Kibana控制台上查看.security_audit_log-*开头的索引来查看审计日志。
重要Auditlog索引会占用实例的存储空间。由于Elasticsearch不支持自动过期清除策略,因此需要手动清除旧的Auditlog索引。
可选:配置存储Auditlog的索引分片。
对于5.x和6.x版本实例,您可以通过xpack.security.audit.index.settings配置存储Auditlog的索引分片。以下配置构建Auditlog索引的分片和副本均为1。
xpack.security.audit.index.settings: index: number_of_shards: 1 number_of_replicas: 1
说明如果您希望通过传入配置参数生成Auditlog索引,请在开启Auditlog索引(设置xpack.security.audit.enabled为true)的同时传入此配置。否则,Auditlog索引将使用默认的
number_of_shards: 5
、number_of_replicas: 1
配置。
配置queue大小
通过自定义queue大小,调整文档写入和搜索的队列大小。您可以在YML文件配置中,配置queue大小。以下示例配置文档写入和搜索queue大小为500和1000,实际业务中请根据具体情况自行调整。
5.x及6.x版本
thread_pool.bulk.queue_size: 500 thread_pool.search.queue_size: 1000
6.x、7.x及8.x版本
thread_pool.write.queue_size: 500 thread_pool.search.queue_size: 1000
参数 | 默认值 | 说明 |
thread_pool.bulk.queue_size | 200 | 文档写入队列大小,适用于阿里云Elasticsearch 5.x及6.x版本。 |
thread_pool.write.queue_size | 200 | 文档写入队列大小,适用于阿里云Elasticsearch 6.x、7.x及8.x版本。 |
thread_pool.search.queue_size | 1000 | 文档搜索队列大小。 说明 Elasticsearch实例的thread_pool.search.queue_size参数的最大值为1000,调整为1000以上仍取值为1000。 |