修补配置 API
1.0 版引入
补丁配置 API 允许您更新安全插件配置的特定部分,而无需替换整个配置文档。
此操作可能会轻易破坏您现有的安全配置。我们强烈建议改用 securityadmin.sh
脚本,它包含验证和保护措施,以防止错误配置。
端点
PATCH /_plugins/_security/api/securityconfig
请求正文字段
请求体是必需的。它是一个JSON 对象数组(NDJSON)。每个对象都有以下字段。
属性 | 必需 | 数据类型 | 描述 |
---|---|---|---|
op | 必需 | 字符串 | 要执行的操作。有效值为 add 、remove 、replace 、move 、copy 和 test 。 |
路径 | 必需 | 字符串 | JSON 指针路径,指向配置中要修改的位置。 |
value | 可选 | 对象 | 用于操作的值。对于 add 、replace 和 test 操作是必需的。 |
请求示例
以下示例添加了一个新的身份验证域并修改了现有设置
PATCH /_plugins/_security/api/securityconfig
[
{
"op": "add",
"path": "/config/dynamic/authc/saml_auth_domain",
"value": {
"http_enabled": true,
"transport_enabled": false,
"order": 1,
"http_authenticator": {
"type": "saml",
"challenge": false,
"config": {
"idp": {
"metadata_url": "https://idp.example.com/saml/metadata"
},
"sp": {
"entity_id": "opensearch"
}
}
},
"authentication_backend": {
"type": "noop",
"config": {}
}
}
},
{
"op": "replace",
"path": "/config/dynamic/multi_rolespan_enabled",
"value": true
},
{
"op": "remove",
"path": "/config/dynamic/authc/legacy_auth_domain"
}
]
示例响应
{
"status": "OK",
"message": "Configuration updated."
}
响应正文字段
响应正文是一个包含以下字段的 JSON 对象。
属性 | 数据类型 | 描述 |
---|---|---|
status | 字符串 | 请求的状态。成功请求返回“OK”。 |
message | 字符串 | 描述操作结果的消息。 |
JSON 补丁操作
API 支持以下 JSON 补丁操作
- add:向对象添加值或将其插入到数组中。对于现有属性,值将被替换。
- remove:从对象或数组中移除值。
- replace:替换值。
- move:将值从一个位置移动到另一个位置。
- copy:将值从一个位置复制到另一个位置。
- test:测试目标位置的值是否等于指定值。
使用注意事项
补丁配置 API 提供了比更新配置 API 更精细的配置更新控制,但仍存在潜在风险
-
路径格式:路径以
/config
开头,后跟指向要修改的特定配置元素的 JSON 指针路径。 -
验证:对打补丁的配置执行的验证有限,如果配置错误,可能会导致安全漏洞。
-
备份配置:在进行更改之前,请务必备份您当前的安全配置。
-
测试:在将配置更改部署到生产环境之前,请在开发环境中进行测试。
启用此 API
默认情况下,出于安全原因,此 API 已禁用。要启用它,请执行以下步骤
-
使用以下内容更新
opensearch.yml
文件plugins.security.unsupported.restapi.allow_securityconfig_modification: true
-
使用以下内容更新安全插件的
config.yml
文件plugins.security.restapi.endpoints_disabled.securityconfig: "false"
-
重启您的 OpenSearch 集群。
由于潜在的安全隐患,通常不建议在生产环境中启用此 API。