更新跨集群 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 密钥的访问范围、元数据和到期时间。所有者用户信息(例如usernamerealm)也会在每次调用时自动更新。

此 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
          }
        ]
      }
    }
  ]
}

与创建时指定的access范围相对应的角色描述符。在此示例中,它授予logs*索引模式的跨集群搜索权限。

access对应于 API 密钥创建时指定的值。

以下示例更新了上面创建的 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
          }
        ]
      }
    }
  ]
}

角色描述符已更新为更新时指定的access范围。在此示例中,它已更新为授予archive*索引模式的跨集群复制权限。

access对应于 API 密钥更新时指定的值。