获取 API 密钥信息 API编辑

检索一个或多个 API 密钥的信息。

请求编辑

GET /_security/api_key

先决条件编辑

  • 要使用此 API,您至少需要拥有 manage_own_api_keyread_security 集群权限。

    • 如果您只有 manage_own_api_key 权限,此 API 仅返回您拥有的 API 密钥。

      使用具有 manage_own_api_key 权限的 API 密钥进行身份验证,不允许检索已认证用户的自身密钥。相反,请使用基本凭据对用户进行身份验证。

    • 如果您拥有 read_securitymanage_api_key 或更高权限(包括 manage_security),此 API 将返回所有 API 密钥,无论所有权如何。

描述编辑

可以使用此 API 检索通过 创建 API 密钥 创建的 API 密钥的信息。

路径参数编辑

以下参数可以在 GET 请求的查询参数中指定,并与检索 API 密钥相关。

id
(可选,字符串) API 密钥 ID。此参数不能与 namerealm_nameusername 同时使用。
name
(可选,字符串) API 密钥名称。此参数不能与 idrealm_nameusername 同时使用。它支持使用通配符进行前缀搜索。
realm_name
(可选,字符串) 身份验证域的名称。此参数不能与 idname 同时使用,也不能在 owner 标志设置为 true 时使用。
username
(可选,字符串) 用户的用户名。此参数不能与 idname 同时使用,也不能在 owner 标志设置为 true 时使用。
owner
(可选,布尔值) 一个布尔值标志,可用于查询当前已认证用户拥有的 API 密钥。默认为 false。当此参数设置为 true 时,不能指定 realm_nameusername 参数,因为它们被假定为当前已认证的。
with_limited_by
(可选,布尔值) 一个布尔值标志,用于返回与 API 密钥关联的拥有者用户角色描述符的快照。API 密钥的实际权限是其 分配的角色描述符 和拥有者用户角色描述符(实际上受其限制)的交集。API 密钥必须具有 manage_api_key 或更高权限才能检索任何 API 密钥(包括自身)的受限角色描述符。
with_profile_uid
(可选,布尔值) 确定是否还检索 用户配置文件 uid,用于 API 密钥拥有者用户。如果存在,配置文件 uid 将在每个 API 密钥的 profile_uid 响应字段下返回。默认为 false
active_only
(可选,布尔值) 一个布尔值标志,可用于查询当前处于活动状态的 API 密钥。如果 API 密钥既未失效,也未在查询时过期,则它被视为活动状态。您可以将此参数与其他参数(如 ownername)一起指定。如果 active_onlyfalse,则响应将包含活动密钥和非活动密钥(已过期或已失效)。默认为 false

当未指定任何参数 "id"、"name"、"username" 和 "realm_name",并且 "owner" 设置为 false 时,如果用户已授权,则将检索所有 API 密钥。如果用户未被授权检索其他用户的 API 密钥,则将返回错误。

示例编辑

如果您创建 API 密钥如下

POST /_security/api_key
{
  "name": "my-api-key",
  "role_descriptors": {},
  "metadata": {
    "application": "myapp"
  }
}

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

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

您可以使用以下示例通过 ID 检索 API 密钥

GET /_security/api_key?id=VuaCfGcBCdbkQm-e5aOx&with_limited_by=true

成功调用将返回一个 JSON 结构,其中包含 API 密钥的信息

{
  "api_keys": [ 
    {
      "id": "VuaCfGcBCdbkQm-e5aOx", 
      "name": "my-api-key", 
      "creation": 1548550550158, 
      "expiration": 1548551550158, 
      "invalidated": false, 
      "username": "myuser", 
      "realm": "native1", 
      "realm_type": "native",
      "metadata": { 
        "application": "myapp"
      },
      "role_descriptors": { }, 
      "limited_by": [  
        {
          "role-power-user": {
            "cluster": [
              "monitor"
            ],
            "indices": [
              {
                "names": [
                  "*"
                ],
                "privileges": [
                  "read"
                ],
                "allow_restricted_indices": false
              }
            ],
            "applications": [ ],
            "run_as": [ ],
            "metadata": { },
            "transient_metadata": {
              "enabled": true
            }
          }
        }
      ]
    }
  ]
}

此请求检索到的 API 密钥列表。

API 密钥的 ID

API 密钥的名称

API 密钥的创建时间(以毫秒为单位)

API 密钥的可选过期时间(以毫秒为单位)

API 密钥的失效状态。如果密钥已失效,则其值为 true,并且有一个额外的字段包含失效时间(以毫秒为单位)。否则,其值为 false

为其创建此 API 密钥的委托人

为其创建此 API 密钥的委托人的域名称

API 密钥的元数据

创建 或上次 更新 时分配给此 API 密钥的角色描述符。空角色描述符表示 API 密钥继承拥有者用户的权限。

与 API 密钥关联的拥有者用户的权限。它是 创建 和后续 更新 时捕获的某个时间点的快照。API 密钥的有效权限是其分配的权限和拥有者用户权限的交集。

您可以使用以下示例通过名称检索 API 密钥

GET /_security/api_key?name=my-api-key

API 密钥名称支持使用通配符进行前缀搜索

GET /_security/api_key?name=my-*

以下示例检索 native1 域的所有 API 密钥

GET /_security/api_key?realm_name=native1

以下示例检索所有域中用户 myuser 的所有 API 密钥

GET /_security/api_key?username=myuser

以下示例检索当前已认证用户拥有的所有 API 密钥

GET /_security/api_key?owner=true

以下示例检索所有 API 密钥(如果用户有权这样做)

GET /_security/api_key

以下示例检索所有活动 API 密钥(如果用户有权这样做)

GET /_security/api_key?active_only=true

以下操作创建 API 密钥

POST /_security/api_key
{
  "name": "my-api-key-1",
  "metadata": {
    "application": "my-application"
  }
}

以下示例检索由指定 id 标识的 API 密钥(如果它由当前已认证用户拥有)

GET /_security/api_key?id=VuaCfGcBCdbkQm-e5aOx&owner=true

最后,以下示例立即检索 native1 域中用户 myuser 的所有 API 密钥

GET /_security/api_key?username=myuser&realm_name=native1

成功调用将返回一个 JSON 结构,其中包含检索到的一个或多个 API 密钥的信息。

{
  "api_keys": [
    {
      "id": "0GF5GXsBCXxz2eDxWwFN",
      "name": "hadoop_myuser_key",
      "creation": 1548550550158,
      "expiration": 1548551550158,
      "invalidated": false,
      "username": "myuser",
      "realm": "native1",
      "realm_type": "native",
      "metadata": {
        "application": "myapp"
      },
      "role_descriptors": {
        "role-a": {
          "cluster": [
            "monitor"
          ],
          "indices": [
            {
              "names": [
                "index-a"
              ],
              "privileges": [
                "read"
              ],
              "allow_restricted_indices": false
            }
          ],
          "applications": [ ],
          "run_as": [ ],
          "metadata": { },
          "transient_metadata": {
            "enabled": true
          }
        }
      }
    },
    {
      "id": "6wHJmcQpReKBa42EHV5SBw",
      "name": "api-key-name-2",
      "creation": 1548550550158,
      "invalidated": false,
      "username": "user-y",
      "realm": "realm-2",
      "metadata": {},
      "role_descriptors": { }
    }
  ]
}