--- title: "重新加载安全设置" date: 2026-02-28 lastmod: 2026-02-28 description: "从密钥库文件重新加载安全设置" tags: ["集群", "节点", "安全", "配置"] summary: "从密钥库(keystore)文件重新加载安全设置到集群节点,无需重启节点即可动态更新敏感配置(如密码、加密密钥等)。 API 格式 # POST /_nodes/reload_secure_settings POST /_nodes/{node_id}/reload_secure_settings API 作用 # 该 API 允许管理员动态重新加载存储在密钥库文件中的敏感配置设置,而无需重启节点。密钥库中通常包含: 密码 加密密钥 TLS 证书和密钥 其他敏感配置 API 参数 # 路径参数 # 参数 类型 是否必填 默认值 描述 {node_id} String 否 所有节点 逗号分隔的节点 ID 列表。如未指定,则在集群所有节点上执行操作 查询参数 # 参数 类型 是否必填 默认值 描述 timeout Time 否 集群默认超时 操作的显式超时时间 请求体参数 # 请求体是可选的,包含以下字段:" --- 从密钥库(keystore)文件重新加载安全设置到集群节点,无需重启节点即可动态更新敏感配置(如密码、加密密钥等)。 ## API 格式 ``` POST /_nodes/reload_secure_settings POST /_nodes/{node_id}/reload_secure_settings ``` ## API 作用 该 API 允许管理员动态重新加载存储在密钥库文件中的敏感配置设置,而无需重启节点。密钥库中通常包含: - 密码 - 加密密钥 - TLS 证书和密钥 - 其他敏感配置 ## API 参数 ### 路径参数 | 参数 | 类型 | 是否必填 | 默认值 | 描述 | |------|------|----------|--------|------| | `{node_id}` | String | 否 | 所有节点 | 逗号分隔的节点 ID 列表。如未指定,则在集群所有节点上执行操作 | ### 查询参数 | 参数 | 类型 | 是否必填 | 默认值 | 描述 | |------|------|----------|--------|------| | `timeout` | Time | 否 | 集群默认超时 | 操作的显式超时时间 | ### 请求体参数 请求体是可选的,包含以下字段: ```json { "secure_settings_password": "keystore_password" } ``` | 参数 | 类型 | 是否必填 | 默认值 | 描述 | |------|------|----------|--------|------| | `secure_settings_password` | String | 否 | 空字符串 | 用于解密和重新加载密钥库内容的密码。对于无密码保护的密钥库,使用默认空字符串 | ## 响应示例 ### 成功响应 ```json { "cluster_name": "my_cluster", "nodes": { "node_id_1": { "name": "node_1" }, "node_id_2": { "name": "node_2" } } } ``` ### 带错误的响应 ```json { "cluster_name": "my_cluster", "nodes": { "node_id_1": { "name": "node_1" }, "node_id_2": { "name": "node_2", "reload_exception": { "type": "security_exception", "reason": "Provided keystore password was incorrect", "stack_trace": "..." } } } } ``` ## 响应字段说明 | 字段 | 类型 | 描述 | |------|------|------| | `cluster_name` | String | 集群名称 | | `nodes` | Object | 包含每个节点结果的对象 | | `nodes.{node_id}.name` | String | 节点名称 | | `nodes.{node_id}.reload_exception` | Object/null | 如果该节点重新加载失败,包含异常详情;成功则为 null | | `reload_exception.type` | String | 异常类型 | | `reload_exception.reason` | String | 失败原因 | | `reload_exception.stack_trace` | String | 异常堆栈跟踪 | ## 安全约束 1. **TLS 要求**:如果提供了密码且请求不是节点本地操作(即针对多个节点),则必须为传输层启用 TLS 2. **无 TLS 限制**:在没有 TLS 的情况下,该 API 只能与 `_local` 过滤器一起使用,在每个节点上更新安全设置 ## 使用场景 1. **更新密钥库密码**:无需重启节点即可更新密钥库密码 2. **重新加载 TLS 证书**:更新 TLS 证书和密钥 3. **更新敏感配置**:动态更新存储在密钥库中的其他敏感配置 4. **密钥库恢复**:通过提供正确的密码从密钥库损坏中恢复 ## 功能特性 1. **密钥库重新加载**:从配置目录读取密钥库文件并使用提供的密码解密 2. **插件重新加载**:将新设置广播到集群中所有可重新加载的插件 3. **安全处理**:密码在使用后会从内存中安全清除 4. **原子操作**:要么所有指定节点都成功重新加载,要么报告每个节点的失败情况 ## 注意事项 1. 确保密钥库文件在配置目录中存在 2. 提供的密码必须与密钥库的密码匹配 3. 在生产环境中使用时,建议启用 TLS 以保护密码传输 4. 重新加载操作可能影响使用这些设置的服务,请谨慎操作