Elasticsearch7.2中文教程翻译(十三): 迁移、恢复ES数据

@高效码农  August 16, 2019

一、恢复集群的安全配置

只有在相同的主版本中创建了以前的子版本时,才能恢复.security索引的快照。每个主要版本的上一个次要版本都可以为其主要版本和下一个版本转换和读取索引的格式。

当您还原安全配置时,您可以选择对所有配置(包括非安全配置)进行完整还原,或者仅还原.security索引的内容。如备份基于索引的安全配置中所述,第二个选项只包含资源类型配置。第一个选项的优点是将集群从过去的时间点恢复到明确定义的状态。第二个选项只涉及安全配置资源,但不能完全恢复安全特性。

要从备份中恢复安全性配置,首先要确保安装了包含.security快照的存储库:

curl -X GET "localhost:9200/_snapshot/my_backup?pretty"
curl -X GET "localhost:9200/_snapshot/my_backup/snapshot_1?pretty"

然后登录到其中一个节点主机,导航到Elasticsearch安装目录,并遵循以下步骤:

1、将具有超级用户内置角色的新用户添加到文件域中。

例如,创建一个名为restore_user的用户:

bin/elasticsearch-users useradd restore_user -p password -r superuser

2、使用前面创建的用户,删除现有的.security-6或.security-7索引。

curl -u restore_user -X DELETE "localhost:9200/.security-*"
在此步骤之后,任何依赖于.security索引的身份验证都将不起作用。这意味着所有使用本机或保留用户进行身份验证的API调用都将失败,依赖本机角色的任何用户也一样。我们在上面步骤中创建的文件域用户将继续工作,因为它没有存储在.security索引中,而是使用内置的超级用户角色。

3、使用相同的用户,从快照中恢复.security索引。

 curl -u restore_user -X POST "localhost:9200/_snapshot/my_backup/snapshot_1/_restore" -H 'Content-Type: application/json' -d'
 {
    "indices": ".security-*",
    "include_global_state": true 
 }
 '
include_global_state: true仅对完全恢复是强制性的。这将恢复全局集群元数据,其中包含完整集群的配置信息。如果将此设置为false,则它只恢复.security索引的内容,如用户名和密码散列、API键、应用程序特权、角色和角色映射定义。

4、如果需要检查和覆盖快照中包含的设置(通过include_global_state标志),可以选择使用GET _cluster/settings API提取的持久性设置。

5、如果您要完成群集的完整时间点还原,则还必须还原配置文件。同样,这也将恢复非安全设置。

这需要备份配置文件的直接文件系统副本,覆盖内容$ES_PATH_CONF并重新启动节点。这需要在每个节点上完成。根据当前群集配置与还原配置之间的差异程度,您可能无法执行滚动重新启动。如果要执行配置目录的完全还原,我们建议将完全群集重新启动作为最安全的选项。或者,您可能希望将配置文件还原到磁盘上的单独位置,并使用文件比较工具查看现有配置与还原配置之间的差异。

二、恢复集群的数据

您可以通过还原API将快照还原到正在运行的群集中 。还原索引时,可以更改已还原索引的名称及其某些设置。在如何使用快照和恢复功能方面有很大的灵活性。

如果您的群集启用了Elasticsearch安全功能,则还原API需要manage群集权限。恢复过程没有任何定制角色。此权限非常宽松,只应授予“管理员”类别中的用户。具体来说,它允许恶意用户将数据泄露到他们选择的位置。自动化工具不应作为具有此权限的用户运行。


评论已关闭