使 API 密钥失效 API

编辑

使一个或多个 API 密钥失效。

请求

编辑

DELETE /_security/api_key

先决条件

编辑
  • 要使用此 API,您必须至少具有 manage_securitymanage_api_keymanage_own_api_key 集群权限。manage_security 权限允许删除任何 API 密钥,包括 REST API 密钥和跨集群 API 密钥manage_api_key 权限允许删除任何 REST API 密钥,但不包括跨集群 API 密钥。manage_own_api_key 只允许删除用户拥有的 REST API 密钥。此外,使用 manage_own_api_key 权限时,必须以以下三种格式之一发出失效请求

    1. 设置参数 owner=true
    2. 或者,将 usernamerealm_name 都设置为与用户的身份匹配。
    3. 或者,如果请求是由 API 密钥发出的,即 API 密钥使其自身失效,请在 ids 字段中指定其 ID。

描述

编辑

此 API 使通过 创建 API 密钥授权 API 密钥 API 创建的 API 密钥失效。失效的 API 密钥无法进行身份验证,但至少在 配置的保留期限内,它们仍然可以使用获取 API 密钥信息查询 API 密钥信息 API 查看,直到它们被自动删除。

请求体

编辑

以下参数可以在 DELETE 请求的主体中指定,并且与使 API 密钥失效有关

ids
(可选,字符串数组) API 密钥 ID 的列表。当使用 namerealm_nameusername 中的任何一个时,不能使用此参数
name
(可选,字符串) API 密钥名称。当使用 idsrealm_nameusername 中的任何一个时,不能使用此参数。
realm_name
(可选,字符串) 身份验证领域的名称。当使用 idsname 中的任何一个或当 owner 标志设置为 true 时,不能使用此参数。
username
(可选,字符串) 用户的用户名。当使用 idsname 中的任何一个或当 owner 标志设置为 true 时,不能使用此参数。
owner
(可选,布尔值) 一个布尔标志,可用于查询当前经过身份验证的用户拥有的 API 密钥。默认为 false。当此参数设置为 true 时,不能指定 realm_nameusername 参数,因为它们被假定为当前经过身份验证的参数。

如果 "owner" 为 "false" (默认值),则必须指定 "ids"、"name"、"username" 和 "realm_name" 中的至少一个。

响应体

编辑

成功调用会返回一个 JSON 结构,其中包含已失效的 API 密钥的 ID、已失效的 API 密钥的 ID 以及在使特定 API 密钥失效时可能遇到的错误列表。

示例

编辑

如果您按如下方式创建 API 密钥

resp = client.security.create_api_key(
    name="my-api-key",
)
print(resp)
const response = await client.security.createApiKey({
  name: "my-api-key",
});
console.log(response);
POST /_security/api_key
{
  "name": "my-api-key"
}

成功调用会返回一个 JSON 结构,其中提供了 API 密钥信息。例如

{
  "id": "VuaCfGcBCdbkQm-e5aOx",
  "name": "my-api-key",
  "api_key": "ui2lp2axTNmsyakw9tvNnw",
  "encoded": "VnVhQ2ZHY0JDZGJrUW0tZTVhT3g6dWkybHAyYXhUTm1zeWFrdzl0dk5udw=="
}

以下示例会立即失效由指定的 ids 标识的 API 密钥

resp = client.security.invalidate_api_key(
    ids=[
        "VuaCfGcBCdbkQm-e5aOx"
    ],
)
print(resp)
const response = await client.security.invalidateApiKey({
  ids: ["VuaCfGcBCdbkQm-e5aOx"],
});
console.log(response);
DELETE /_security/api_key
{
  "ids" : [ "VuaCfGcBCdbkQm-e5aOx" ]
}

以下示例会立即失效由指定的 name 标识的 API 密钥

resp = client.security.invalidate_api_key(
    name="my-api-key",
)
print(resp)
const response = await client.security.invalidateApiKey({
  name: "my-api-key",
});
console.log(response);
DELETE /_security/api_key
{
  "name" : "my-api-key"
}

以下示例会立即失效 native1 领域的所有 API 密钥

resp = client.security.invalidate_api_key(
    realm_name="native1",
)
print(resp)
const response = await client.security.invalidateApiKey({
  realm_name: "native1",
});
console.log(response);
DELETE /_security/api_key
{
  "realm_name" : "native1"
}

以下示例会立即失效所有领域中用户 myuser 的所有 API 密钥

resp = client.security.invalidate_api_key(
    username="myuser",
)
print(resp)
const response = await client.security.invalidateApiKey({
  username: "myuser",
});
console.log(response);
DELETE /_security/api_key
{
  "username" : "myuser"
}

以下示例会立即失效由指定的 ids 标识的 API 密钥,如果该 API 密钥由当前经过身份验证的用户拥有

resp = client.security.invalidate_api_key(
    ids=[
        "VuaCfGcBCdbkQm-e5aOx"
    ],
    owner=True,
)
print(resp)
const response = await client.security.invalidateApiKey({
  ids: ["VuaCfGcBCdbkQm-e5aOx"],
  owner: "true",
});
console.log(response);
DELETE /_security/api_key
{
  "ids" : ["VuaCfGcBCdbkQm-e5aOx"],
  "owner" : "true"
}

以下示例会立即失效当前经过身份验证的用户拥有的所有 API 密钥

resp = client.security.invalidate_api_key(
    owner=True,
)
print(resp)
const response = await client.security.invalidateApiKey({
  owner: "true",
});
console.log(response);
DELETE /_security/api_key
{
  "owner" : "true"
}

最后,以下示例会立即失效 native1 领域中用户 myuser 的所有 API 密钥

resp = client.security.invalidate_api_key(
    username="myuser",
    realm_name="native1",
)
print(resp)
const response = await client.security.invalidateApiKey({
  username: "myuser",
  realm_name: "native1",
});
console.log(response);
DELETE /_security/api_key
{
  "username" : "myuser",
  "realm_name" : "native1"
}
{
  "invalidated_api_keys": [ 
    "api-key-id-1"
  ],
  "previously_invalidated_api_keys": [ 
    "api-key-id-2",
    "api-key-id-3"
  ],
  "error_count": 2, 
  "error_details": [ 
    {
      "type": "exception",
      "reason": "error occurred while invalidating api keys",
      "caused_by": {
        "type": "illegal_argument_exception",
        "reason": "invalid api key id"
      }
    },
    {
      "type": "exception",
      "reason": "error occurred while invalidating api keys",
      "caused_by": {
        "type": "illegal_argument_exception",
        "reason": "invalid api key id"
      }
    }
  ]
}

作为此请求的一部分而失效的 API 密钥的 ID。

已失效的 API 密钥的 ID。

使 API 密钥失效时遇到的错误数。

有关这些错误的详细信息。当 error_count 为 0 时,响应中不包含此字段。