更新跨集群 API 密钥 API
编辑更新跨集群 API 密钥 API编辑
更新用于基于 API 密钥的远程集群访问的现有跨集群 API 密钥。
请求编辑
PUT /_security/cross_cluster/api_key/<id>
先决条件编辑
- 要使用此 API,您必须至少具有
manage_security
集群权限。用户只能更新他们创建的 API 密钥。要更新其他用户的 API 密钥,请使用run_as
功能代表其他用户提交请求。
无法使用 API 密钥作为此 API 的身份验证凭据。要更新 API 密钥,需要所有者用户的凭据。
描述编辑
使用此 API 更新由创建跨集群 API 密钥 API创建的跨集群 API 密钥。无法更新已过期的 API 密钥,或已通过使 API 密钥失效失效的 API 密钥。
此 API 支持更新 API 密钥的访问范围、元数据和到期时间。所有者用户信息(例如username
、realm
)也会在每次调用时自动更新。
此 API 无法更新REST API 密钥,应通过更新 API 密钥或批量更新 API 密钥API 进行更新。
路径参数编辑
-
id
- (必填,字符串)要更新的 API 密钥的 ID。
请求正文编辑
您可以在请求正文中指定以下参数。这些参数是可选的。但它们不能全部缺失。
-
访问
- (可选,对象)要授予此 API 密钥的访问权限。访问权限由跨集群搜索和跨集群复制的权限组成。必须至少指定其中之一。指定后,新的访问权限分配将完全替换先前分配的访问权限。有关字段结构,请参阅创建跨集群 API 密钥 API 的相同参数。
-
元数据
- (可选,对象)要与 API 密钥关联的任意元数据。它支持嵌套数据结构。在
metadata
对象中,以_
开头的顶级键保留供系统使用。指定后,这将完全替换先前与 API 密钥关联的元数据。 -
到期时间
- (可选,字符串)API 密钥的到期时间。默认情况下,API 密钥永不过期。可以省略以保持不变。
响应正文编辑
-
已更新
- (布尔值)如果为
true
,则 API 密钥已更新。如果为false
,则 API 密钥未更改,因为未检测到更改。
示例编辑
如果您创建跨集群 API 密钥,如下所示
POST /_security/cross_cluster/api_key { "name": "my-cross-cluster-api-key", "access": { "search": [ { "names": ["logs*"] } ] }, "metadata": { "application": "search" } }
成功调用将返回一个 JSON 结构,其中提供 API 密钥信息。例如
{ "id": "VuaCfGcBCdbkQm-e5aOx", "name": "my-cross-cluster-api-key", "api_key": "ui2lp2axTNmsyakw9tvNnw", "encoded": "VnVhQ2ZHY0JDZGJrUW0tZTVhT3g6dWkybHAyYXhUTm1zeWFrdzl0dk5udw==" }
可以使用获取 API 密钥 API检查 API 密钥的信息,包括其确切的角色描述符
GET /_security/api_key?id=VuaCfGcBCdbkQm-e5aOx
成功调用将返回一个 JSON 结构,其中包含 API 密钥的信息
{ "api_keys": [ { "id": "VuaCfGcBCdbkQm-e5aOx", "name": "my-cross-cluster-api-key", "type": "cross_cluster", "creation": 1548550550158, "expiration": null, "invalidated": false, "username": "myuser", "realm": "native1", "metadata": { "application": "search" }, "role_descriptors": { "cross_cluster": { "cluster": [ "cross_cluster_search" ], "indices": [ { "names": [ "logs*" ], "privileges": [ "read", "read_cross_cluster", "view_index_metadata" ], "allow_restricted_indices": false } ], "applications": [ ], "run_as": [ ], "metadata": { }, "transient_metadata": { "enabled": true } } }, "access": { "search": [ { "names": [ "logs*" ], "allow_restricted_indices": false } ] } } ] }
以下示例更新了上面创建的 API 密钥,为其分配了新的访问范围和元数据
PUT /_security/cross_cluster/api_key/VuaCfGcBCdbkQm-e5aOx { "access": { "replication": [ { "names": ["archive"] } ] }, "metadata": { "application": "replication" } }
成功调用将返回一个 JSON 结构,指示 API 密钥已更新
{ "updated": true }
可以使用获取 API 密钥 API再次检查更新后的 API 密钥权限,它将是
{ "api_keys": [ { "id": "VuaCfGcBCdbkQm-e5aOx", "name": "my-cross-cluster-api-key", "type": "cross_cluster", "creation": 1548550550158, "expiration": null, "invalidated": false, "username": "myuser", "realm": "native1", "metadata": { "application": "replication" }, "role_descriptors": { "cross_cluster": { "cluster": [ "cross_cluster_replication" ], "indices": [ { "names": [ "archive*" ], "privileges": [ "cross_cluster_replication", "cross_cluster_replication_internal" ], "allow_restricted_indices": false } ], "applications": [ ], "run_as": [ ], "metadata": { }, "transient_metadata": { "enabled": true } } }, "access": { "replication": [ { "names": [ "archive*" ], "allow_restricted_indices": false } ] } } ] }